package br.com.centralit.citcorpore.ajaxForms;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
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.citajax.html.HTMLForm;
import br.com.centralit.citajax.util.CitAjaxWebUtil;
import br.com.centralit.citcorpore.bean.ExternalConnectionDTO;
import br.com.centralit.citcorpore.bean.ImportConfigCamposDTO;
import br.com.centralit.citcorpore.bean.ImportConfigDTO;
import br.com.centralit.citcorpore.bean.ImportManagerDTO;
import br.com.centralit.citcorpore.metainfo.bean.CamposObjetoNegocioDTO;
import br.com.centralit.citcorpore.metainfo.bean.ObjetoNegocioDTO;
import br.com.centralit.citcorpore.metainfo.util.JSONUtil;
import br.com.centralit.citcorpore.negocio.ExternalConnectionService;
import br.com.centralit.citcorpore.negocio.ImportConfigCamposService;
import br.com.centralit.citcorpore.negocio.ImportConfigService;
import br.com.citframework.service.ServiceLocator;
import br.com.citframework.util.Reflexao;
import br.com.citframework.util.UtilI18N;
public class ImportManager extends AjaxFormAction {
@Override
public void load(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception {
final ExternalConnectionService externalConnectionService = (ExternalConnectionService) ServiceLocator.getInstance().getService(ExternalConnectionService.class, null);
final Collection colExternalConnections = externalConnectionService.list();
document.getSelectById("idExternalConnection").addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione"));
if (colExternalConnections != null) {
for (final Iterator it = colExternalConnections.iterator(); it.hasNext();) {
final ExternalConnectionDTO externalConnectionDTO = (ExternalConnectionDTO) it.next();
document.getSelectById("idExternalConnection").addOption("" + externalConnectionDTO.getIdExternalConnection(), externalConnectionDTO.getNome());
}
}
final Collection colObjs = externalConnectionService.getLocalTables();
document.getSelectById("tabelaDestino").addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione"));
if (colObjs != null) {
for (final Iterator it = colObjs.iterator(); it.hasNext();) {
final ObjetoNegocioDTO objetoNegocioDTO = (ObjetoNegocioDTO) it.next();
document.getSelectById("tabelaDestino").addOption(objetoNegocioDTO.getNomeTabelaDB(), objetoNegocioDTO.getNomeTabelaDB());
}
}
}
public void selecionaExternalConnection(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception {
final ExternalConnectionService externalConnectionService = (ExternalConnectionService) ServiceLocator.getInstance().getService(ExternalConnectionService.class, null);
final ImportManagerDTO importManagerDTO = (ImportManagerDTO) document.getBean();
document.getSelectById("tabelaOrigem").removeAllOptions();
document.getSelectById("tabelaOrigem").addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione"));
if (importManagerDTO.getIdExternalConnection() != null) {
final Collection colObjs = externalConnectionService.getTables(importManagerDTO.getIdExternalConnection());
if (colObjs != null) {
for (final Iterator it = colObjs.iterator(); it.hasNext();) {
final ObjetoNegocioDTO objetoNegocioDTO = (ObjetoNegocioDTO) it.next();
document.getSelectById("tabelaOrigem").addOption(objetoNegocioDTO.getNomeTabelaDB(), objetoNegocioDTO.getNomeTabelaDB());
}
}
}
document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide();
}
public void getOrigemDestinoDados(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception {
final ImportManagerDTO importManagerDTO = (ImportManagerDTO) document.getBean();
final ExternalConnectionService externalConnectionService = (ExternalConnectionService) ServiceLocator.getInstance().getService(ExternalConnectionService.class, null);
if (importManagerDTO.getIdExternalConnection() != null) {
if (importManagerDTO.getTabelaOrigem() != null && !importManagerDTO.getTabelaOrigem().trim().equalsIgnoreCase("")) {
String cmdOrigem = "origem = [";
final Collection colObjs = externalConnectionService.getFieldsTable(importManagerDTO.getIdExternalConnection(), importManagerDTO.getTabelaOrigem());
if (colObjs != null && colObjs.size() > 0) {
cmdOrigem += "{id:'##AUTO##',text:'--AUTO INCREMENT--'}";
for (final Iterator it = colObjs.iterator(); it.hasNext();) {
final CamposObjetoNegocioDTO camposObjetoNegocioDTO = (CamposObjetoNegocioDTO) it.next();
cmdOrigem += ",";
cmdOrigem += "{id:'" + camposObjetoNegocioDTO.getNomeDB() + "',text:'" + camposObjetoNegocioDTO.getNomeDB() + "'}";
}
}
cmdOrigem += "];";
document.executeScript(cmdOrigem);
}
if (importManagerDTO.getTabelaDestino() != null && !importManagerDTO.getTabelaDestino().trim().equalsIgnoreCase("")) {
String cmdDestino = "destino = [";
final Collection colObjs = externalConnectionService.getFieldsLocalTable(importManagerDTO.getTabelaDestino());
if (colObjs != null && colObjs.size() > 0) {
int i = 0;
for (final Iterator it = colObjs.iterator(); it.hasNext();) {
final CamposObjetoNegocioDTO camposObjetoNegocioDTO = (CamposObjetoNegocioDTO) it.next();
if (i > 0) {
cmdDestino += ",";
}
cmdDestino += "{id:'" + camposObjetoNegocioDTO.getNomeDB() + "',text:'" + camposObjetoNegocioDTO.getNomeDB() + "'}";
i++;
}
}
cmdDestino += "];";
document.executeScript(cmdDestino);
}
}
document.executeScript("geraGrid()");
}
public void carregarDados(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception {
final ExternalConnectionService externalConnectionService = (ExternalConnectionService) ServiceLocator.getInstance().getService(ExternalConnectionService.class, null);
final ImportManagerDTO importManagerDTO = (ImportManagerDTO) document.getBean();
final String jsonMatriz = importManagerDTO.getJsonMatriz();
Map<String, Object> mapMatriz = null;
try {
mapMatriz = JSONUtil.convertJsonToMap(jsonMatriz, true);
} catch (final Exception e) {
System.out.println("jsonMatriz: " + jsonMatriz);
e.printStackTrace();
throw e;
}
final List colMatrizTratada = (List) mapMatriz.get("MATRIZ");
externalConnectionService.processImport(importManagerDTO, colMatrizTratada);
document.alert(UtilI18N.internacionaliza(request, "importmanager.ok"));
document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide();
}
public void gravar(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception {
final ImportManagerDTO importManagerDTO = (ImportManagerDTO) document.getBean();
final ImportConfigDTO importConfigDTO = new ImportConfigDTO();
Reflexao.copyPropertyValues(importManagerDTO, importConfigDTO);
final ImportConfigService importConfigService = (ImportConfigService) ServiceLocator.getInstance().getService(ImportConfigService.class, null);
final String jsonMatriz = importManagerDTO.getJsonMatriz();
Map<String, Object> mapMatriz = null;
try {
mapMatriz = JSONUtil.convertJsonToMap(jsonMatriz, true);
} catch (final Exception e) {
System.out.println("jsonMatriz: " + jsonMatriz);
e.printStackTrace();
throw e;
}
if (mapMatriz != null && mapMatriz.size() > 0) {
final ArrayList colMatrizTratada = (ArrayList) mapMatriz.get("MATRIZ");
final Collection colDadosCampos = new ArrayList();
for (final Iterator it = colMatrizTratada.iterator(); it.hasNext();) {
final ImportConfigCamposDTO importConfigCamposDTO = new ImportConfigCamposDTO();
final HashMap mapItem = (HashMap) it.next();
final String idOrigem = (String) mapItem.get("IDORIGEM");
final String idDestino = (String) mapItem.get("IDDESTINO");
final String script = (String) mapItem.get("SCRIPT");
importConfigCamposDTO.setOrigem(idOrigem);
importConfigCamposDTO.setDestino(idDestino);
importConfigCamposDTO.setScript(script);
colDadosCampos.add(importConfigCamposDTO);
}
importConfigDTO.setColDadosCampos(colDadosCampos);
if (importConfigDTO.getIdImportConfig() == null || importConfigDTO.getIdImportConfig().intValue() == 0) {
importConfigService.create(importConfigDTO);
document.alert(UtilI18N.internacionaliza(request, "MSG05"));
} else {
importConfigService.update(importConfigDTO);
document.alert(UtilI18N.internacionaliza(request, "MSG06"));
}
document.getElementById("idImportConfig").setValue("" + importConfigDTO.getIdImportConfig());
}
}
public void restore(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception {
final ImportManagerDTO importManagerDTO = (ImportManagerDTO) document.getBean();
ImportConfigDTO importConfigDTO = new ImportConfigDTO();
Reflexao.copyPropertyValues(importManagerDTO, importConfigDTO);
final ImportConfigService importConfigService = (ImportConfigService) ServiceLocator.getInstance().getService(ImportConfigService.class, null);
final ImportConfigCamposService importConfigCamposService = (ImportConfigCamposService) ServiceLocator.getInstance().getService(ImportConfigCamposService.class, null);
importConfigDTO = (ImportConfigDTO) importConfigService.restore(importConfigDTO);
document.executeScript("limpaGrid()");
final HTMLForm form = document.getForm("form");
form.clear();
if (importConfigDTO != null) {
importManagerDTO.setIdExternalConnection(importConfigDTO.getIdExternalConnection());
importManagerDTO.setTabelaOrigem(importConfigDTO.getTabelaOrigem());
importManagerDTO.setTabelaDestino(importConfigDTO.getTabelaDestino());
document.setBean(importManagerDTO);
this.selecionaExternalConnection(document, request, response);
this.getOrigemDestinoDados(document, request, response);
if (importConfigDTO.getIdImportConfig() != null) {
final Collection colCampos = importConfigCamposService.findByIdImportConfig(importConfigDTO.getIdImportConfig());
if (colCampos != null) {
for (final Iterator it = colCampos.iterator(); it.hasNext();) {
final ImportConfigCamposDTO importConfigCamposDTO = (ImportConfigCamposDTO) it.next();
document.getElementById("auxData").setValue("");
if (importConfigCamposDTO.getScript() != null && !importConfigCamposDTO.getScript().trim().equalsIgnoreCase("")) {
document.executeScript("HTMLUtils.setValue('auxData', ObjectUtils.decodificaAspasApostrofe(ObjectUtils.decodificaEnter('"
+ CitAjaxWebUtil.codificaAspasApostrofe(CitAjaxWebUtil.codificaEnter(importConfigCamposDTO.getScript())) + "')))");
}
document.executeScript("adicionaLinha('" + importConfigCamposDTO.getOrigem() + "', '" + importConfigCamposDTO.getDestino()
+ "', document.form.auxData.value)");
}
}
}
}
if (importConfigDTO != null) {
form.setValues(importConfigDTO);
}
document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide();
}
@Override
public Class getBeanClass() {
return ImportManagerDTO.class;
}
}