package br.com.centralit.citcorpore.negocio; import java.sql.Connection; import java.util.Collection; import java.util.Iterator; import java.util.List; 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.util.CITCorporeUtil; import br.com.centralit.citcorpore.util.Enumerados; import br.com.centralit.citcorpore.util.ParametroUtil; import br.com.citframework.excecao.LogicException; import br.com.citframework.excecao.ServiceException; import br.com.citframework.integracao.CrudDAO; import br.com.citframework.service.CrudServiceImpl; import br.com.citframework.service.ServiceLocator; import br.com.citframework.util.SQLConfig; /** * * @author flavio.santana * */ public class DataBaseMetaDadosServiceEjb extends CrudServiceImpl implements DataBaseMetaDadosService { private ObjetoNegocioService objetoNegocioService; private CamposObjetoNegocioService camposObjetoNegocioService; @Override protected CrudDAO getDao() { return null; } @Override @SuppressWarnings("unchecked") public void corrigeTabelaComplexidade() throws ServiceException, Exception { final List<ObjetoNegocioDTO> respList = (List<ObjetoNegocioDTO>) this.getObjetoNegocioService().findByNomeTabelaDB("complexidade"); Integer idCampoNegContrato = null; Integer idCampoNegComplexidade = null; if (respList != null && !respList.isEmpty()) { for (final ObjetoNegocioDTO objetoNegocioDTO : respList) { final List<CamposObjetoNegocioDTO> listIdContrato = (List<CamposObjetoNegocioDTO>) this.getCamposObjetoNegocioService().findByIdObjetoNegocioAndNomeDB( objetoNegocioDTO.getIdObjetoNegocio(), "IDCONTRATO"); for (final CamposObjetoNegocioDTO camposObjetoNegocioDTO : listIdContrato) { idCampoNegContrato = camposObjetoNegocioDTO.getIdCamposObjetoNegocio(); } final List<CamposObjetoNegocioDTO> listComplexidade = (List<CamposObjetoNegocioDTO>) this.getCamposObjetoNegocioService().findByIdObjetoNegocioAndNomeDB( objetoNegocioDTO.getIdObjetoNegocio(), "COMPLEXIDADE"); for (final CamposObjetoNegocioDTO camposObjetoNegocioDTO2 : listComplexidade) { idCampoNegComplexidade = camposObjetoNegocioDTO2.getIdCamposObjetoNegocio(); } if (idCampoNegContrato != null && idCampoNegComplexidade != null) { this.getCamposObjetoNegocioService().updateComplexidade(idCampoNegContrato, idCampoNegComplexidade); } } } } @Override @SuppressWarnings("unchecked") public void corrigeTabelaSla() throws ServiceException, Exception { final List<ObjetoNegocioDTO> respList = (List<ObjetoNegocioDTO>) this.getObjetoNegocioService().findByNomeTabelaDB("SLAREQUISITOSLA"); Integer idCampoNegContrato = null; Integer idCampoNegComplexidade = null; if (respList != null && !respList.isEmpty()) { for (final ObjetoNegocioDTO objetoNegocioDTO : respList) { final List<CamposObjetoNegocioDTO> listIdContrato = (List<CamposObjetoNegocioDTO>) this.getCamposObjetoNegocioService().findByIdObjetoNegocioAndNomeDB( objetoNegocioDTO.getIdObjetoNegocio(), "IDREQUISITOSLA"); for (final CamposObjetoNegocioDTO camposObjetoNegocioDTO : listIdContrato) { idCampoNegContrato = camposObjetoNegocioDTO.getIdCamposObjetoNegocio(); } final List<CamposObjetoNegocioDTO> listComplexidade = (List<CamposObjetoNegocioDTO>) this.getCamposObjetoNegocioService().findByIdObjetoNegocioAndNomeDB( objetoNegocioDTO.getIdObjetoNegocio(), "IDACORDONIVELSERVICO"); for (final CamposObjetoNegocioDTO camposObjetoNegocioDTO2 : listComplexidade) { idCampoNegComplexidade = camposObjetoNegocioDTO2.getIdCamposObjetoNegocio(); } if (idCampoNegContrato != null && idCampoNegComplexidade != null) { this.getCamposObjetoNegocioService().updateComplexidade(idCampoNegContrato, idCampoNegComplexidade); } } } } @Override public void corrigeTabelaFluxoServico() throws Exception { final List<ObjetoNegocioDTO> respList = (List<ObjetoNegocioDTO>) this.getObjetoNegocioService().findByNomeTabelaDB("FLUXOSERVICO"); Integer idCampoNegServicoContrato = null; Integer idCampoNegIdTipoFluxo = null; Integer idCampoNegFase = null; if (respList != null && !respList.isEmpty()) { for (final ObjetoNegocioDTO objetoNegocioDTO : respList) { final List<CamposObjetoNegocioDTO> listIdServicoContrato = (List<CamposObjetoNegocioDTO>) this.getCamposObjetoNegocioService().findByIdObjetoNegocioAndNomeDB( objetoNegocioDTO.getIdObjetoNegocio(), "IDSERVICOCONTRATO"); for (final CamposObjetoNegocioDTO camposObjetoNegocioDTO : listIdServicoContrato) { idCampoNegServicoContrato = camposObjetoNegocioDTO.getIdCamposObjetoNegocio(); } final List<CamposObjetoNegocioDTO> listTipoFluxo = (List<CamposObjetoNegocioDTO>) this.getCamposObjetoNegocioService().findByIdObjetoNegocioAndNomeDB( objetoNegocioDTO.getIdObjetoNegocio(), "IDTIPOFLUXO"); for (final CamposObjetoNegocioDTO camposObjetoNegocioDTO2 : listTipoFluxo) { idCampoNegIdTipoFluxo = camposObjetoNegocioDTO2.getIdCamposObjetoNegocio(); } final List<CamposObjetoNegocioDTO> listFase = (List<CamposObjetoNegocioDTO>) this.getCamposObjetoNegocioService().findByIdObjetoNegocioAndNomeDB( objetoNegocioDTO.getIdObjetoNegocio(), "IDFASE"); for (final CamposObjetoNegocioDTO camposObjetoNegocioDTO2 : listFase) { idCampoNegFase = camposObjetoNegocioDTO2.getIdCamposObjetoNegocio(); } if (idCampoNegServicoContrato != null && idCampoNegIdTipoFluxo != null) { this.getCamposObjetoNegocioService().updateFluxoServico(idCampoNegServicoContrato, idCampoNegIdTipoFluxo, idCampoNegFase); } } } } @Override @SuppressWarnings("rawtypes") public Collection getDataBaseMetaDadosUtil() throws Exception { final DataBaseMetaDadosUtil dataBaseMetaDadosUtil = new DataBaseMetaDadosUtil(); final VisaoDao visaoDao = new VisaoDao(); Connection con = null; try { con = visaoDao.getTransactionControler().getConnection(); String DB_SCHEMA = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.DB_SCHEMA, ""); if (CITCorporeUtil.SGBD_PRINCIPAL.equalsIgnoreCase(SQLConfig.SQLSERVER)) { DB_SCHEMA = null; } else if (DB_SCHEMA == null || DB_SCHEMA.trim().equalsIgnoreCase("")) { DB_SCHEMA = "citsmart"; } final Collection colObsNegocio = dataBaseMetaDadosUtil.readTables(con, DB_SCHEMA, DB_SCHEMA, null, true); return colObsNegocio; } finally { con.close(); } } @Override @SuppressWarnings("rawtypes") @Deprecated public String carregaTodosMetaDados() 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 (CITCorporeUtil.SGBD_PRINCIPAL.equalsIgnoreCase(SQLConfig.SQLSERVER)) { DB_SCHEMA = null; } else 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(); String carregados = ""; if (!colObsNegocio.isEmpty()) { for (final Iterator it = colObsNegocio.iterator(); it.hasNext();) { final ObjetoNegocioDTO objetoNegocioDTO = (ObjetoNegocioDTO) it.next(); System.out.println("-----: Objeto de Negocio: " + objetoNegocioDTO.getNomeTabelaDB()); carregados += objetoNegocioDTO.getNomeTabelaDB() + "<br>"; 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); } } this.corrigeTabelaComplexidade(); this.corrigeTabelaSla(); this.corrigeTabelaFluxoServico(); carregados = "<b>Finalizado!</b> <br><b>Tabelas carregadas:</b> <br>" + carregados; } else { carregados += "N�o foi poss�vel carregar metadados para o Schema:" + DB_SCHEMA; } return carregados; } @Override @SuppressWarnings("rawtypes") public String carregaTodosMetaDados(final Collection colecao) throws Exception { // Desabilitando as tabelas para garantir que as que n�o existam mais n�o fiquem ativas this.desabilitaTabelas(); final Collection colObsNegocio = colecao; String carregados = ""; if (!colObsNegocio.isEmpty()) { for (final Iterator it = colObsNegocio.iterator(); it.hasNext();) { final ObjetoNegocioDTO objetoNegocioDTO = (ObjetoNegocioDTO) it.next(); System.out.println("-----: Objeto de Negocio: " + objetoNegocioDTO.getNomeTabelaDB()); carregados += objetoNegocioDTO.getNomeTabelaDB() + "<br>"; 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); } } this.corrigeTabelaComplexidade(); this.corrigeTabelaSla(); this.corrigeTabelaFluxoServico(); carregados = "<b>Finalizado!</b> <br><b>Tabelas carregadas:</b> <br>" + carregados; } return carregados; } @Override @SuppressWarnings("unchecked") public 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); } } private ObjetoNegocioService getObjetoNegocioService() throws ServiceException, Exception { if (objetoNegocioService == null) { return (ObjetoNegocioService) ServiceLocator.getInstance().getService(ObjetoNegocioService.class, null); } else { return objetoNegocioService; } } private CamposObjetoNegocioService getCamposObjetoNegocioService() throws ServiceException, Exception { if (camposObjetoNegocioService == null) { return (CamposObjetoNegocioService) ServiceLocator.getInstance().getService(CamposObjetoNegocioService.class, null); } else { return camposObjetoNegocioService; } } }