package br.com.centralit.citcorpore.ajaxForms;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringUtils;
import br.com.centralit.citajax.html.DocumentHTML;
import br.com.centralit.citcorpore.bean.AutoCompleteDTO;
import br.com.centralit.citcorpore.bean.EmpregadoDTO;
import br.com.centralit.citcorpore.bean.GrupoDTO;
import br.com.centralit.citcorpore.negocio.EmpregadoService;
import br.com.citframework.service.ServiceLocator;
/**
* AutoComplete para {@link EmpregadoDTO} que considera na consulta o {@link GrupoDTO}
*
* @author bruno.ribeiro - <a href="mailto:bruno.ribeiro@centrait.com.br">bruno.ribeiro@centrait.com.br</a>
* @since 31/10/2014
*
*/
public class AutoCompleteEmpregadoByGrupo extends AbstractAutoComplete {
@Override
public Class<EmpregadoDTO> getBeanClass() {
return EmpregadoDTO.class;
}
@Override
public void load(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception {
final String nomeEmpregado = request.getParameter("query");
final String idGrupoStr = request.getParameter("idGrupo");
final Integer idGrupo = StringUtils.isNotBlank(idGrupoStr) ? Integer.parseInt(idGrupoStr.trim()) : 0;
final Collection<EmpregadoDTO> empregados = getService().findByNomeEmpregadoAndGrupo(nomeEmpregado, idGrupo);
final List<Integer> listIDs = new ArrayList<>();
final List<String> listNames = new ArrayList<>();
for (final EmpregadoDTO empregado : empregados) {
listIDs.add(empregado.getIdEmpregado());
listNames.add(empregado.getNome());
}
final AutoCompleteDTO autoCompleteDTO = new AutoCompleteDTO();
autoCompleteDTO.setQuery(nomeEmpregado);
autoCompleteDTO.setSuggestions(listNames);
autoCompleteDTO.setData(listIDs);
request.setAttribute("json_response", getGSON().toJson(autoCompleteDTO));
}
private static EmpregadoService service;
private EmpregadoService getService() throws Exception {
if (service == null) {
service = (EmpregadoService) ServiceLocator.getInstance().getService(EmpregadoService.class, null);
}
return service;
}
}