package br.com.centralit.citcorpore.ajaxForms;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import br.com.centralit.citajax.html.AjaxFormAction;
import br.com.centralit.citajax.html.DocumentHTML;
import br.com.centralit.citcorpore.bean.BICategoriasDTO;
import br.com.centralit.citcorpore.bean.BIConsultaDTO;
import br.com.centralit.citcorpore.bean.DataManagerObjectsDTO;
import br.com.centralit.citcorpore.negocio.BICategoriasService;
import br.com.centralit.citcorpore.negocio.BIConsultaService;
import br.com.citframework.service.ServiceLocator;
import br.com.citframework.util.UtilI18N;
import br.com.citframework.util.UtilStrings;
public class ListagemConsultasObjects extends AjaxFormAction {
@Override
public void load(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception {
final HashMap hashValores = this.getFormFields(request);
String idStr = (String) hashValores.get("ID");
int id = -1;
try {
if (idStr != null && !idStr.equalsIgnoreCase("-1")) {
idStr = UtilStrings.apenasNumeros(idStr);
}
id = Integer.parseInt(idStr);
} catch (final Exception e) {
// e.printStackTrace();
}
final BICategoriasService biCategoriasService = (BICategoriasService) ServiceLocator.getInstance().getService(BICategoriasService.class, null);
final BIConsultaService biConsultaService = (BIConsultaService) ServiceLocator.getInstance().getService(BIConsultaService.class, null);
String strCab = "";
if (id == -1) {
strCab += "[{";
strCab += "\"id\":-1,";
strCab += "\"text\":\"" + UtilI18N.internacionaliza(request, "listagemConsultas.consultas") + "\",";
strCab += "\"children\":[";
final Collection colObjsNeg = biCategoriasService.findSemPai();
if (colObjsNeg != null) {
boolean bPrim = true;
for (final Iterator it = colObjsNeg.iterator(); it.hasNext();) {
final BICategoriasDTO biCategoriasDTO = (BICategoriasDTO) it.next();
if (!bPrim) {
strCab += ",";
}
strCab += "{";
strCab += "\"id\":\"G" + biCategoriasDTO.getIdCategoria() + "\",";
strCab += "\"text\":\"" + biCategoriasDTO.getNomeCategoria() + "\",";
strCab += "\"state\":\"closed\"";
strCab += "}";
bPrim = false;
}
}
strCab += "]";
strCab += "}]";
} else {
Collection col = biCategoriasService.findByIdCategoriaPai(id);
Collection col2 = biConsultaService.findByIdCategoria(id);
if (col != null || col2 != null) {
if (col == null) {
col = new ArrayList();
}
if (col2 == null) {
col2 = new ArrayList();
}
strCab += "[";
boolean bPrim = true;
for (final Iterator it = col.iterator(); it.hasNext();) {
if (!bPrim) {
strCab += ",";
}
final BICategoriasDTO biCategoriasDTO = (BICategoriasDTO) it.next();
// String strTam = "";
strCab += "{";
strCab += "\"id\":\"G" + biCategoriasDTO.getIdCategoria() + "\",";
strCab += "\"text\":\"" + biCategoriasDTO.getNomeCategoria() + "\"";
strCab += "}";
bPrim = false;
}
bPrim = true;
for (final Iterator it = col2.iterator(); it.hasNext();) {
if (!bPrim) {
strCab += ",";
}
final BIConsultaDTO biConsultaDTO = (BIConsultaDTO) it.next();
// String strTam = "";
strCab += "{";
strCab += "\"id\":\"" + biConsultaDTO.getTipoConsulta() + biConsultaDTO.getIdConsulta() + "\",";
strCab += "\"text\":\"" + biConsultaDTO.getNomeConsulta() + "\"";
strCab += "}";
bPrim = false;
}
strCab += "]";
}
}
request.setAttribute("json_retorno", strCab);
}
@Override
public Class getBeanClass() {
return DataManagerObjectsDTO.class;
}
private HashMap getFormFields(final HttpServletRequest req) {
try {
req.setCharacterEncoding("ISO-8859-1");
} catch (final UnsupportedEncodingException e) {
System.out.println("PROBLEMA COM CODIFICACAO DE CARACTERES!!! [AjaxProcessEvent.getFormFields()]");
e.printStackTrace();
}
final HashMap formFields = new HashMap();
final Enumeration en = req.getParameterNames();
String[] strValores;
while (en.hasMoreElements()) {
final String nomeCampo = (String) en.nextElement();
strValores = req.getParameterValues(nomeCampo);
if (strValores.length == 0) {
formFields.put(nomeCampo.toUpperCase(), UtilStrings.decodeCaracteresEspeciais(req.getParameter(nomeCampo)));
} else {
if (strValores.length == 1) {
formFields.put(nomeCampo.toUpperCase(), UtilStrings.decodeCaracteresEspeciais(strValores[0]));
} else {
formFields.put(nomeCampo.toUpperCase(), strValores);
}
}
}
return formFields;
}
}