package br.com.centralit.citcorpore.ajaxForms;
import java.io.UnsupportedEncodingException;
import java.sql.Connection;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Enumeration;
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.citcorpore.bean.DataManagerDTO;
import br.com.centralit.citcorpore.bean.DataManagerFKRelatedDTO;
import br.com.centralit.citcorpore.bean.TabFederacaoDadosDTO;
import br.com.centralit.citcorpore.bean.UploadDTO;
import br.com.centralit.citcorpore.bean.UsuarioDTO;
import br.com.centralit.citcorpore.integracao.TabFederacaoDadosDao;
import br.com.centralit.citcorpore.metainfo.bean.CamposObjetoNegocioDTO;
import br.com.centralit.citcorpore.metainfo.bean.ObjetoNegocioDTO;
import br.com.centralit.citcorpore.metainfo.integracao.VisaoDao;
import br.com.centralit.citcorpore.metainfo.negocio.CamposObjetoNegocioService;
import br.com.centralit.citcorpore.metainfo.negocio.ObjetoNegocioService;
import br.com.centralit.citcorpore.metainfo.util.DataBaseMetaDadosUtil;
import br.com.centralit.citcorpore.metainfo.util.MetaUtil;
import br.com.centralit.citcorpore.negocio.DataBaseMetaDadosService;
import br.com.centralit.citcorpore.util.CITCorporeUtil;
import br.com.centralit.citcorpore.util.Enumerados;
import br.com.centralit.citcorpore.util.ImportInfoField;
import br.com.centralit.citcorpore.util.ImportInfoRecord;
import br.com.centralit.citcorpore.util.ParametroUtil;
import br.com.centralit.citcorpore.util.UtilImportData;
import br.com.centralit.citcorpore.util.WebUtil;
import br.com.citframework.dto.LogDados;
import br.com.citframework.excecao.LogicException;
import br.com.citframework.excecao.PersistenceException;
import br.com.citframework.excecao.ServiceException;
import br.com.citframework.integracao.JdbcEngine;
import br.com.citframework.service.LogDadosService;
import br.com.citframework.service.LogDadosServiceBean;
import br.com.citframework.service.ServiceLocator;
import br.com.citframework.util.Constantes;
import br.com.citframework.util.UtilDatas;
import br.com.citframework.util.UtilI18N;
import br.com.citframework.util.UtilStrings;
import br.com.citframework.util.UtilTratamentoArquivos;
@SuppressWarnings({"rawtypes", "unchecked"})
public class DataManager extends AjaxFormAction {
private ObjetoNegocioService objetoNegocioService;
@Override
public void load(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception {
request.getSession(true).setAttribute("colUploadsGED", null);
document.executeScript("uploadAnexos.refresh()");
}
@Override
public Class getBeanClass() {
return DataManagerDTO.class;
}
public void trataExport(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception {
final DataManagerDTO dataManagerDTO = (DataManagerDTO) document.getBean();
final CamposObjetoNegocioService camposObjetoNegocioService = (CamposObjetoNegocioService) ServiceLocator.getInstance().getService(CamposObjetoNegocioService.class, null);
if (dataManagerDTO.getIdObjetoNegocio() == null) {
return;
}
final Collection col = camposObjetoNegocioService.findByIdObjetoNegocio(dataManagerDTO.getIdObjetoNegocio());
String table = "";
table += "<table><tr><td style='background-color:yellow'><input type='checkbox' value='S' name='excluirAoExportar' onclick='validaExcl(this)'>"
+ UtilI18N.internacionaliza(request, "dataManager.excluir") + "</td><td><input type='checkbox' value='S' name='exportarVinculos'>"
+ UtilI18N.internacionaliza(request, "dataManager.exportarvinculos") + "</td><td><input type='checkbox' value='S' name='exportarSql'>"
+ UtilI18N.internacionaliza(request, "dataManager.exportarSql") + "</td></tr></table><br>";
table += "<table cellspacing='1' cellpadding='1' width='100%' border='1'>";
table += "<tr>";
table += "<td>";
table += UtilI18N.internacionaliza(request, "dataManager.chave");
table += "</td>";
table += "<td>";
table += UtilI18N.internacionaliza(request, "dataManager.campo");
table += "</td>";
table += "<td>";
table += UtilI18N.internacionaliza(request, "dataManager.condicao");
table += "</td>";
table += "<td>";
table += UtilI18N.internacionaliza(request, "dataManager.valor");
table += "</td>";
table += "</tr>";
if (col != null) {
for (final Iterator it = col.iterator(); it.hasNext();) {
final CamposObjetoNegocioDTO camposObjetoNegocioDto = (CamposObjetoNegocioDTO) it.next();
table += "<tr>";
table += "<td>";
if (camposObjetoNegocioDto.getPk() != null && camposObjetoNegocioDto.getPk().equalsIgnoreCase("S")) {
table += "<img src='" + Constantes.getValue("SERVER_ADDRESS") + Constantes.getValue("CONTEXTO_APLICACAO") + "/imagens/ok.png' border='0'/>";
} else {
table += " ";
}
table += "</td>";
table += "<td>";
table += (camposObjetoNegocioDto.getDescricao() == null ? camposObjetoNegocioDto.getNome() : camposObjetoNegocioDto.getDescricao()) + " ("
+ camposObjetoNegocioDto.getTipoDB() + ")";
table += "</td>";
table += "<td>";
table += "<select name='cond_" + camposObjetoNegocioDto.getIdCamposObjetoNegocio() + "' id='cond_" + camposObjetoNegocioDto.getIdCamposObjetoNegocio() + "'>";
final boolean isStringType = MetaUtil.isStringType(camposObjetoNegocioDto.getTipoDB());
final boolean isDateType = MetaUtil.isDateType(camposObjetoNegocioDto.getTipoDB());
table += "<option value=''>-- " + UtilI18N.internacionaliza(request, "dataManager.semFiltro") + " --</option>";
table += "<option value='='>=</option>";
table += "<option value='1'><></option>";
table += "<option value='2'>></option>";
table += "<option value='3'><</option>";
table += "<option value='IN'>IN</option>";
table += "<option value='NOT IN'>NOT IN</option>";
if (isDateType) {
table += "<option value='BETWEEN'>" + UtilI18N.internacionaliza(request, "dataManager.entre") + "</option>";
}
table += "<option value='IS NULL'>IS NULL</option>";
if (isStringType) {
table += "<option value='LIKE'>" + UtilI18N.internacionaliza(request, "dataManager.queContenha") + "</option>";
}
table += "</select>";
table += "</td>";
table += "<td>";
table += "<input type='text' name='valor_" + camposObjetoNegocioDto.getIdCamposObjetoNegocio() + "' id='valor_" + camposObjetoNegocioDto.getIdCamposObjetoNegocio()
+ "' size='30'/>";
table += "</td>";
table += "</tr>";
}
}
table += "</table>";
document.getElementById("divExport").setInnerHTML(table);
document.executeScript("geraPopup()");
}
public void importar(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception {
final Collection colUploadsGED = (Collection) request.getSession(true).getAttribute("colUploadsGED");
if (colUploadsGED == null || colUploadsGED.size() == 0) {
document.alert(UtilI18N.internacionaliza(request, "dataManager.naoHaArquivosImportar"));
document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide();
return;
}
final String ORIGEM_SISTEMA = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.ORIGEM_SISTEMA, " ");
if (ORIGEM_SISTEMA == null || ORIGEM_SISTEMA.trim().equalsIgnoreCase("")) {
document.alert(UtilI18N.internacionaliza(request, "dataManager.infoorigemdados"));
document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide();
return;
}
final List colRecordsGeral = new ArrayList();
for (final Iterator it = colUploadsGED.iterator(); it.hasNext();) {
final UploadDTO uploadDTO = (UploadDTO) it.next();
final Collection colRecords = UtilImportData.readXMLFile(uploadDTO.getPath());
if (colRecords != null) {
colRecordsGeral.addAll(colRecords);
}
}
this.importarDados(document, request, response, colRecordsGeral, true, ORIGEM_SISTEMA);
}
public void importarDados(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response, final List colRecordsGeral, boolean federarDados,
final String ORIGEM_SISTEMA) throws Exception {
long qtdRegInsert = 0;
long qtdRegUpdate = 0;
int count = 0;
final DataBaseMetaDadosUtil dataBaseMetaDadosUtil = new DataBaseMetaDadosUtil();
final TabFederacaoDadosDao tabFederacaoDadosDao = new TabFederacaoDadosDao();
for (final Iterator itRecords = colRecordsGeral.iterator(); itRecords.hasNext();) {
final ImportInfoRecord importInfoRecord = (ImportInfoRecord) itRecords.next();
System.out.println("\n TABELA " + importInfoRecord.getTableName() + " --- COUNT " + count);
if (ORIGEM_SISTEMA.equalsIgnoreCase(importInfoRecord.getOrigem())) {
federarDados = false;
}
String sqlWhere = "";
final List lstParmsInsert = new ArrayList();
final List lstParmsUpdate = new ArrayList();
final List lstParmsWhere = new ArrayList();
String sqlInsert = "";
String sqlInsertValues = "";
String sqlUpdate = "";
String sqlSelect = "";
String nomePrimeiroCampo = "";
String chaveOrigem = "";
String chaveFinal = "";
for (final Iterator it = importInfoRecord.getColFields().iterator(); it.hasNext();) {
final ImportInfoField importInfoField = (ImportInfoField) it.next();
System.out.println(" " + importInfoField.getNameField() + " = " + importInfoField.getValueField());
if (nomePrimeiroCampo.trim().equalsIgnoreCase("")) {
nomePrimeiroCampo = importInfoField.getNameField();
}
if (!sqlInsert.trim().equalsIgnoreCase("")) {
sqlInsert = sqlInsert + ",";
sqlInsertValues = sqlInsertValues + ",";
}
sqlInsert = sqlInsert + importInfoField.getNameField();
sqlInsertValues = sqlInsertValues + "?";
String strVal = "";
if (importInfoField.isKey()) {
if (!sqlWhere.trim().equalsIgnoreCase("")) {
sqlWhere = sqlWhere + " AND ";
}
sqlWhere = sqlWhere + " " + importInfoField.getNameField() + " = ?";
if (federarDados) {
if (importInfoField.isSequence()) {
strVal = this.localizaOrigemTabelaChaveOrig(importInfoRecord.getOrigem(), importInfoRecord.getTableName(), importInfoField.getValueField());
if (strVal == null) {
strVal = this.generateChaveFederada(importInfoRecord.getTableName(), importInfoField.getNameField());
}
lstParmsWhere.add(MetaUtil.convertType(importInfoField.getType(), strVal, null, request));
if (!chaveFinal.trim().equalsIgnoreCase("")) {
chaveFinal = chaveOrigem + "+";
}
chaveFinal = chaveFinal + strVal;
} else {
if (!chaveFinal.trim().equalsIgnoreCase("")) {
chaveFinal = chaveOrigem + "+";
}
// Tem que localizar a chave referenciada na base federada.
final String tabelaPai = dataBaseMetaDadosUtil.getTabelaPaiByTableAndField(importInfoRecord.getTableName(), importInfoField.getNameField(), true);
if (tabelaPai != null && !tabelaPai.trim().equalsIgnoreCase("")) {
strVal = this.localizaOrigemTabelaChaveOrig(importInfoRecord.getOrigem(), tabelaPai, importInfoField.getValueField());
if (strVal != null) {
chaveFinal = chaveFinal + strVal;
} else {
chaveFinal = chaveFinal + importInfoField.getValueField();
strVal = importInfoField.getValueField();
}
lstParmsWhere.add(MetaUtil.convertType(importInfoField.getType(), strVal, null, request));
} else {
chaveFinal = chaveFinal + importInfoField.getValueField();
lstParmsWhere.add(MetaUtil.convertType(importInfoField.getType(), importInfoField.getValueField(), null, request));
}
}
} else {
strVal = importInfoField.getValueField();
lstParmsWhere.add(MetaUtil.convertType(importInfoField.getType(), strVal, null, request));
}
if (!chaveOrigem.trim().equalsIgnoreCase("")) {
chaveOrigem = chaveOrigem + "+";
}
chaveOrigem = chaveOrigem + importInfoField.getValueField();
} else {
if (!sqlUpdate.trim().equalsIgnoreCase("")) {
sqlUpdate = sqlUpdate + ",";
}
sqlUpdate = sqlUpdate + importInfoField.getNameField() + " = ?";
if (federarDados) {
// Tem que localizar a chave referenciada na base federada.
final String tabelaPai = dataBaseMetaDadosUtil.getTabelaPaiByTableAndField(importInfoRecord.getTableName(), importInfoField.getNameField(), true);
if (tabelaPai != null && !tabelaPai.trim().equalsIgnoreCase("")) {
strVal = this.localizaOrigemTabelaChaveOrig(importInfoRecord.getOrigem(), tabelaPai, importInfoField.getValueField());
if (strVal == null) {
strVal = importInfoField.getValueField();
}
lstParmsUpdate.add(MetaUtil.convertType(importInfoField.getType(), strVal, null, request));
} else {
strVal = importInfoField.getValueField();
if (importInfoField.getValueField().trim().equalsIgnoreCase("null")) {
lstParmsUpdate.add(null);
} else {
lstParmsUpdate.add(MetaUtil.convertType(importInfoField.getType(), strVal, null, request));
}
}
} else {
strVal = importInfoField.getValueField();
if (importInfoField.getValueField().trim().equalsIgnoreCase("null")) {
lstParmsUpdate.add(null);
} else {
lstParmsUpdate.add(MetaUtil.convertType(importInfoField.getType(), strVal, null, request));
}
}
}
if (importInfoField.getValueField().trim().equalsIgnoreCase("null")) {
lstParmsInsert.add(null);
} else {
lstParmsInsert.add(MetaUtil.convertType(importInfoField.getType(), strVal, null, request));
}
}
if (federarDados) {
final TabFederacaoDadosDTO tabFederacaoDadosDto = new TabFederacaoDadosDTO();
tabFederacaoDadosDto.setOrigem(importInfoRecord.getOrigem());
tabFederacaoDadosDto.setChaveOriginal(chaveOrigem);
tabFederacaoDadosDto.setChaveFinal(chaveFinal);
tabFederacaoDadosDto.setNomeTabela(importInfoRecord.getTableName());
tabFederacaoDadosDto.setCriacao(UtilDatas.getDataHoraAtual());
tabFederacaoDadosDto.setUltAtualiz(UtilDatas.getDataHoraAtual());
final TabFederacaoDadosDTO tabFederacaoDadosAux = (TabFederacaoDadosDTO) tabFederacaoDadosDao.restore(tabFederacaoDadosDto);
if (tabFederacaoDadosAux != null) {
tabFederacaoDadosDto.setCriacao(null);
tabFederacaoDadosDao.updateNotNull(tabFederacaoDadosDto);
} else {
tabFederacaoDadosDao.create(tabFederacaoDadosDto);
}
}
lstParmsUpdate.addAll(lstParmsWhere);
sqlInsert = "INSERT INTO " + importInfoRecord.getTableName() + "(" + sqlInsert + ") VALUES (" + sqlInsertValues + ")";
sqlUpdate = "UPDATE " + importInfoRecord.getTableName() + " SET " + sqlUpdate + " WHERE " + sqlWhere;
sqlSelect = "SELECT " + nomePrimeiroCampo + " FROM " + importInfoRecord.getTableName() + " WHERE " + sqlWhere;
final JdbcEngine jdbcEngine = new JdbcEngine(Constantes.getValue("DATABASE_ALIAS"), null);
try {
final List lst = jdbcEngine.execSQL(sqlSelect, lstParmsWhere.toArray(), 0);
if (lst == null || lst.size() == 0) {
jdbcEngine.execUpdate(sqlInsert, lstParmsInsert.toArray());
qtdRegInsert++;
} else {
jdbcEngine.execUpdate(sqlUpdate, lstParmsUpdate.toArray());
qtdRegUpdate++;
}
} catch (final Exception e) {
e.printStackTrace();
System.out.println("O ERRO OCORREU NO REGISTRO " + count);
System.err.println(sqlInsert + " - " + lstParmsInsert);
System.err.println(sqlUpdate + " - " + lstParmsUpdate);
System.err.println(sqlSelect + " - " + lstParmsWhere);
}
count++;
}
document.alert("Registros Inseridos: " + qtdRegInsert + ". Atualizados: " + qtdRegUpdate);
request.getSession(true).setAttribute("colUploadsGED", null);
document.executeScript("$('#divImport').dialog('close')");
document.executeScript("$('#POPUP_EXPORTAR').dialog('close')");
document.executeScript("limpar_upload()");
document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide();
}
public String generateChaveFederada(final String tableName, final String nomeField) throws PersistenceException {
final JdbcEngine jdbcEngine = new JdbcEngine(Constantes.getValue("DATABASE_ALIAS"), null);
final String sql = "SELECT MAX(" + nomeField + ") FROM " + tableName + "";
final List lst = jdbcEngine.execSQL(sql, null, 0);
if (lst == null || lst.size() == 0) {
return "1";
}
final Object[] obj = (Object[]) lst.get(0);
long l = 0;
try {
l = Long.parseLong(obj[0].toString());
} catch (final Exception e) {
e.printStackTrace();
}
l = l + 1;
return "" + l;
}
public String localizaOrigemTabelaChaveOrig(final String origem, final String tableName, final String chaveOrig) throws Exception {
final TabFederacaoDadosDao tabFederadaDao = new TabFederacaoDadosDao();
final Collection col = tabFederadaDao.findByOrigemTabelaChaveOriginal(origem, tableName, chaveOrig);
if (col != null && col.size() > 0) {
final TabFederacaoDadosDTO tabFederacaoDadosDTO = (TabFederacaoDadosDTO) ((List) col).get(0);
return tabFederacaoDadosDTO.getChaveFinal();
}
return null;
}
public void exportar(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception {
final DataManagerDTO dataManagerDTO = (DataManagerDTO) document.getBean();
if (dataManagerDTO.getIdObjetoNegocio() == null) {
document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide();
return;
}
final UsuarioDTO usuarioDto = WebUtil.getUsuario(request);
if (usuarioDto == null) {
document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.sessaoExpirada"));
document.executeScript("window.location = '" + Constantes.getValue("SERVER_ADDRESS") + request.getContextPath() + "'");
return;
}
final String ORIGEM_SISTEMA = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.ORIGEM_SISTEMA, " ");
if (ORIGEM_SISTEMA == null || ORIGEM_SISTEMA.trim().equalsIgnoreCase("")) {
document.alert(UtilI18N.internacionaliza(request, "dataManager.infoorigemdados"));
document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide();
return;
}
String sqlDelete = "";
String nomeTabela = "";
final HashMap hashValores = this.getFormFields(request);
final String excluirAoExportar = (String) hashValores.get("excluirAoExportar".toUpperCase());
final String exportarVinculos = (String) hashValores.get("exportarVinculos".toUpperCase());
final String exportarSql = (String) hashValores.get("exportarSql".toUpperCase());
StringBuilder strAux = null;
if (excluirAoExportar != null && excluirAoExportar.equalsIgnoreCase("S") || exportarVinculos != null && exportarVinculos.equalsIgnoreCase("S")) {
if (exportarSql != null && exportarSql.equalsIgnoreCase("S")) {
strAux = this.geraRecursiveExportObjetoNegocioSql(hashValores, dataManagerDTO.getIdObjetoNegocio(), sqlDelete, nomeTabela, "", "");
} else {
strAux = this.geraRecursiveExportObjetoNegocio(hashValores, dataManagerDTO.getIdObjetoNegocio(), sqlDelete, nomeTabela, "", "");
}
} else {
if (exportarSql != null && exportarSql.equalsIgnoreCase("S")) {
strAux = this.geraExportObjetoNegocioSql(hashValores, dataManagerDTO.getIdObjetoNegocio(), sqlDelete, nomeTabela, "", "");
} else {
strAux = this.geraExportObjetoNegocio(hashValores, dataManagerDTO.getIdObjetoNegocio(), sqlDelete, nomeTabela, "", "");
}
}
nomeTabela = (String) hashValores.get("NOMETABELADB");
sqlDelete = (String) hashValores.get("COMMANDDELETE");
final String sqlExport = (String) hashValores.get("COMMAND");
String strDateTime = new java.util.Date().toString();
strDateTime = strDateTime.replaceAll(" ", "_");
strDateTime = strDateTime.replaceAll(":", "_");
String str = "";
if (exportarSql != null && exportarSql.equalsIgnoreCase("S")) {
str += "\n-- origem: " + ORIGEM_SISTEMA;
str += "\n-- Data: " + UtilDatas.dateToSTRWithFormat(UtilDatas.getDataAtual(), "dd/MM/yyyy hh:MM:ss") + "\n";
str += "\n" + strAux.toString();
str += "\n-- END SQL";
UtilTratamentoArquivos.geraFileTxtFromString(CITCorporeUtil.CAMINHO_REAL_APP + "/exportSQL/export_data_" + strDateTime + ".sql", str);
} else {
str = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<tables origem='" + ORIGEM_SISTEMA + "'>\n" + strAux.toString();
str = "" + str + "\n</tables>";
UtilTratamentoArquivos.geraFileTxtFromString(CITCorporeUtil.CAMINHO_REAL_APP + "/exportXML/export_data_" + strDateTime + ".smart", str);
}
final JdbcEngine jdbcEngine = new JdbcEngine(Constantes.getValue("DATABASE_ALIAS"), null);
LogDados logDados = new LogDados();
logDados.setDtAtualizacao(UtilDatas.getDataHoraAtual());
logDados.setIdUsuario(usuarioDto.getIdUsuario());
logDados.setDataInicio(UtilDatas.getDataAtual());
logDados.setDataLog(UtilDatas.getDataHoraAtual());
logDados.setNomeTabela(nomeTabela);
logDados.setOperacao("Export");
logDados.setLocalOrigem(usuarioDto.getNomeUsuario());
logDados.setDados("Execute sql export... " + sqlExport);
final LogDadosService lds = new LogDadosServiceBean();
try {
logDados = lds.create(logDados);
} catch (final Exception e) {
e.printStackTrace();
}
if (excluirAoExportar != null && excluirAoExportar.equalsIgnoreCase("S")) {
logDados.setOperacao("Delete after export");
sqlDelete = sqlDelete + ";";
final String[] strDel = sqlDelete.split(";");
if (strDel != null) {
for (final String element : strDel) {
logDados.setDados("Execute sql delete... " + element);
try {
logDados = lds.create(logDados);
try {
System.out.println("Executando sql... " + element);
jdbcEngine.execUpdate(element, null); // Antes de executar a operacao de exclusao, faz a
// gravacao do LOG.
} catch (final Exception e) {
e.printStackTrace();
logDados.setDtAtualizacao(UtilDatas.getDataHoraAtual()); // Se falhar a execucao da operacao
// delete, gera informando que
// falhou!
logDados.setDataLog(UtilDatas.getDataHoraAtual());
logDados.setDados("FAILED! [Original Id Log: " + logDados.getIdlog() + "] Execute sql delete... " + element);
lds.create(logDados);
}
} catch (final Exception e) {
e.printStackTrace();
}
}
}
}
document.alert(UtilI18N.internacionaliza(request, "dataManager.arquivoExportado"));
document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide();
if (exportarSql != null && exportarSql.equalsIgnoreCase("S")) {
document.executeScript("getFile('" + CITCorporeUtil.CAMINHO_REAL_APP + "/exportSQL/export_data_" + strDateTime + ".sql', 'export_data_" + strDateTime + ".sql')");
} else {
document.executeScript("getFile('" + CITCorporeUtil.CAMINHO_REAL_APP + "/exportXML/export_data_" + strDateTime + ".smart', 'export_data_" + strDateTime + ".smart')");
}
}
public StringBuilder geraRecursiveExportObjetoNegocio(final Map hashValores, final Integer idObjetoNegocio, final String sqlDelete, String nomeTabela,
final String filterAditional, final String order) throws ServiceException, Exception {
final StringBuilder strAux = this.geraExportObjetoNegocio(hashValores, idObjetoNegocio, sqlDelete, nomeTabela, filterAditional, order);
nomeTabela = (String) hashValores.get("NOMETABELADB");
final String tabelasTratadas = (String) hashValores.get("TABELASTRATADAS");
final String keysProcessed = (String) hashValores.get("KEYS");
final Collection colRelateds = this.getFks(nomeTabela);
System.out.println("Tratando FKS da Tabelas : " + nomeTabela);
if (colRelateds != null && colRelateds.size() > 0) {
final ObjetoNegocioService objetoNegocioService = (ObjetoNegocioService) ServiceLocator.getInstance().getService(ObjetoNegocioService.class, null);
for (final Iterator it = colRelateds.iterator(); it.hasNext();) {
final DataManagerFKRelatedDTO dataManagerFKRelatedDTO = (DataManagerFKRelatedDTO) it.next();
System.out.println(" Tabela FK : " + dataManagerFKRelatedDTO.getNomeTabelaRelacionada());
final ObjetoNegocioDTO objNegocioDto = objetoNegocioService.getByNomeTabelaDB(dataManagerFKRelatedDTO.getNomeTabelaRelacionada());
if (objNegocioDto != null) {
if (tabelasTratadas.indexOf(("'" + objNegocioDto.getNomeTabelaDB().trim() + "'").toUpperCase()) > -1) {
System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Tabela ja processada: " + objNegocioDto.getNomeTabelaDB());
continue;
}
String filter = "";
if (keysProcessed != null && !keysProcessed.trim().equalsIgnoreCase("")) {
filter = dataManagerFKRelatedDTO.getPartChild() + " IN (" + keysProcessed + ")";
System.out.println(" Tabela FK : " + dataManagerFKRelatedDTO.getNomeTabelaRelacionada() + " Processando... " + objNegocioDto.getNomeTabelaDB()
+ " Filtro: " + filter);
final StringBuilder strAux2 = this.geraRecursiveExportObjetoNegocio(hashValores, objNegocioDto.getIdObjetoNegocio(), sqlDelete,
dataManagerFKRelatedDTO.getNomeTabelaRelacionada(), filter, "");
strAux.append("\n");
strAux.append(strAux2);
}
}
}
}
return strAux;
}
public Collection getFks(final String nomeTabela) throws Exception {
final DataBaseMetaDadosUtil dataBaseMetaDadosUtil = new DataBaseMetaDadosUtil();
final VisaoDao visaoDao = new VisaoDao();
final Connection con = visaoDao.getTransactionControler().getConnection();
String DB_SCHEMA = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.DB_SCHEMA, " ");
if (DB_SCHEMA == null || DB_SCHEMA.trim().equalsIgnoreCase("")) {
DB_SCHEMA = "citsmart";
}
final Collection colRelateds = dataBaseMetaDadosUtil.readFK(con, DB_SCHEMA, DB_SCHEMA, nomeTabela);
con.close();
return colRelateds;
}
public void exportarTudo(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception {
final ObjetoNegocioService objetoNegocioService = (ObjetoNegocioService) ServiceLocator.getInstance().getService(ObjetoNegocioService.class, null);
final HashMap hashValores = this.getFormFields(request);
final StringBuilder str = new StringBuilder();
final String ORIGEM_SISTEMA = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.ORIGEM_SISTEMA, " ");
if (ORIGEM_SISTEMA == null || ORIGEM_SISTEMA.trim().equalsIgnoreCase("")) {
document.alert(UtilI18N.internacionaliza(request, "dataManager.infoorigemdados"));
document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide();
return;
}
final String nomeTabela = "";
final Collection colObjsNeg = objetoNegocioService.listAtivos();
if (colObjsNeg != null) {
for (final Iterator it = colObjsNeg.iterator(); it.hasNext();) {
final ObjetoNegocioDTO objetoNegocioDTO = (ObjetoNegocioDTO) it.next();
final String sqlDelete = "";
final StringBuilder strAux = this.geraExportObjetoNegocio(hashValores, objetoNegocioDTO.getIdObjetoNegocio(), sqlDelete, nomeTabela, "", "");
if (strAux != null) {
str.append(strAux);
}
}
}
String strAux = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<tables origem='" + ORIGEM_SISTEMA + "'>\n" + str.toString();
strAux = "" + strAux + "\n</tables>";
String strDateTime = new java.util.Date().toString();
strDateTime = strDateTime.replaceAll(" ", "_");
strDateTime = strDateTime.replaceAll(":", "_");
UtilTratamentoArquivos.geraFileTxtFromString(CITCorporeUtil.CAMINHO_REAL_APP + "/exportXML/export_data_ALL_" + strDateTime + ".smart", strAux.toString());
document.alert(UtilI18N.internacionaliza(request, "dataManager.arquivoExportado"));
document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide();
document.executeScript("getFile('" + CITCorporeUtil.CAMINHO_REAL_APP + "/exportXML/export_data_ALL_" + strDateTime + ".smart', 'export_data_ALL_" + strDateTime
+ ".smart')");
}
public StringBuilder geraExportObjetoNegocio(final Map hashValores, final Integer idObjetoNegocio, String sqlDelete, final String nomeTabela, final String filterAditional,
final String order) throws ServiceException, Exception {
final CamposObjetoNegocioService camposObjetoNegocioService = (CamposObjetoNegocioService) ServiceLocator.getInstance().getService(CamposObjetoNegocioService.class, null);
final ObjetoNegocioService objetoNegocioService = (ObjetoNegocioService) ServiceLocator.getInstance().getService(ObjetoNegocioService.class, null);
ObjetoNegocioDTO objetoNegocioDTO = new ObjetoNegocioDTO();
objetoNegocioDTO.setIdObjetoNegocio(idObjetoNegocio);
objetoNegocioDTO = (ObjetoNegocioDTO) objetoNegocioService.restore(objetoNegocioDTO);
final Collection col = camposObjetoNegocioService.findByIdObjetoNegocio(idObjetoNegocio);
String sqlCondicao = "";
String sqlCampos = "";
final String excluirAoExportar = (String) hashValores.get("excluirAoExportar".toUpperCase());
// Antes de fazer a exportacao, faz o sincronismo com o DB, pois pode estar desatualizado!
final DataBaseMetaDadosUtil dataBaseMetaDadosUtil = new DataBaseMetaDadosUtil();
dataBaseMetaDadosUtil.sincronizaObjNegDB(objetoNegocioDTO.getNomeTabelaDB(), false);
System.out.println("Sincronizando tabela: " + objetoNegocioDTO.getNomeTabelaDB());
Thread.sleep(1000); // Da uma sleep pra liberar cursores presos e dar um tempo pro GC passar.
hashValores.put("NOMETABELADB", objetoNegocioDTO.getNomeTabelaDB());
String tabelasTratadas = (String) hashValores.get("TABELASTRATADAS");
tabelasTratadas = UtilStrings.nullToVazio(tabelasTratadas);
tabelasTratadas = tabelasTratadas + "'" + objetoNegocioDTO.getNomeTabelaDB() + "'";
hashValores.put("TABELASTRATADAS", tabelasTratadas);
if (col != null) {
for (final Iterator it = col.iterator(); it.hasNext();) {
final CamposObjetoNegocioDTO camposObjetoNegocioDto = (CamposObjetoNegocioDTO) it.next();
if (!sqlCampos.trim().equalsIgnoreCase("")) {
sqlCampos += ",";
}
sqlCampos = sqlCampos + camposObjetoNegocioDto.getNomeDB();
final String cond = (String) hashValores.get("COND_" + camposObjetoNegocioDto.getIdCamposObjetoNegocio());
String valor = (String) hashValores.get("VALOR_" + camposObjetoNegocioDto.getIdCamposObjetoNegocio());
if (!UtilStrings.nullToVazio(cond).trim().equalsIgnoreCase("") && !UtilStrings.nullToVazio(valor).trim().equalsIgnoreCase("")) {
sqlCondicao = sqlCondicao + " " + camposObjetoNegocioDto.getNomeDB();
if (cond != null && cond.equalsIgnoreCase("1")) {
sqlCondicao = sqlCondicao + " <> ";
} else if (cond != null && cond.equalsIgnoreCase("2")) {
sqlCondicao = sqlCondicao + " > ";
} else if (cond != null && cond.equalsIgnoreCase("3")) {
sqlCondicao = sqlCondicao + " < ";
} else {
sqlCondicao = sqlCondicao + " " + cond + " ";
}
final boolean isStringType = MetaUtil.isStringType(camposObjetoNegocioDto.getTipoDB());
if (isStringType) {
if (cond.equalsIgnoreCase("=") || cond.equalsIgnoreCase("1") || cond.equalsIgnoreCase("2") || cond.equalsIgnoreCase("3")) {
valor = valor.replaceAll("'", "");
valor = "'" + valor + "'";
}
}
if (cond != null && !cond.trim().equalsIgnoreCase("IS NULL")) {
sqlCondicao = sqlCondicao + valor;
}
}
}
}
String sqlFinal = "SELECT " + sqlCampos + " FROM " + objetoNegocioDTO.getNomeTabelaDB();
sqlDelete = "DELETE FROM " + objetoNegocioDTO.getNomeTabelaDB();
if (!sqlCondicao.trim().equalsIgnoreCase("")) {
if (filterAditional != null && !filterAditional.trim().equalsIgnoreCase("")) {
sqlFinal = sqlFinal + " WHERE " + sqlCondicao + " AND (" + filterAditional + ")";
sqlDelete = sqlDelete + " WHERE " + sqlCondicao + " AND (" + filterAditional + ")";
} else {
sqlFinal = sqlFinal + " WHERE " + sqlCondicao;
sqlDelete = sqlDelete + " WHERE " + sqlCondicao;
}
} else {
if (filterAditional != null && !filterAditional.trim().equalsIgnoreCase("")) {
sqlFinal = sqlFinal + " WHERE (" + filterAditional + ")";
sqlDelete = sqlDelete + " WHERE (" + filterAditional + ")";
}
}
if (order != null && !order.trim().equalsIgnoreCase("")) {
sqlFinal += " ORDER BY " + order;
}
String sqlDeleteAux = (String) hashValores.get("COMMANDDELETE");
String sqlExportAux = (String) hashValores.get("COMMAND");
if (!UtilStrings.nullToVazio(sqlDeleteAux).trim().equalsIgnoreCase("")) {
sqlDeleteAux = sqlDelete + "; " + UtilStrings.nullToVazio(sqlDeleteAux);
} else {
sqlDeleteAux = sqlDelete;
}
if (!UtilStrings.nullToVazio(sqlExportAux).trim().equalsIgnoreCase("")) {
sqlExportAux = sqlFinal + "; " + UtilStrings.nullToVazio(sqlExportAux);
} else {
sqlExportAux = sqlFinal;
}
hashValores.put("COMMANDDELETE", sqlDeleteAux);
hashValores.put("COMMAND", sqlExportAux);
final JdbcEngine jdbcEngine = new JdbcEngine(Constantes.getValue("DATABASE_ALIAS"), null);
List lst = null;
try {
lst = jdbcEngine.execSQL(sqlFinal, null, 0);
} catch (final Exception e) {
e.printStackTrace();
return new StringBuilder("OCORREU ERRO NA GERACAO DOS DADOS!" + e.getMessage());
}
final StringBuilder strXML = new StringBuilder();
strXML.append("<table name='" + objetoNegocioDTO.getNomeTabelaDB() + "'>\n");
strXML.append("<command><![CDATA[" + sqlFinal + "]]></command>\n");
if (excluirAoExportar != null && excluirAoExportar.equalsIgnoreCase("S")) {
strXML.append("<commandDelete><![CDATA[" + sqlDelete + "]]></commandDelete>\n");
} else {
strXML.append("<commandDelete>NONE</commandDelete>\n");
}
String keysProcessed = "";
if (lst != null) {
int j = 0;
for (final Iterator itDados = lst.iterator(); itDados.hasNext();) {
final Object[] obj = (Object[]) itDados.next();
int i = 0;
j++;
strXML.append("<record number='" + j + "'>\n");
for (final Iterator it = col.iterator(); it.hasNext();) {
final CamposObjetoNegocioDTO camposObjetoNegocioDto = (CamposObjetoNegocioDTO) it.next();
String key = "n";
final boolean isStringType = MetaUtil.isStringType(camposObjetoNegocioDto.getTipoDB());
if (camposObjetoNegocioDto.getPk() != null && camposObjetoNegocioDto.getPk().equalsIgnoreCase("S")) {
key = "y";
if (!keysProcessed.trim().equalsIgnoreCase("")) {
keysProcessed = keysProcessed + ",";
}
if (isStringType) {
keysProcessed = keysProcessed + "'" + obj[i] + "'";
} else {
keysProcessed = keysProcessed + "" + obj[i] + "";
}
}
String sequence = "n";
if (camposObjetoNegocioDto.getSequence() != null && camposObjetoNegocioDto.getSequence().equalsIgnoreCase("S")) {
sequence = "y";
}
strXML.append("<field name='" + camposObjetoNegocioDto.getNomeDB() + "' key='" + key + "' sequence='" + sequence + "' type='"
+ camposObjetoNegocioDto.getTipoDB().trim() + "'>");
if (isStringType) {
strXML.append("<![CDATA[");
}
strXML.append(obj[i]);
if (isStringType) {
strXML.append("]]>");
}
strXML.append("</field>\n");
i++;
}
strXML.append("</record>\n");
}
}
strXML.append("</table>\n");
hashValores.put("KEYS", keysProcessed);
return strXML;
}
public void limparUpload(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception {
request.getSession(true).setAttribute("colUploadsGED", null);
document.alert(UtilI18N.internacionaliza(request, "dataManager.limparuploadsucesso"));
}
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;
}
public StringBuilder geraExportObjetoNegocioSql(final HashMap hashValores, final Integer idObjetoNegocio, String sqlDelete, final String nomeTabela,
final String filterAditional, final String order) throws ServiceException, Exception {
final CamposObjetoNegocioService camposObjetoNegocioService = (CamposObjetoNegocioService) ServiceLocator.getInstance().getService(CamposObjetoNegocioService.class, null);
final ObjetoNegocioService objetoNegocioService = (ObjetoNegocioService) ServiceLocator.getInstance().getService(ObjetoNegocioService.class, null);
ObjetoNegocioDTO objetoNegocioDTO = new ObjetoNegocioDTO();
objetoNegocioDTO.setIdObjetoNegocio(idObjetoNegocio);
objetoNegocioDTO = (ObjetoNegocioDTO) objetoNegocioService.restore(objetoNegocioDTO);
final Collection<CamposObjetoNegocioDTO> col = camposObjetoNegocioService.findByIdObjetoNegocio(idObjetoNegocio);
String sqlCondicao = "";
String sqlCampos = "";
String sqlInsert = "";
String camposInsert = "";
// Antes de fazer a exportacao, faz o sincronismo com o DB, pois pode estar desatualizado!
final DataBaseMetaDadosUtil dataBaseMetaDadosUtil = new DataBaseMetaDadosUtil();
dataBaseMetaDadosUtil.sincronizaObjNegDB(objetoNegocioDTO.getNomeTabelaDB(), false);
System.out.println("Sincronizando tabela: " + objetoNegocioDTO.getNomeTabelaDB());
hashValores.put("NOMETABELADB", objetoNegocioDTO.getNomeTabelaDB());
String tabelasTratadas = (String) hashValores.get("TABELASTRATADAS");
tabelasTratadas = UtilStrings.nullToVazio(tabelasTratadas);
tabelasTratadas = tabelasTratadas + "'" + objetoNegocioDTO.getNomeTabelaDB() + "'";
hashValores.put("TABELASTRATADAS", tabelasTratadas);
if (col != null) {
for (final CamposObjetoNegocioDTO camposObjeto : col) {
if (!sqlCampos.trim().equalsIgnoreCase("")) {
sqlCampos += ",";
camposInsert += ",";
}
sqlCampos = sqlCampos + camposObjeto.getNomeDB();
camposInsert += "'" + camposObjeto.getNomeDB() + "'";
final String cond = (String) hashValores.get("COND_" + camposObjeto.getIdCamposObjetoNegocio());
String valor = (String) hashValores.get("VALOR_" + camposObjeto.getIdCamposObjetoNegocio());
if (!UtilStrings.nullToVazio(cond).trim().equalsIgnoreCase("") && !UtilStrings.nullToVazio(valor).trim().equalsIgnoreCase("")) {
sqlCondicao = sqlCondicao + " " + camposObjeto.getNomeDB();
if (cond != null && cond.equalsIgnoreCase("1")) {
sqlCondicao = sqlCondicao + " <> ";
} else if (cond != null && cond.equalsIgnoreCase("2")) {
sqlCondicao = sqlCondicao + " > ";
} else if (cond != null && cond.equalsIgnoreCase("3")) {
sqlCondicao = sqlCondicao + " < ";
} else {
sqlCondicao = sqlCondicao + " " + cond + " ";
}
final boolean isStringType = MetaUtil.isStringType(camposObjeto.getTipoDB());
if (isStringType) {
if (cond.equalsIgnoreCase("=") || cond.equalsIgnoreCase("1") || cond.equalsIgnoreCase("2") || cond.equalsIgnoreCase("3")) {
valor = valor.replaceAll("'", "");
valor = "'" + valor + "'";
}
}
if (cond != null && !cond.trim().equalsIgnoreCase("IS NULL")) {
sqlCondicao = sqlCondicao + valor;
}
}
}
}
String sqlFinal = "SELECT " + sqlCampos + " FROM " + objetoNegocioDTO.getNomeTabelaDB();
sqlDelete = "DELETE FROM " + objetoNegocioDTO.getNomeTabelaDB();
if (!sqlCondicao.trim().equalsIgnoreCase("")) {
if (filterAditional != null && !filterAditional.trim().equalsIgnoreCase("")) {
sqlFinal = sqlFinal + " WHERE " + sqlCondicao + " AND (" + filterAditional + ")";
sqlDelete = sqlDelete + " WHERE " + sqlCondicao + " AND (" + filterAditional + ")";
} else {
sqlFinal = sqlFinal + " WHERE " + sqlCondicao;
sqlDelete = sqlDelete + " WHERE " + sqlCondicao;
}
} else {
if (filterAditional != null && !filterAditional.trim().equalsIgnoreCase("")) {
sqlFinal = sqlFinal + " WHERE (" + filterAditional + ")";
sqlDelete = sqlDelete + " WHERE (" + filterAditional + ")";
}
}
if (order != null && !order.trim().equalsIgnoreCase("")) {
sqlFinal += " ORDER BY " + order;
}
String sqlDeleteAux = (String) hashValores.get("COMMANDDELETE");
String sqlExportAux = (String) hashValores.get("COMMAND");
if (!UtilStrings.nullToVazio(sqlDeleteAux).trim().equalsIgnoreCase("")) {
sqlDeleteAux = sqlDelete + "; " + UtilStrings.nullToVazio(sqlDeleteAux);
} else {
sqlDeleteAux = sqlDelete;
}
if (!UtilStrings.nullToVazio(sqlExportAux).trim().equalsIgnoreCase("")) {
sqlExportAux = sqlFinal + "; " + UtilStrings.nullToVazio(sqlExportAux);
} else {
sqlExportAux = sqlFinal;
}
hashValores.put("COMMANDDELETE", sqlDeleteAux);
hashValores.put("COMMAND", sqlExportAux);
final JdbcEngine jdbcEngine = new JdbcEngine(Constantes.getValue("DATABASE_ALIAS"), null);
List lst = null;
try {
lst = jdbcEngine.execSQL(sqlFinal, null, 0);
} catch (final Exception e) {
e.printStackTrace();
return new StringBuilder("OCORREU ERRO NA GERACAO DOS DADOS!" + e.getMessage());
}
final StringBuilder strSQL = new StringBuilder();
strSQL.append("");
sqlInsert = "INSERT INTO '" + objetoNegocioDTO.getNomeTabelaDB() + "' (" + camposInsert + ") VALUES (";
String keysProcessed = "";
if (lst != null) {
for (final Iterator itDados = lst.iterator(); itDados.hasNext();) {
strSQL.append(sqlInsert);
final Object[] obj = (Object[]) itDados.next();
int i = 0;
for (final Object element : col) {
final CamposObjetoNegocioDTO camposObjetoNegocioDto = (CamposObjetoNegocioDTO) element;
final boolean isStringType = MetaUtil.isStringType(camposObjetoNegocioDto.getTipoDB());
if (camposObjetoNegocioDto.getPk() != null && camposObjetoNegocioDto.getPk().equalsIgnoreCase("S")) {
if (!keysProcessed.trim().equalsIgnoreCase("")) {
keysProcessed = keysProcessed + ",";
}
if (isStringType) {
keysProcessed = keysProcessed + "'" + obj[i] + "'";
} else {
keysProcessed = keysProcessed + "" + obj[i] + "";
}
}
if (i != 0) {
strSQL.append(",");
}
if (isStringType && obj[i] != null) {
strSQL.append("'");
}
strSQL.append(obj[i]);
if (isStringType && obj[i] != null) {
strSQL.append("'");
}
i++;
}
strSQL.append(");\n");
}
}
hashValores.put("KEYS", keysProcessed);
return strSQL;
}
public StringBuilder geraRecursiveExportObjetoNegocioSql(final HashMap hashValores, final Integer idObjetoNegocio, final String sqlDelete, String nomeTabela,
final String filterAditional, final String order) throws ServiceException, Exception {
final StringBuilder strAux = this.geraExportObjetoNegocioSql(hashValores, idObjetoNegocio, sqlDelete, nomeTabela, filterAditional, order);
nomeTabela = (String) hashValores.get("NOMETABELADB");
final String tabelasTratadas = (String) hashValores.get("TABELASTRATADAS");
final String keysProcessed = (String) hashValores.get("KEYS");
final Collection colRelateds = this.getFks(nomeTabela);
System.out.println("Tratando FKS da Tabelas : " + nomeTabela);
if (colRelateds != null && colRelateds.size() > 0) {
final ObjetoNegocioService objetoNegocioService = (ObjetoNegocioService) ServiceLocator.getInstance().getService(ObjetoNegocioService.class, null);
for (final Iterator it = colRelateds.iterator(); it.hasNext();) {
final DataManagerFKRelatedDTO dataManagerFKRelatedDTO = (DataManagerFKRelatedDTO) it.next();
System.out.println(" Tabela FK : " + dataManagerFKRelatedDTO.getNomeTabelaRelacionada());
final ObjetoNegocioDTO objNegocioDto = objetoNegocioService.getByNomeTabelaDB(dataManagerFKRelatedDTO.getNomeTabelaRelacionada());
if (objNegocioDto != null) {
if (tabelasTratadas.indexOf(("'" + objNegocioDto.getNomeTabelaDB().trim() + "'").toUpperCase()) > -1) {
System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Tabela ja processada: " + objNegocioDto.getNomeTabelaDB());
continue;
}
String filter = "";
if (keysProcessed != null && !keysProcessed.trim().equalsIgnoreCase("")) {
filter = dataManagerFKRelatedDTO.getPartChild() + " IN (" + keysProcessed + ")";
System.out.println(" Tabela FK : " + dataManagerFKRelatedDTO.getNomeTabelaRelacionada() + " Processando... " + objNegocioDto.getNomeTabelaDB()
+ " Filtro: " + filter);
final StringBuilder strAux2 = this.geraRecursiveExportObjetoNegocioSql(hashValores, objNegocioDto.getIdObjetoNegocio(), sqlDelete,
dataManagerFKRelatedDTO.getNomeTabelaRelacionada(), filter, "");
strAux.append("\n");
strAux.append(strAux2);
}
}
}
}
return strAux;
}
public void exportarTudoSql(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception {
// DataManagerDTO dataManagerDTO = (DataManagerDTO) document.getBean();
final ObjetoNegocioService objetoNegocioService = (ObjetoNegocioService) ServiceLocator.getInstance().getService(ObjetoNegocioService.class, null);
final HashMap hashValores = this.getFormFields(request);
final StringBuilder str = new StringBuilder();
final String ORIGEM_SISTEMA = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.ORIGEM_SISTEMA, " ");
if (ORIGEM_SISTEMA == null || ORIGEM_SISTEMA.trim().equalsIgnoreCase("")) {
document.alert(UtilI18N.internacionaliza(request, "dataManager.infoorigemdados"));
document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide();
return;
}
final String nomeTabela = "";
final Collection colObjsNeg = objetoNegocioService.listAtivos();
if (colObjsNeg != null) {
for (final Iterator it = colObjsNeg.iterator(); it.hasNext();) {
final ObjetoNegocioDTO objetoNegocioDTO = (ObjetoNegocioDTO) it.next();
final String sqlDelete = "";
final StringBuilder strAux = this.geraExportObjetoNegocioSql(hashValores, objetoNegocioDTO.getIdObjetoNegocio(), sqlDelete, nomeTabela, "", "");
if (strAux != null) {
str.append(strAux);
}
}
}
String strAux = "";
strAux += "\n-- origem: " + ORIGEM_SISTEMA;
strAux += "\n-- Data: " + UtilDatas.dateToSTRWithFormat(UtilDatas.getDataAtual(), "dd/MM/yyyy hh:MM:ss") + "\n";
strAux += "\n" + str.toString();
strAux += "\n-- END SQL";
String strDateTime = new java.util.Date().toString();
strDateTime = strDateTime.replaceAll(" ", "_");
strDateTime = strDateTime.replaceAll(":", "_");
UtilTratamentoArquivos.geraFileTxtFromString(CITCorporeUtil.CAMINHO_REAL_APP + "/exportSQL/export_data_ALL_" + strDateTime + ".sql", strAux.toString());
document.alert(UtilI18N.internacionaliza(request, "dataManager.arquivoExportado"));
document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide();
document.executeScript("getFile('" + CITCorporeUtil.CAMINHO_REAL_APP + "/exportXML/export_data_ALL_" + strDateTime + ".sql', 'export_data_ALL_" + strDateTime + ".sql')");
}
public void carregaMetaDados(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception {
final DataBaseMetaDadosService data = (DataBaseMetaDadosService) ServiceLocator.getInstance().getService(DataBaseMetaDadosService.class, null);
final DataBaseMetaDadosUtil dataBaseMetaDadosUtil = new DataBaseMetaDadosUtil();
final VisaoDao visaoDao = new VisaoDao();
final Connection con = visaoDao.getTransactionControler().getConnection();
String DB_SCHEMA = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.DB_SCHEMA, "");
if (DB_SCHEMA == null || DB_SCHEMA.trim().equalsIgnoreCase("")) {
DB_SCHEMA = "citsmart";
}
// Desabilitando as tabelas para garantir que as que n�o existam mais n�o fiquem ativas
this.desabilitaTabelas();
final Collection colObsNegocio = dataBaseMetaDadosUtil.readTables(con, DB_SCHEMA, DB_SCHEMA, null, true);
con.close();
for (final Iterator it = colObsNegocio.iterator(); it.hasNext();) {
final ObjetoNegocioDTO objetoNegocioDTO = (ObjetoNegocioDTO) it.next();
System.out.println("-----: Objeto de Negocio: " + objetoNegocioDTO.getNomeTabelaDB());
final Collection colObjs = this.getObjetoNegocioService().findByNomeTabelaDB(objetoNegocioDTO.getNomeTabelaDB());
if (colObjs == null || colObjs.size() == 0) {
System.out.println("----------: Criando.... " + objetoNegocioDTO.getNomeTabelaDB());
this.getObjetoNegocioService().create(objetoNegocioDTO);
} else {
final ObjetoNegocioDTO objetoNegocioAux = (ObjetoNegocioDTO) ((List) colObjs).get(0);
objetoNegocioDTO.setIdObjetoNegocio(objetoNegocioAux.getIdObjetoNegocio());
System.out.println("----------: Atualizando.... " + objetoNegocioDTO.getNomeTabelaDB() + " Id Interno: " + objetoNegocioAux.getIdObjetoNegocio());
this.getObjetoNegocioService().update(objetoNegocioDTO);
}
}
data.corrigeTabelaComplexidade();
data.corrigeTabelaSla();
data.corrigeTabelaFluxoServico();
document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide();
this.load(document, request, response);
}
private ObjetoNegocioService getObjetoNegocioService() throws ServiceException, Exception {
if (objetoNegocioService == null) {
return (ObjetoNegocioService) ServiceLocator.getInstance().getService(ObjetoNegocioService.class, null);
}
return objetoNegocioService;
}
private void desabilitaTabelas() throws LogicException, ServiceException, Exception {
final Collection<ObjetoNegocioDTO> listObjetoNegocio = this.getObjetoNegocioService().list();
for (final ObjetoNegocioDTO objetoNegocioDTO : listObjetoNegocio) {
objetoNegocioDTO.setSituacao("I");
this.getObjetoNegocioService().updateDisable(objetoNegocioDTO);
}
}
}