package br.com.centralit.citcorpore.ajaxForms;
import java.io.UnsupportedEncodingException;
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.DataManagerObjectsDTO;
import br.com.centralit.citcorpore.metainfo.bean.CamposObjetoNegocioDTO;
import br.com.centralit.citcorpore.metainfo.bean.ObjetoNegocioDTO;
import br.com.centralit.citcorpore.metainfo.negocio.CamposObjetoNegocioService;
import br.com.centralit.citcorpore.metainfo.negocio.ObjetoNegocioService;
import br.com.citframework.service.ServiceLocator;
import br.com.citframework.util.UtilI18N;
import br.com.citframework.util.UtilStrings;
@SuppressWarnings({ "rawtypes", "unchecked" })
public class DataManagerObjects extends AjaxFormAction {
private static boolean DEBUG = true;
@Override
public void load(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
HashMap hashValores = getFormFields(request);
if (DEBUG) {
debugValuesFromRequest(hashValores);
}
String idStr = (String) hashValores.get("ID");
int id = -1;
try {
if(idStr != null && !idStr.isEmpty()){
id = Integer.parseInt(idStr);
}
} catch (Exception e) {
e.printStackTrace();
}
ObjetoNegocioService objetoNegocioService = (ObjetoNegocioService) ServiceLocator.getInstance().getService(ObjetoNegocioService.class, null);
CamposObjetoNegocioService camposObjetoNegocioService = (CamposObjetoNegocioService) ServiceLocator.getInstance().getService(CamposObjetoNegocioService.class, null);
String strCab = "";
if (id == -1) {
strCab += "[{";
strCab += "\"id\":-1,";
strCab += "\"text\":\"" + UtilI18N.internacionaliza(request, "dataManager.objetosNegocio") + "\",";
strCab += "\"children\":[";
Collection colObjsNeg = objetoNegocioService.listAtivos();
if (colObjsNeg != null) {
boolean bPrim = true;
for (Iterator it = colObjsNeg.iterator(); it.hasNext();) {
ObjetoNegocioDTO objetoNegocioDTO = (ObjetoNegocioDTO) it.next();
if (!bPrim) {
strCab += ",";
}
strCab += "{";
strCab += "\"id\":" + objetoNegocioDTO.getIdObjetoNegocio() + ",";
strCab += "\"text\":\"" + objetoNegocioDTO.getNomeObjetoNegocio() + "\",";
strCab += "\"state\":\"closed\"";
strCab += "}";
bPrim = false;
}
}
strCab += "]";
strCab += "}]";
} else {
Collection col = camposObjetoNegocioService.findByIdObjetoNegocio(id);
if (col != null) {
strCab += "[";
boolean bPrim = true;
for (Iterator it = col.iterator(); it.hasNext();) {
if (!bPrim) {
strCab += ",";
}
CamposObjetoNegocioDTO camposObjetoNegocioDto = (CamposObjetoNegocioDTO) it.next();
// String strTam = "";
String chave = "";
if (camposObjetoNegocioDto.getPk() != null && camposObjetoNegocioDto.getPk().equalsIgnoreCase("S")) {
chave = "[*]";
}
strCab += "{";
strCab += "\"id\":" + camposObjetoNegocioDto.getIdCamposObjetoNegocio() + ",";
strCab += "\"text\":\"" + chave + (camposObjetoNegocioDto.getDescricao() == null ? camposObjetoNegocioDto.getNome() : camposObjetoNegocioDto.getDescricao()) + " ("
+ camposObjetoNegocioDto.getTipoDB() + ")" + "\"";
strCab += "}";
bPrim = false;
}
strCab += "]";
}
}
request.setAttribute("json_retorno", strCab);
}
@Override
public Class getBeanClass() {
return DataManagerObjectsDTO.class;
}
private HashMap getFormFields(HttpServletRequest req) {
try {
req.setCharacterEncoding("ISO-8859-1");
} catch (UnsupportedEncodingException e) {
System.out.println("PROBLEMA COM CODIFICACAO DE CARACTERES!!! [AjaxProcessEvent.getFormFields()]");
e.printStackTrace();
}
HashMap formFields = new HashMap();
Enumeration en = req.getParameterNames();
String[] strValores;
while (en.hasMoreElements()) {
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;
}
}