package br.com.centralit.citgerencial.util; import java.io.FileInputStream; import java.io.InputStream; import java.util.ArrayList; import java.util.Collection; import javax.servlet.http.HttpServletRequest; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.apache.log4j.Logger; import org.w3c.dom.Document; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import br.com.centralit.citgerencial.bean.ParametroDTO; import br.com.centralit.citgerencial.integracao.ParametroDao; import br.com.citframework.dto.Usuario; import br.com.citframework.util.Constantes; public final class ParametrosConfig { private static final Logger LOGGER = Logger.getLogger(ParametrosConfig.class); private static ParametrosConfig SINGLETON; private static InputStream INPUT_STREAM_SETTED_IN_LOAD = null; private Document doc = null; private Collection<ItemConfiguracaoParametro> lstParametros; private Collection<GrupoConfiguracaoParametro> lstGruposParametros; public static ParametrosConfig getInstance() throws Exception { if (SINGLETON == null) { String fileNameConfig = "cfgParametros.xml"; if (Constantes.getValue("PARAMETROS_CONFIG") != null && !Constantes.getValue("PARAMETROS_CONFIG").trim().equalsIgnoreCase("")) { fileNameConfig = Constantes.getValue("PARAMETROS_CONFIG"); } InputStream parametrosConfigFile = ParametrosConfig.class.getClassLoader().getResourceAsStream(fileNameConfig); if (parametrosConfigFile == null) { parametrosConfigFile = ClassLoader.getSystemResourceAsStream(fileNameConfig); if (parametrosConfigFile == null) { parametrosConfigFile = ClassLoader.getSystemClassLoader().getResourceAsStream(fileNameConfig); if (parametrosConfigFile == null) { try { parametrosConfigFile = new FileInputStream(Constantes.getValue("CAMINHO_PARAMETROS_CONFIG") + fileNameConfig); } catch (final Exception e) { e.printStackTrace(); LOGGER.error(e); // Se der errado, tenta por ultimo pegar informacoes do carregamento do sistema, se houver. parametrosConfigFile = INPUT_STREAM_SETTED_IN_LOAD; } } } } LOGGER.info("PARAMETROS_CONFIG: " + fileNameConfig); SINGLETON = new ParametrosConfig(parametrosConfigFile, fileNameConfig); } return SINGLETON; } private ParametrosConfig(final InputStream ioos, final String fileNameConfig) { final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); try { final DocumentBuilder builder = factory.newDocumentBuilder(); if (ioos == null) { throw new Exception("ARQUIVO (PARAMETROS_CONFIG): " + fileNameConfig + " NAO ENCONTRADO!!!!!!!!!"); } doc = builder.parse(ioos); this.load(); } catch (final Exception e) { e.printStackTrace(); doc = null; } } public void load() { if (doc == null) { return; } String name = "", description = ""; lstParametros = new ArrayList<>(); lstGruposParametros = new ArrayList<>(); final Node noRoot = doc.getChildNodes().item(0); for (int j = 0; j < noRoot.getChildNodes().getLength(); j++) { final Node noItem = noRoot.getChildNodes().item(j); if (noItem.getNodeName().equals("#text")) { continue; } if (noItem.getNodeName().equalsIgnoreCase("grupo")) { final NamedNodeMap map = noItem.getAttributes(); name = map.getNamedItem("name").getNodeValue(); description = map.getNamedItem("description").getNodeValue(); final GrupoConfiguracaoParametro grupoConfiguracaoParametro = new GrupoConfiguracaoParametro(); grupoConfiguracaoParametro.setName(name); grupoConfiguracaoParametro.setDescription(description); lstGruposParametros.add(grupoConfiguracaoParametro); for (int i = 0; i < noItem.getChildNodes().getLength(); i++) { final Node noItemParm = noItem.getChildNodes().item(i); if (noItemParm.getNodeName().equals("#text")) { continue; } if (noItemParm.getNodeName().equalsIgnoreCase("parametro")) { final NamedNodeMap mapItem = noItemParm.getAttributes(); final ItemConfiguracaoParametro itemConfiguracaoParametro = new ItemConfiguracaoParametro(); itemConfiguracaoParametro.setGrupoName(name); itemConfiguracaoParametro.setGrupoDescription(description); final String modulo = mapItem.getNamedItem("modulo").getNodeValue(); final String nameParm = mapItem.getNamedItem("name").getNodeValue(); final String type = mapItem.getNamedItem("type").getNodeValue(); final String size = mapItem.getNamedItem("size").getNodeValue(); final String valorDefault = mapItem.getNamedItem("default").getNodeValue(); final String descriptionParm = mapItem.getNamedItem("description").getNodeValue(); itemConfiguracaoParametro.setModulo(modulo); itemConfiguracaoParametro.setName(nameParm); itemConfiguracaoParametro.setType(type); itemConfiguracaoParametro.setSize(size); itemConfiguracaoParametro.setValorDefault(valorDefault); itemConfiguracaoParametro.setDescription(descriptionParm); lstParametros.add(itemConfiguracaoParametro); for (int z = 0; z < noItemParm.getChildNodes().getLength(); z++) { final Node noItemCombo = noItemParm.getChildNodes().item(z); if (noItemCombo.getNodeName().equals("#text")) { continue; } if (noItemCombo.getNodeName().equalsIgnoreCase("item")) { final NamedNodeMap mapItemCombo = noItemCombo.getAttributes(); final String value = mapItemCombo.getNamedItem("value").getNodeValue(); final String descriptionItem = mapItemCombo.getNamedItem("description").getNodeValue(); final ItemComboParametro item = new ItemComboParametro(); item.setValue(value); item.setDescription(descriptionItem); itemConfiguracaoParametro.getColItens().add(item); } } } } } } } public Collection<ItemConfiguracaoParametro> getLstParametros() { return lstParametros; } public void setLstParametros(final Collection<ItemConfiguracaoParametro> lstParametros) { this.lstParametros = lstParametros; } public Collection<GrupoConfiguracaoParametro> getLstGruposParametros() { return lstGruposParametros; } public void setLstGruposParametros(final Collection<GrupoConfiguracaoParametro> lstGruposParametros) { this.lstGruposParametros = lstGruposParametros; } public String getValueStr(final HttpServletRequest request, final String moduloParm, final String nomeParametroParm) throws Exception { final Usuario usuario = (Usuario) request.getSession(true).getAttribute("USUARIO_SESSAO"); Integer idEmpresaParm = null; try { idEmpresaParm = usuario.getIdEmpresa(); } catch (final Exception e) { idEmpresaParm = new Integer(1); } final ParametroDao parametroDao = new ParametroDao(); final ParametroDTO parametroDTO = parametroDao.getValue(moduloParm, nomeParametroParm, idEmpresaParm); if (parametroDTO == null) { return null; } return parametroDTO.getValor(); } public String getValueStr(final Integer idEmpresa, final String moduloParm, final String nomeParametroParm) throws Exception { final ParametroDao parametroDao = new ParametroDao(); final ParametroDTO parametroDTO = parametroDao.getValue(moduloParm, nomeParametroParm, idEmpresa); if (parametroDTO == null) { return null; } return parametroDTO.getValor(); } public String getDetalhamentoStr(final HttpServletRequest request, final String moduloParm, final String nomeParametroParm) throws Exception { final Usuario usuario = (Usuario) request.getSession(true).getAttribute("USUARIO_SESSAO"); Integer idEmpresaParm = null; try { idEmpresaParm = usuario.getIdEmpresa(); } catch (final Exception e) { idEmpresaParm = new Integer(1); } final ParametroDao parametroDao = new ParametroDao(); final ParametroDTO parametroDTO = parametroDao.getValue(moduloParm, nomeParametroParm, idEmpresaParm); if (parametroDTO == null) { return null; } return parametroDTO.getDetalhamento(); } }