Portlet Lista de Aniversariantes – Liferay

Para realizar a criação do portlet “Lista de Aniversários” primeiramente devemos ter o ambiente de criação de plugins SDK do liferay devidamente configurado.

Em ambiente Windows, podemos criar um portlet a partir de um exemplo, para tanto execute o programa “create.bat” localizado na pasta {diretorioSDK}/portlet/ , esse programa irá criar a estrutura básica de um portlet de Liferay.

Para começar a criação do nosso portlet, primeiramente precisamos editar o arquivo view.jsp que é a primeira classe a ser carregada quando o portlet é executado.

Nele iremos realizar todas as nossas modificações.

O portlet funciona basicamente da seguinte maneira:

> O usuário deve pertencer a organização pai para que possa ver a lista de aniversariantes

> A lista de aniversariantes deve conter apenas usuários que pertençam a comunidade pai.

> A listagem precisa ser ordenada por dia

O Algoritmo:

A seqüência de atividades que devemos fazer para implementar essa listagem é:

1) Recuperar o ID do usuário atual:

Para que possamos listar apenas para usuários pertencentes a comunidade pai, por exemplo.

2) Recuperar o ID das organizações a qual o usuário pertencem

Fazendo dessa maneira, se o usuário pertencer a organização pai, poderemos encontrá-la.

3) Recuperar o ID da organização pai

É a partir desse ID que recuperaremos todos os usuários que precisaremos para a listagem.

4) Recuperar os usuários pertencentes a Organização:

Recuperamos os usuários e já testamos se eles fazem aniversário no mês atual ou no próximo. Armazenamos em duas listas, uma com os aniversariantes do mês atual e outra com os aniversariantes do mês seguinte.

5) Ordenação da lista de usuários por dia do mês

6) Realizamos a listagem:

De ambos os meses, intercalando cores escuras e claras entre as linhas, o que facilita a leitura.

Trechos interessantes do Código:

Recuperar o userID pela classe renderRequest:



String remoteUserId = renderRequest.getRemoteUser();
User userId = UserServiceUtil.getUserById(Long.parseLong(remoteUserId));

Recuperar a lista de organizações a partir do id do usuário

organizations = OrganizationLocalServiceUtil.getUserOrganizations(userId.getUserId());

Recuperar a organização pai das organizações que o usuário participa:

for (int> i = 0; i < organizations.size(); i++) {
if (organizations != nul && organizations.size() != 0) {
Organization organization = (Organization) organizations.get(i);
if (organization.isRoot()){
orgID = organization.getOrganizationId()
}
}
}

Ordenar a lista de usuários pelo dia de aniversário

Collections.sort(mesAtual, new Comparator() {
public int compare(Object o1, Object o2) {
int ret = 0;
User d1 = (User) o1;
User d2 = (User) o2;
if(d1.getBirthday().getDate() < d2.getBirthday().getDate()) {
ret = -1;
}
else if (d1.getBirthday().getDate() > d2.getBirthday().getDate()) {
ret = 1;
}
else {
ret = d1.getFirstName().compareTo(d2.getFirstName());
}

return ret;
}
});

Recuperar um atributo personalizado do usuário:

str = (String[])mesSeguinte.get(i).getExpandoBridge().getAttribute("NomeAtributoPersonalizado");

É importante lembrar que por padrão esse atributo personalizado não fica habilitado para ser exibido.
Para alterar é necessário acessar a opção de permissões dos atributos personalizados presente na aba Usuários do Painel de Controle. Setar como visualização para os usuários.

Deixe um comentário

Observação: O seu comentário pode demorar algumas horas para aparecer.