package br.com.centralit.citcorpore.util;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
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.citframework.util.Constantes;
public class RedirectQuestionarioConfig {
private static final Logger LOGGER = Logger.getLogger(RedirectQuestionarioConfig.class);
private static RedirectQuestionarioConfig singleton;
private Document doc = null;
private Collection redirectItens;
public static RedirectQuestionarioConfig getInstance() throws Exception {
if (singleton == null) {
String fileNameConfig = "redirectQuestionario.xml";
if (Constantes.getValue("REDIRECTQUESTIONARIO_CONFIG") != null && !Constantes.getValue("REDIRECTQUESTIONARIO_CONFIG").trim().equalsIgnoreCase("")){
fileNameConfig = Constantes.getValue("REDIRECTQUESTIONARIO_CONFIG");
}
InputStream questionarioConfigFile = RedirectQuestionarioConfig.class.getClassLoader().getResourceAsStream(fileNameConfig);
if (questionarioConfigFile == null){
questionarioConfigFile = new FileInputStream(CITCorporeUtil.CAMINHO_REAL_APP + "/WEB-INF/" + fileNameConfig);
}
if (questionarioConfigFile == null){
questionarioConfigFile = new FileInputStream(Constantes.getValue("CAMINHO_REDIRECTQUESTIONARIO_CONFIG") + fileNameConfig);
}
LOGGER.info("REDIRECTQUESTIONARIO_CONFIG: " + fileNameConfig);
singleton = new RedirectQuestionarioConfig(questionarioConfigFile, fileNameConfig);
}
return singleton;
}
public RedirectQuestionarioConfig(InputStream ioos, String fileNameConfig){
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder builder = factory.newDocumentBuilder();
if (ioos == null){
throw new Exception("ARQUIVO (REDIRECTQUESTIONARIO_CONFIG): " + fileNameConfig + " NAO ENCONTRADO!!!!!!!!!");
}
doc = builder.parse(ioos);
load();
} catch (Exception e) {
e.printStackTrace();
doc = null;
}
}
public void load(){
if (doc == null) return;
String aba = "", situacao = "", include = "";
redirectItens = new ArrayList();
RedirectQuestionarioItem item;
Node noRoot = doc.getChildNodes().item(0);
for(int j = 0; j < noRoot.getChildNodes().getLength(); j++){
Node noItem = noRoot.getChildNodes().item(j);
if(noItem.getNodeName().equals("#text")) continue;
NamedNodeMap map = noItem.getAttributes();
aba = map.getNamedItem("aba").getNodeValue();
situacao = map.getNamedItem("situacao").getNodeValue();
include = map.getNamedItem("include").getNodeValue();
include = include.replaceAll("\\{SERVER_ADDRESS\\}", Constantes.getValue("SERVER_ADDRESS"));
include = include.replaceAll("\\{CONTEXTO_APLICACAO\\}", Constantes.getValue("CONTEXTO_APLICACAO"));
item = new RedirectQuestionarioItem();
item.setAba(aba);
item.setSituacao(situacao);
item.setInclude(include);
redirectItens.add(item);
}
}
public Collection getRedirectItens() {
return redirectItens;
}
public void setRedirectItens(Collection redirectItens) {
this.redirectItens = redirectItens;
}
public String getIncludeCorrespondente(String aba, String situacao){
Collection colItens = getRedirectItens();
if (colItens != null){
for(Iterator it = colItens.iterator(); it.hasNext();){
RedirectQuestionarioItem item = (RedirectQuestionarioItem)it.next();
if (item.getAba().equalsIgnoreCase(aba) && item.getSituacao().equalsIgnoreCase(situacao)){
return item.getInclude();
}
}
}
return null;
}
}