/**
* Copyright (c) 2009-2014 Câmara dos Deputados. Todos os direitos reservados.
*
* e-Democracia é um software livre; você pode redistribuí-lo e/ou modificá-lo dentro
* dos termos da Licença Pública Geral Menor GNU como publicada pela Fundação do
* Software Livre (FSF); na versão 2.1 da Licença, ou (na sua opinião) qualquer versão.
*
* Este programa é distribuído na esperança de que possa ser útil, mas SEM NENHUMA GARANTIA;
* sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou APLICAÇÃO EM PARTICULAR.
* Veja a Licença Pública Geral Menor GNU para maiores detalhes.
*/
package br.gov.camara.edemocracia.portlets.chat.portlet.beans.admin.editroom;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ActionEvent;
import com.liferay.faces.portal.context.LiferayFacesContext;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.model.User;
import com.liferay.portal.service.UserLocalServiceUtil;
/**
* Bean para autocomplete de nomes de usuário na comunidade atual
*
* @author p_7339
*
*/
@ManagedBean(name = "autocompleteUserBean")
@ViewScoped
public class AutocompleteUserBean implements Serializable {
private static final long serialVersionUID = -715701134357137292L;
private List<String> selectedUsers;
private long currentGroupId;
private String convidado;
private String filter;
/**
* Recupera os usuários do grupo atual
*/
private synchronized void fetchUsers() {
currentGroupId = LiferayFacesContext.getInstance().getScopeGroupId();
if (this.filter != null && this.filter.length() >= 1) {
List<User> users;
try {
users = UserLocalServiceUtil.getGroupUsers(currentGroupId);
int total = 0;
ArrayList<String> result = new ArrayList<String>();
for (User user : users) {
if (user.getFullName().startsWith(filter)) {
result.add(user.getFullName());
total++;
if (total >= 10)
break;
}
}
selectedUsers = Collections.unmodifiableList(result);
// Se o usuário selecionado for o que tem o nome digitado, então
// esconde a lista
if (selectedUsers.size() == 1 && selectedUsers.get(0).equals(this.filter))
selectedUsers = Collections.emptyList();
} catch (SystemException e) {
selectedUsers = Collections.emptyList();
}
} else {
selectedUsers = Collections.emptyList();
}
}
/**
* Recupera a nova lista de usuários
*
* @param event
*/
public List<String> complete(String query) {
this.filter = query;
fetchUsers();
if (selectedUsers == null)
return Collections.emptyList();
return selectedUsers;
}
/**
* Usuário submeteu o formulário. Limpa os valores
*
* @param event
*/
public void submitName(ActionEvent event) {
filter = null;
selectedUsers = null;
}
public void setConvidado(String convidado) {
this.convidado = convidado;
}
public String getConvidado() {
return convidado;
}
}