package br.com.centralit.citgerencial.config;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collection;
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.GerencialPainelDTO;
import br.com.centralit.citgerencial.util.CITGerencialUtil;
public class GerencialGrupoPainelConfig {
private static final Logger LOGGER = Logger.getLogger(GerencialGrupoPainelConfig.class);
private Document doc = null;
public static Collection<GerencialPainelDTO> getItensGrupo(final String fileNameConfig) throws Exception {
LOGGER.info("GerencialGrupoPainelConfig File: " + fileNameConfig);
final GerencialGrupoPainelConfig gerencialGrupoPainelConfig = new GerencialGrupoPainelConfig();
InputStream iisGrupo = GerencialGrupoPainelConfig.class.getClassLoader().getResourceAsStream(fileNameConfig);
if (iisGrupo == null) {
iisGrupo = ClassLoader.getSystemResourceAsStream(fileNameConfig);
}
if (iisGrupo == null) {
final String strPath = CITGerencialUtil.caminho_real_app + "WEB-INF/classes/" + fileNameConfig;
FileInputStream fis = null;
try {
fis = new FileInputStream(strPath);
} catch (final Exception e) {}
iisGrupo = fis;
}
if (iisGrupo == null) {
iisGrupo = ClassLoader.getSystemResourceAsStream(fileNameConfig);
}
if (iisGrupo == null) {
iisGrupo = ClassLoader.getSystemClassLoader().getResourceAsStream(fileNameConfig);
}
if (iisGrupo == null) {
// Tenta pelo ClassLoader do Log4j. DESESPERO!
iisGrupo = LOGGER.getClass().getClassLoader().getResourceAsStream(fileNameConfig);
}
return gerencialGrupoPainelConfig.getItensGrupoPainel(iisGrupo, fileNameConfig);
}
public Collection<GerencialPainelDTO> getItensGrupoPainel(final InputStream iisGrupo, final String fileNameConfig) {
final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
try {
final DocumentBuilder builder = factory.newDocumentBuilder();
if (iisGrupo == null) {
throw new Exception("ARQUIVO (ITEM_INFORMACAO_CONFIG): " + fileNameConfig + " NAO ENCONTRADO!!!!!!!!!");
}
doc = builder.parse(iisGrupo);
return this.load();
} catch (final Exception e) {
e.printStackTrace();
doc = null;
return null;
}
}
public Collection<GerencialPainelDTO> load() {
if (doc == null) {
return null;
}
GerencialPainelDTO gerencialPainelDto = null;
final Collection<GerencialPainelDTO> colItens = new ArrayList<>();
final Node noRoot = doc.getChildNodes().item(0);
if (noRoot != null) {
for (int i = 0; i < noRoot.getChildNodes().getLength(); i++) {
final Node noSubItem = noRoot.getChildNodes().item(i);
if (noSubItem.getNodeName().equals("#text")) {
continue;
}
if (noSubItem.getNodeName().equals("#comment")) {
continue;
}
final NamedNodeMap map = noSubItem.getAttributes();
gerencialPainelDto = new GerencialPainelDTO();
gerencialPainelDto.setDescription(map.getNamedItem("description").getNodeValue());
gerencialPainelDto.setFileName(map.getNamedItem("file").getNodeValue());
colItens.add(gerencialPainelDto);
}
}
return colItens;
}
}