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 br.com.centralit.citajax.html.DocumentHTML; import br.com.centralit.citcorpore.bean.AutoCompleteDTO; import br.com.centralit.citcorpore.bean.CidadesDTO; import br.com.centralit.citcorpore.negocio.CidadesService; import br.com.citframework.service.ServiceLocator; public class AutoCompleteCidade extends AbstractAutoComplete { @Override public Class<CidadesDTO> getBeanClass() { return CidadesDTO.class; } @Override public void load(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception { // Corrige o enconding do par�metro desejado. final String consulta = new String(request.getParameter("query").getBytes("ISO-8859-1"), "UTF-8"); final CidadesService cidadesService = (CidadesService) ServiceLocator.getInstance().getService(CidadesService.class, null); Collection<CidadesDTO> cidades = new ArrayList<>(); final String idCidadeS = request.getParameter("idEstado"); Integer idEstado = null; if (idCidadeS != null && !idCidadeS.isEmpty()) { idEstado = Integer.parseInt(idCidadeS); cidades = cidadesService.findByIdEstadoAndNomeCidade(idEstado, consulta); } else { cidades = cidadesService.findByNome(consulta); } final AutoCompleteDTO autoCompleteDTO = new AutoCompleteDTO(); final List<String> lst = new ArrayList<>(); final List<Integer> lstVal = new ArrayList<>(); if (cidades != null && !cidades.isEmpty()) { for (final CidadesDTO cidade : cidades) { if (idCidadeS != null && !idCidadeS.isEmpty()) { lst.add(cidade.getNomeCidade()); } else { lst.add(cidade.getNomeCidade() + " - " + cidade.getNomeUf()); } lstVal.add(cidade.getIdCidade()); } } autoCompleteDTO.setQuery(consulta); autoCompleteDTO.setSuggestions(lst); autoCompleteDTO.setData(lstVal); final String json = getGSON().toJson(autoCompleteDTO); request.setAttribute("json_response", json); } }