package br.com.centralit.citcorpore.util;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletException;
import net.sf.jasperreports.engine.DefaultJasperReportsContext;
import net.sf.jasperreports.engine.JRPropertiesUtil;
import org.apache.log4j.Logger;
import br.com.centralit.bpm.batch.ThreadVerificaEventos;
import br.com.centralit.citajax.util.CitAjaxUtil;
import br.com.centralit.citcorpore.batch.MonitoraAsterisk;
import br.com.centralit.citcorpore.batch.MonitoraAtivosDiscovery;
import br.com.centralit.citcorpore.batch.MonitoraImportacaoDeDados;
import br.com.centralit.citcorpore.batch.MonitoraIncidentes;
import br.com.centralit.citcorpore.batch.ThreadCarregaXmlProcessamentoBatch;
import br.com.centralit.citcorpore.batch.ThreadIniciaGaleriaImagens;
import br.com.centralit.citcorpore.batch.ThreadIniciaProcessamentosBatch;
import br.com.centralit.citcorpore.bean.AnexoBaseConhecimentoDTO;
import br.com.centralit.citcorpore.bean.AtividadesServicoContratoDTO;
import br.com.centralit.citcorpore.bean.BaseConhecimentoDTO;
import br.com.centralit.citcorpore.bean.EmpregadoDTO;
import br.com.centralit.citcorpore.bean.PalavraGemeaDTO;
import br.com.centralit.citcorpore.bean.ParametroCorporeDTO;
import br.com.centralit.citcorpore.bean.PerfilAcessoUsuarioDTO;
import br.com.centralit.citcorpore.bean.UsuarioDTO;
import br.com.centralit.citcorpore.comm.server.ServidorSocket;
import br.com.centralit.citcorpore.metainfo.bean.BibliotecasExternasDTO;
import br.com.centralit.citcorpore.metainfo.bean.ExternalClassDTO;
import br.com.centralit.citcorpore.metainfo.negocio.BibliotecasExternasService;
import br.com.centralit.citcorpore.negocio.AnexoBaseConhecimentoService;
import br.com.centralit.citcorpore.negocio.AtividadesServicoContratoService;
import br.com.centralit.citcorpore.negocio.BaseConhecimentoService;
import br.com.centralit.citcorpore.negocio.ContadorAcessoService;
import br.com.centralit.citcorpore.negocio.EmpregadoService;
import br.com.centralit.citcorpore.negocio.MenuService;
import br.com.centralit.citcorpore.negocio.PalavraGemeaService;
import br.com.centralit.citcorpore.negocio.ParametroCorporeService;
import br.com.centralit.citcorpore.negocio.PerfilAcessoMenuService;
import br.com.centralit.citcorpore.negocio.PerfilAcessoUsuarioService;
import br.com.centralit.citcorpore.negocio.ScriptsService;
import br.com.centralit.citcorpore.negocio.UsuarioService;
import br.com.centralit.citcorpore.negocio.VersaoService;
import br.com.centralit.citcorpore.util.Enumerados.ParametroSistema;
import br.com.centralit.citged.bean.ControleGEDDTO;
import br.com.centralit.citged.negocio.ControleGEDService;
import br.com.centralit.lucene.Lucene;
import br.com.centralit.nagios.MonitoraNagios;
import br.com.citframework.excecao.ServiceException;
import br.com.citframework.integracao.ConnectionProvider;
import br.com.citframework.service.ServiceLocator;
import br.com.citframework.util.Constantes;
import br.com.citframework.util.SQLConfig;
import br.com.citframework.util.UtilDatas;
import br.com.citframework.util.UtilI18N;
import br.com.citframework.util.UtilTratamentoArquivos;
import br.com.citframework.util.XmlReadLookup;
@SuppressWarnings("unchecked")
public class CorporeContextListener implements ServletContextListener {
private static final Logger LOGGER = Logger.getLogger(CorporeContextListener.class);
@Override
public void contextDestroyed(final ServletContextEvent event) {
}
/**
* Faz a inicializacao de elementos importantes do sistema.
*/
@Override
public void contextInitialized(final ServletContextEvent event) {
LOGGER.info("Iniciando CITSMart - In�cio");
String dir = event.getServletContext().getRealPath("/");
String strFinal = "";
for (int i = 0; i < dir.length(); i++) {
if (dir.charAt(i) == '\\') {
strFinal = strFinal + "/";
} else {
strFinal = strFinal + dir.charAt(i);
}
}
strFinal = strFinal.replaceAll("/./", "/");
if (!strFinal.equalsIgnoreCase("") && strFinal.length() > 0) {
if (strFinal.charAt(strFinal.length() - 1) != '\\' && strFinal.charAt(strFinal.length() - 1) != '/') {
strFinal = strFinal + "/";
}
}
dir = strFinal;
final Properties props = System.getProperties();
props.setProperty("user.dir", dir);
CitAjaxUtil.CAMINHO_REAL_APP = dir;
CITCorporeUtil.CAMINHO_REAL_APP = dir;
LOGGER.info("CITSMart - Caminho da APP: " + dir);
/*
* Rodrigo Pecci Acorse JBoss 4: Quando o jboss sobe como uma �nica inst�ncia: \jboss\server\default\conf\ Quando o jboss possui mais de uma inst�ncia: \jboss\server\<instancia>\conf\ JBoss 7:
* Outra propriedade � utilizada para recuperar o diret�rio de configura��o. Quando o jboss sobe como uma �nica inst�ncia: \jboss\standalone\configuration\ Quando � utilizado cluster, tem
* domains e hosts: \jboss\domain\configuration\
*/
try {
String serverConf = "";
File fConf;
serverConf = System.getProperty("jboss.server.config.dir");
fConf = new File(serverConf + "/citsmart.cfg");
if (!fConf.exists()) {
serverConf = System.getProperty("jboss.server.config.url");
fConf = new File(serverConf + "/citsmart.cfg");
}
if (fConf.exists()) {
CITCorporeUtil.CAMINHO_REAL_CONFIG_FILE = fConf.getAbsolutePath();
} else {
final String searchFind = "server";
int indexSearchWord = dir.indexOf(searchFind);
indexSearchWord = dir.indexOf("/", indexSearchWord + searchFind.length() + 1);
// Determina o diretorio de config, que pode ser /default/conf ou /all/conf ou /minimal/conf ou outro/<dir name>/conf
String pathConfigStartMode = dir.substring(0, indexSearchWord);
pathConfigStartMode += "/conf/citsmart.cfg";
CITCorporeUtil.CAMINHO_REAL_CONFIG_FILE = pathConfigStartMode;
}
} catch (final Exception e) {
final String searchFind = "server";
int indexSearchWord = dir.indexOf(searchFind);
indexSearchWord = dir.indexOf("/", indexSearchWord + searchFind.length() + 1);
// Determina o diretorio de config, que pode ser /default/conf ou /all/conf ou /minimal/conf ou outro/<dir name>/conf
String pathConfigStartMode = dir.substring(0, indexSearchWord);
pathConfigStartMode += "/conf/citsmart.cfg";
CITCorporeUtil.CAMINHO_REAL_CONFIG_FILE = pathConfigStartMode;
}
CITCorporeUtil.fazLeituraArquivoConfiguracao();
CITCorporeUtil.LIST_EXTERNAL_CLASSES = new ArrayList<>();
CITCorporeUtil.HSM_EXTERNAL_CLASSES = new HashMap<>();
LOGGER.info("CITSMart - Caminho server: " + CITCorporeUtil.CAMINHO_SERVIDOR);
CITCorporeUtil.SGBD_PRINCIPAL = AdaptacaoBD.getBancoUtilizado(); // este metodo atualizada o valor de CITCorporeUtil.SGBD_PRINCIPAL
LOGGER.info("CITSMart - SGBD da conexao principal: " + CITCorporeUtil.SGBD_PRINCIPAL);
final String packageName = "br.com.centralit.citcorpore.metainfo.complementos";
final ClassLoader classLoader = br.com.centralit.citcorpore.metainfo.complementos.ComplementoSLA.class.getClassLoader();
final String path = packageName.replace('.', '/');
try {
final Enumeration<URL> resources = classLoader.getResources(path);
final List<File> dirs = new ArrayList<File>();
while (resources.hasMoreElements()) {
final URL resource = resources.nextElement();
dirs.add(new File(resource.getFile()));
}
final List<ExternalClassDTO> classes = new ArrayList<>();
for (final File directory : dirs) {
try {
String temp = directory.getAbsolutePath();
temp = temp.replaceAll("%20", " ");
final File fileNovo = new File(temp);
classes.addAll(findClasses(fileNovo, packageName));
} catch (final ClassNotFoundException e) {
LOGGER.warn(e.getMessage(), e);
}
}
} catch (final IOException e) {
LOGGER.warn(e.getMessage(), e);
}
final ServletContext context = event.getServletContext();
this.iniciarProcessoInstalacao(context);
this.iniciarRotinaDeScripts();
this.carregarParametros();
LOGGER.info("CITSMart - Carregando Dicion�rios - In�cio");
UtilI18N.initialize();
LOGGER.info("CITSMart - Carregando Dicion�rios - Fim");
this.carregarBibliotecasExternas();
this.criarUsuarioConsultor();
XmlReadLookup.getInstance();
this.realizarCargaDeMenus();
final ThreadCarregaXmlProcessamentoBatch threadCarregaXmlProcessamentoBatch = new ThreadCarregaXmlProcessamentoBatch();
threadCarregaXmlProcessamentoBatch.start();
final ThreadIniciaProcessamentosBatch thread = new ThreadIniciaProcessamentosBatch();
thread.start();
final ThreadIniciaGaleriaImagens threadIniciaGaleriaImagens = new ThreadIniciaGaleriaImagens();
threadIniciaGaleriaImagens.start();
if (CITCorporeUtil.START_INVENTARIO_ANTIGO) {
final ServidorSocket servidor = new ServidorSocket();
servidor.start();
}
if (CITCorporeUtil.START_MONITORA_NAGIOS) {
final MonitoraNagios monitoraNagios = new MonitoraNagios();
monitoraNagios.start();
}
if (CITCorporeUtil.START_MONITORA_DISCOVERY) {
final MonitoraAtivosDiscovery monitoraAtivosDiscovery = new MonitoraAtivosDiscovery();
monitoraAtivosDiscovery.start();
}
if (CITCorporeUtil.START_MONITORA_INCIDENTES) {
final MonitoraIncidentes monitoraIncidentes = new MonitoraIncidentes();
monitoraIncidentes.start();
}
if (CITCorporeUtil.START_VERIFICA_EVENTOS) {
final ThreadVerificaEventos threadEventos = new ThreadVerificaEventos();
threadEventos.start();
}
this.definirParametrosJasperReport();
if (ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.SERVASTERISKATIVAR, "N").equals("S")) {
final MonitoraAsterisk monitoraAsterisk = new MonitoraAsterisk();
monitoraAsterisk.start();
}
this.criarAtualizarIndexPesquisaLucene();
this.atualizarFormulasAntigasOrdemDeServico();
LOGGER.info("Iniciando Citsmart - Fim");
}
/**
* Carrega bibliotecas externas.
*/
private void carregarBibliotecasExternas() {
LOGGER.info("CITSMart - Carregando bibliotecas externas - In�cio");
try {
final BibliotecasExternasService bibliotecasExternasService = (BibliotecasExternasService) ServiceLocator.getInstance().getService(BibliotecasExternasService.class, null);
final Collection<BibliotecasExternasDTO> colLibs = bibliotecasExternasService.list();
if (colLibs != null) {
for (final BibliotecasExternasDTO bibliotecasExternasDTO : colLibs) {
try {
final JarFile jarFile = new JarFile(bibliotecasExternasDTO.getCaminho());
this.generateClassesFromLib(jarFile, bibliotecasExternasDTO.getCaminho(), bibliotecasExternasDTO.getIdBibliotecasExterna());
} catch (final Exception e) {
LOGGER.warn(String.format("CITSMart - Problema ao carregar biblioteca externa %s: %s", bibliotecasExternasDTO.getCaminho(), e.getMessage()), e);
}
}
}
} catch (final Exception e) {
LOGGER.warn(e.getMessage(), e);
}
LOGGER.info("CITSMart - Carregando bibliotecas externas - Fim");
}
/**
* Realizar carga de menus � partir do XML.
*/
private void realizarCargaDeMenus() {
if (ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.LER_ARQUIVO_PADRAO_XML_MENUS, "S").trim().equalsIgnoreCase("S")) {
LOGGER.info("CITSMart - Carga do menu pelo arquivo xml padr�o - In�cio");
try {
final MenuService menuService = (MenuService) ServiceLocator.getInstance().getService(MenuService.class, null);
if (menuService != null) {
final String separator = System.getProperty("file.separator");
final String diretorioReceita = CITCorporeUtil.CAMINHO_REAL_APP + "XMLs" + separator;
final File file = new File(diretorioReceita + "menu.xml");
menuService.gerarCarga(file);
menuService.deletaMenusSemReferencia();
}
final PerfilAcessoMenuService perfilAcessoMenuService = (PerfilAcessoMenuService) ServiceLocator.getInstance().getService(PerfilAcessoMenuService.class, null);
perfilAcessoMenuService.atualizaPerfis();
} catch (final Exception e) {
LOGGER.warn("CITSMart - Erro ao carregar o arquivo xml padr�o de menu: ", e);
}
LOGGER.info("CITSMart - Carga do menu pelo arquivo xml padr�o - Fim");
}
}
/**
* Define parametros do JasperReport Caso n�o haja fonte no servidor para imprimir relat�rio, n�o vai dar exception
*/
private void definirParametrosJasperReport() {
final String fontePadrao = "SansSerif";
final DefaultJasperReportsContext contexto = DefaultJasperReportsContext.getInstance();
JRPropertiesUtil.getInstance(contexto).setProperty("net.sf.jasperreports.awt.ignore.missing.font", "true");
JRPropertiesUtil.getInstance(contexto).setProperty("net.sf.jasperreports.default.font.name", fontePadrao);
}
/**
* Verifica se ja foi feito a rotina de atualizar as f�rmulas antigas das Ordem de Servi�o
*
* @author bruno.aquino
*/
private void atualizarFormulasAntigasOrdemDeServico() {
if (ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.RECONFIGURAR_FORMULASOS_DASATIVIDADES, "S").equalsIgnoreCase("S")) {
try {
this.reconfigurarFormulaOS();
final ParametroCorporeService parametroCorporeService = (ParametroCorporeService) ServiceLocator.getInstance().getService(ParametroCorporeService.class, null);
ParametroCorporeDTO parametro = new ParametroCorporeDTO();
parametro.setId(229);
parametro = (ParametroCorporeDTO) parametroCorporeService.restore(parametro);
parametro.setValor("N");
parametroCorporeService.update(parametro);
} catch (final Exception e) {
LOGGER.warn("Problema na atualiza��o das formulas da OS: " + e.getMessage(), e);
}
}
}
/**
* Cria ou refaz todos os �ndices da pesquisa Lucene; ser� executado apenas uma vez ou quando o usu�rio setar "S" SIM para o par�metro: LUCENE_REFAZER_INDICES
*
* @author euler.ramos;
*/
private void criarAtualizarIndexPesquisaLucene() {
try {
final String refazerIndicesLucene = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.LUCENE_REFAZER_INDICES, "S");
if (refazerIndicesLucene.isEmpty() || refazerIndicesLucene.equals("S")) {
LOGGER.info("Realizando reindexa��o do Lucene - In�cio");
Lucene lucene = new Lucene();
Util.deleteDiretorioAndSubdiretorios(lucene.getDirBaseConhecimento()); // Destruindo �ndices corrompidos, quando o usu�rio solicita uma reindexa��o.
Util.deleteDiretorioAndSubdiretorios(lucene.getDirAnexos());
Util.createDiretorio(lucene.getDirBaseConhecimento());
Util.createDiretorio(lucene.getDirAnexos());
LOGGER.info("Realizando reindexa��o do Lucene - Base Conhecimento e Anexos ...");
final BaseConhecimentoService baseConhecimentoService = (BaseConhecimentoService) ServiceLocator.getInstance().getService(BaseConhecimentoService.class, null);
final AnexoBaseConhecimentoService anexoBaseConhecimentoService = (AnexoBaseConhecimentoService) ServiceLocator.getInstance().getService(AnexoBaseConhecimentoService.class, null);
final ControleGEDService controleGEDService = (ControleGEDService) ServiceLocator.getInstance().getService(ControleGEDService.class, null);
final Collection<BaseConhecimentoDTO> listaBaseConhecimento = baseConhecimentoService.listarBasesConhecimentoPublicadas();
// Tive que criar este "for" porque o Service n�o traz o DTO alimentado completamente em todos os campos
for (final BaseConhecimentoDTO baseConhecimentoDTO : listaBaseConhecimento) {
// Avalia��o - M�dia da nota dada pelos usu�rios
final Double media = baseConhecimentoService.calcularNota(baseConhecimentoDTO.getIdBaseConhecimento());
if (media != null) {
baseConhecimentoDTO.setMedia(media.toString());
} else {
baseConhecimentoDTO.setMedia(null);
}
final ContadorAcessoService contadorAcessoService = (ContadorAcessoService) ServiceLocator.getInstance().getService(ContadorAcessoService.class, null);
// Qtde de cliques
final Integer quantidadeDeCliques = contadorAcessoService.quantidadesDeAcessoPorBaseConhecimnto(baseConhecimentoDTO);
if (quantidadeDeCliques != null) {
baseConhecimentoDTO.setContadorCliques(quantidadeDeCliques);
} else {
baseConhecimentoDTO.setContadorCliques(0);
}
final List<AnexoBaseConhecimentoDTO> listaAnexosBaseConhecimento = (List<AnexoBaseConhecimentoDTO>) anexoBaseConhecimentoService
.consultarAnexosDaBaseConhecimento(baseConhecimentoDTO);
if (listaAnexosBaseConhecimento != null) {
// Obtendo o conte�do do Anexo diretamente do arquivo
for (final AnexoBaseConhecimentoDTO anexoBaseConhecimento : listaAnexosBaseConhecimento) {
final ControleGEDDTO controleGEDDTO = controleGEDService.getControleGED(anexoBaseConhecimento);
if (controleGEDDTO != null && controleGEDDTO.getIdControleGED() != null && controleGEDDTO.getIdControleGED() > 0 && controleGEDDTO.getNomeArquivo() != null
&& controleGEDDTO.getPasta() != null && controleGEDDTO.getExtensaoArquivo() != null) {
// Obtendo o conte�do do arquivo armazenado em disco! O Service n�o traz este campo preenchido no list
try {
final Arquivo arquivo = new Arquivo(controleGEDDTO);
anexoBaseConhecimento.setTextoDocumento(arquivo.getConteudo());
} catch (final Exception e) {
LOGGER.warn(e.getMessage(), e);
}
}
}
}
lucene.indexarBaseConhecimento(baseConhecimentoDTO, listaAnexosBaseConhecimento);
}
LOGGER.info("Realizando reindexa��o do Lucene - Palavras gemeas...");
final PalavraGemeaService palavraGemeaService = (PalavraGemeaService) ServiceLocator.getInstance().getService(PalavraGemeaService.class, null);
final Collection<PalavraGemeaDTO> listaPalavrasGemeas = palavraGemeaService.list();
lucene = new Lucene();
Util.deleteDiretorioAndSubdiretorios(lucene.getDirGemeas()); // Destruindo �ndices corrompidos, quando o usu�rio solicita uma reindexa��o.
Util.createDiretorio(lucene.getDirGemeas());
lucene.indexarListaPalavrasGemeas(listaPalavrasGemeas);
final ParametroCorporeService parametroCorporeService = (ParametroCorporeService) ServiceLocator.getInstance().getService(ParametroCorporeService.class, null);
final ParametroCorporeDTO parametroCorporeDTO = parametroCorporeService.getParamentroAtivo(ParametroSistema.LUCENE_REFAZER_INDICES.id());
parametroCorporeDTO.setValor("N");
parametroCorporeService.atualizarParametros(parametroCorporeDTO);
LOGGER.info("Realizando reindexa��o do Lucene - Fim");
}
/**
* Thread para importar os dados (ImportacaoDeDados)
*/
final String importaDados = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.HABILITAR_MIGRACAO_DE_DADOS_AUTOMATICA, "N");
if (importaDados.equalsIgnoreCase("S")) {
final Thread importacaoDeDados = new Thread(new MonitoraImportacaoDeDados());
importacaoDeDados.start();
}
} catch (final Exception e) {
LOGGER.warn("Problema na indexa��o Lucene: " + e.getMessage(), e);
}
}
/**
* Atualiza, Cria e Carrega Par�metros do Sistema.
*/
private void carregarParametros() {
LOGGER.info("CITSMart - Criando parametros novos - In�cio");
try {
final ParametroCorporeService parametroService = (ParametroCorporeService) ServiceLocator.getInstance().getService(ParametroCorporeService.class, null);
parametroService.criarParametrosNovos();
} catch (final Exception e) {
LOGGER.warn(e.getMessage(), e);
}
LOGGER.info("CITSMart - Criando parametros novos - Fim");
}
/**
* Aplica Scripts Novos de BD em atualiza��o de vers�o.
*/
private void iniciarRotinaDeScripts() {
LOGGER.info("CITSMart - Executando rotina de scripts - In�cio");
try {
final ScriptsService scriptsService = (ScriptsService) ServiceLocator.getInstance().getService(ScriptsService.class, null);
final VersaoService versaoService = (VersaoService) ServiceLocator.getInstance().getService(VersaoService.class, null);
final String erro = scriptsService.executaRotinaScripts();
if (erro != null && !erro.isEmpty()) {
LOGGER.info("CITSMart - Problema ao executar rotina. Detalhes:\n" + erro);
}
FiltroSegurancaCITSmart.setHaVersoesSemValidacao(versaoService.haVersoesSemValidacao());
} catch (final Exception e) {
LOGGER.warn(e.getMessage(), e);
}
LOGGER.info("CITSMart - Executando rotina de scripts - Fim");
}
/**
* Tratando a existencia de tabelas Adiciona na sess�o o parametro de instala��o
*
* @author flavio.santana
*/
private void iniciarProcessoInstalacao(final ServletContext context) {
try (Connection conn = ConnectionProvider.getConnection(Constantes.getValue("DATABASE_ALIAS"));) {
final DatabaseMetaData db_md = conn.getMetaData();
ResultSet res = null;
if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) {
/*
* Rodrigo Pecci Acorse - 06/12/2013 15h30 - #126457 Adiciona o usu�rio utilizado na conex�o para garantir que o oracle n�o ir� olhar para outras tabelas.
*/
String userName = null;
userName = conn.getMetaData().getUserName();
if (userName.equals("")) {
userName = null;
}
res = db_md.getTables(null, userName, "PARAMETROCORPORE", new String[] { "TABLE" });
} else {
res = db_md.getTables(null, null, "parametrocorpore", new String[] { "TABLE" });
}
if (!res.next()) {
context.setAttribute("instalacao", new ServletException("CITSMart Instalacao"));
}
final Map<Integer, String> dadosSGBD = new HashMap<>();
dadosSGBD.put(1, CITCorporeUtil.SGBD_PRINCIPAL);
dadosSGBD.put(2, conn.getMetaData().getURL());
dadosSGBD.put(3, conn.getMetaData().getSchemaTerm());
context.setAttribute("dadosSGBD", dadosSGBD);
} catch (final Exception e) {
LOGGER.warn(e.getMessage(), e);
}
}
/**
* Cria usu�rio Consultor caso n�o exista.
*/
private void criarUsuarioConsultor() {
try {
UsuarioDTO usuarioDTO = new UsuarioDTO();
final UsuarioService usuarioService = (UsuarioService) ServiceLocator.getInstance().getService(UsuarioService.class, null);
usuarioDTO.setLogin("consultor");
usuarioDTO = usuarioService.listLogin(usuarioDTO);
EmpregadoDTO empregadoDTO = new EmpregadoDTO();
final PerfilAcessoUsuarioDTO perfilAcessoUsuarioDTO = new PerfilAcessoUsuarioDTO();
final PerfilAcessoUsuarioService perfilAcessoUsuarioService = (PerfilAcessoUsuarioService) ServiceLocator.getInstance().getService(PerfilAcessoUsuarioService.class, null);
final EmpregadoService empregadoService = (EmpregadoService) ServiceLocator.getInstance().getService(EmpregadoService.class, null);
if (usuarioDTO == null) {
usuarioDTO = new UsuarioDTO();
empregadoDTO.setNome("Consultor");
empregadoDTO.setDataCadastro(UtilDatas.getDataAtual());
empregadoDTO.setNomeProcura("Consultor");
empregadoDTO.setTelefone("n�o disponivel");
empregadoDTO.setIdSituacaoFuncional(1);
empregadoDTO.setEmail("consultoria@centralit.com.br");
empregadoDTO = empregadoService.create(empregadoDTO);
String algoritmo = br.com.citframework.util.Constantes.getValue("ALGORITMO_CRIPTOGRAFIA_SENHA");
if (algoritmo == null || !algoritmo.trim().equalsIgnoreCase("")) {
algoritmo = "SHA-1";
}
usuarioDTO.setLogin("consultor");
usuarioDTO.setNomeUsuario("Consultor");
usuarioDTO.setSenha(CriptoUtils.generateHash("admgoiania516", algoritmo));
usuarioDTO.setDataInicio(UtilDatas.getDataAtual());
usuarioDTO.setIdEmpregado(empregadoDTO.getIdEmpregado());
usuarioDTO.setIdEmpresa(1);
usuarioDTO.setStatus("A");
usuarioService.create(usuarioDTO);
perfilAcessoUsuarioDTO.setDataInicio(UtilDatas.getDataAtual());
perfilAcessoUsuarioDTO.setIdPerfilAcesso(1);
perfilAcessoUsuarioDTO.setIdUsuario(usuarioDTO.getIdUsuario());
perfilAcessoUsuarioService.create(perfilAcessoUsuarioDTO);
}
} catch (final Exception e) {
LOGGER.warn(e.getMessage(), e);
}
}
private void generateClassesFromLib(final JarFile jar, final String pathJar, final Integer control) {
final Enumeration<JarEntry> e = jar.entries();
while (e.hasMoreElements()) {
final JarEntry jarFile = e.nextElement();
if (jarFile.getName().indexOf(".class") != -1) {
final ExternalClassDTO externalClassDTO = new ExternalClassDTO();
final String newNameJar = CITCorporeUtil.CAMINHO_REAL_APP + "WEB-INF/lib/LIBEXTCITCORPORE_" + control + ".jar";
UtilTratamentoArquivos.copyFile(pathJar, newNameJar);
externalClassDTO.setNameJar(newNameJar);
externalClassDTO.setNameJarOriginal(pathJar);
externalClassDTO.setNameClass(jarFile.getName());
if (externalClassDTO.getNameClass() != null) {
externalClassDTO.setNameClass(externalClassDTO.getNameClass().replaceAll("/", "."));
externalClassDTO.setNameClass(externalClassDTO.getNameClass().replaceAll(".class", ""));
}
CITCorporeUtil.LIST_EXTERNAL_CLASSES.add(externalClassDTO);
CITCorporeUtil.HSM_EXTERNAL_CLASSES.put(externalClassDTO.getNameClass(), newNameJar);
}
}
}
public void reconfigurarFormulaOS() throws ServiceException, Exception {
final AtividadesServicoContratoService atividadesServicoContratoService = (AtividadesServicoContratoService) ServiceLocator.getInstance().getService(AtividadesServicoContratoService.class,
null);
final List<AtividadesServicoContratoDTO> lista = (List<AtividadesServicoContratoDTO>) atividadesServicoContratoService.listarPorFormula();
if (lista != null && !lista.isEmpty()) {
for (AtividadesServicoContratoDTO atividadesServicoContratoDTO : lista) {
final String formulaBruta = atividadesServicoContratoDTO.getFormula();
final String array[] = formulaBruta.split("x");
String arrayAux[] = array;
String[] arrayAuxFormula = null;
String formula = "";
String estruturaFormula = "";
String formulaFinal = "";
double quantidade = 0;
if (!(atividadesServicoContratoDTO.getQuantidade() == null)) {
quantidade = atividadesServicoContratoDTO.getQuantidade();
}
// f�rmula que ser� visualizada
if (atividadesServicoContratoDTO.getPeriodo() != null && atividadesServicoContratoDTO.getPeriodo().equalsIgnoreCase("5")) {
arrayAux[2] = "Dias Corridos";
} else if (atividadesServicoContratoDTO.getPeriodo() != null && atividadesServicoContratoDTO.getPeriodo().equalsIgnoreCase("4")) {
arrayAux[2] = "Dias �teis";
}
formula = arrayAux[0] + " * " + arrayAux[1] + " * " + arrayAux[2];
// Estrutura da f�rmula
arrayAux = formulaBruta.split("x");
arrayAux[0] = "vValor{horas}";
arrayAux[1] = "vComplexidade";
if (atividadesServicoContratoDTO.getPeriodo() != null && atividadesServicoContratoDTO.getPeriodo().equalsIgnoreCase("5")) {
arrayAux[2] = "vDiasCorridos";
} else if (atividadesServicoContratoDTO.getPeriodo() != null && atividadesServicoContratoDTO.getPeriodo().equalsIgnoreCase("4")) {
arrayAux[2] = "vDiasUteis";
} else {
arrayAuxFormula = arrayAux[2].trim().split(" ");
arrayAuxFormula[0] = "{Quantidade}vValor";
arrayAux[2] = arrayAuxFormula[0] + "{Periodo}{" + arrayAuxFormula[1] + "}";
}
estruturaFormula = arrayAux[0] + "*" + arrayAux[1] + "*" + arrayAux[2];
// F�rmula para c�lculo
arrayAux = formulaBruta.split("x");
arrayAux[1] = atividadesServicoContratoDTO.getComplexidade();
if (quantidade == 0) {
if (atividadesServicoContratoDTO.getPeriodo() != null && atividadesServicoContratoDTO.getPeriodo().equalsIgnoreCase("5")) {
arrayAux[2] = "vDiasCorridos";
} else if (atividadesServicoContratoDTO.getPeriodo() != null && atividadesServicoContratoDTO.getPeriodo().equalsIgnoreCase("4")) {
arrayAux[2] = "vDiasUteis";
} else {
arrayAux[2] = "";
}
} else {
if (atividadesServicoContratoDTO.getPeriodo() != null && atividadesServicoContratoDTO.getPeriodo().equalsIgnoreCase("5")) {
arrayAux[2] = "vDiasCorridos";
} else if (atividadesServicoContratoDTO.getPeriodo() != null && atividadesServicoContratoDTO.getPeriodo().equalsIgnoreCase("4")) {
arrayAux[2] = "vDiasUteis";
} else {
arrayAuxFormula = arrayAux[2].trim().split(" ");
arrayAux[2] = arrayAuxFormula[0];
}
}
formulaFinal = arrayAux[0] + "*" + arrayAux[1] + "*" + arrayAux[2];
atividadesServicoContratoDTO = (AtividadesServicoContratoDTO) atividadesServicoContratoService.restore(atividadesServicoContratoDTO);
atividadesServicoContratoDTO.setEstruturaFormulaOs(estruturaFormula);
atividadesServicoContratoDTO.setFormula(formula);
atividadesServicoContratoDTO.setFormulaCalculoFinal(formulaFinal);
atividadesServicoContratoService.update(atividadesServicoContratoDTO);
}
}
}
private static List<ExternalClassDTO> findClasses(final File directory, final String packageName) throws ClassNotFoundException {
final List<ExternalClassDTO> classes = new ArrayList<>();
if (!directory.exists()) {
return classes;
}
final File[] files = directory.listFiles();
for (final File file : files) {
if (file.isDirectory()) {
assert !file.getName().contains(".");
classes.addAll(findClasses(file, packageName + "." + file.getName()));
} else if (file.getName().endsWith(".class")) {
final ExternalClassDTO externalClassDTO = new ExternalClassDTO();
externalClassDTO.setNameClass(packageName + '.' + file.getName());
externalClassDTO.setNameClass(externalClassDTO.getNameClass().replaceAll("/", "."));
externalClassDTO.setNameJar("CLASSES");
externalClassDTO.setNameJarOriginal("CLASSES");
CITCorporeUtil.LIST_EXTERNAL_CLASSES.add(externalClassDTO);
CITCorporeUtil.HSM_EXTERNAL_CLASSES.put(externalClassDTO.getNameClass(), "CLASSES");
}
}
return classes;
}
}