package net.conselldemallorca.helium.integracio.plugins.gis;
import java.net.URL;
import java.util.List;
import net.conselldemallorca.helium.core.util.GlobalProperties;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.Node;
/**
* Implementació de la interficie PersonesPlugin amb accés per JDBC.
*
* @author Miquel Angel Amengual <miquelaa@limit.es>
*/
public class GisPluginSitibsa implements GisPlugin {
public URL getUrlVisor() throws GisPluginException {
try {
String url = GlobalProperties.getInstance().getProperty("app.gis.plugin.sitibsa.url.visor");
//if (url != null && url.length() > 0)
return new URL(url);
//return null;
} catch (Exception ex) {
throw new GisPluginException("No s'ha pogut obtenir la url", ex);
}
}
public String getXMLExpedients(List<DadesExpedient> expedients) throws GisPluginException {
try {
if (expedients == null || expedients.size() == 0)
return null;
String urlBase = GlobalProperties.getInstance().getProperty("app.base.url");
Document document = DocumentHelper.createDocument();
Element root = document.addElement("msgExpedients");
Element exps = root.addElement("expedients");
Element estats = root.addElement("estats");
Element tipus = root.addElement("expedientsTipus");
for (DadesExpedient exp : expedients){
if (exp.getRefCatastral() != null && !exp.getRefCatastral().equals("")) {
Element expedient = exps.addElement("expedient");
expedient.addElement("refCatastral").addText(exp.getRefCatastral());
expedient.addElement("numero").addText(exp.getNumero() != null ? exp.getNumero() : " ");
expedient.addElement("titol").addText(exp.getTitol() != null ? exp.getTitol() : " ");
expedient.addElement("expedientTipusCodi").addText(exp.getExpedientTipusCodi() != null ? exp.getExpedientTipusCodi() : " ");
expedient.addElement("estatCodi").addText(exp.getEstatCodi() != null ? exp.getEstatCodi() : "INDEFINIT");
expedient.addElement("url").addText(urlBase + "/expedient/info.html?id=" + exp.getProcessInstanceId());
if (exp.getExpedientTipusCodi() != null) {
// comprovam que no existeixi el tipus d'expedient en el document
Node node = document.selectSingleNode( "//msgExpedients/expedientsTipus/expedientTipus[contains(codi, '" + exp.getExpedientTipusCodi() + "')]" );
if (node == null || !node.hasContent()){
Element tipusExp = tipus.addElement("expedientTipus");
tipusExp.addElement("codi").addText(exp.getExpedientTipusCodi());
tipusExp.addElement("nom").addText(exp.getExpedientTipusNom());
}
// comprovam que no existeixi l'estat en el document
if (exp.getEstatCodi() != null) {
node = document.selectSingleNode( "//msgExpedients/estats/estat[@expedientTipus='" + exp.getExpedientTipusCodi() +"' and contains(codi, '" + exp.getEstatCodi() + "')]" );
if (node == null || !node.hasContent()){
Element estat = estats.addElement("estat").addAttribute("expedientTipus", exp.getExpedientTipusCodi());
estat.addElement("codi").addText(exp.getEstatCodi());
estat.addElement("nom").addText(exp.getEstatNom());
}
} else {
node = document.selectSingleNode( "//msgExpedients/estats/estat[@expedientTipus='" + exp.getExpedientTipusCodi() +"' and contains(codi, 'INDEFINIT')]" );
if (node == null || !node.hasContent()){
Element estat = estats.addElement("estat").addAttribute("expedientTipus", exp.getExpedientTipusCodi());
estat.addElement("codi").addText("INDEFINIT");
estat.addElement("nom").addText("Indefinit");
}
}
}
}
}
return document.asXML();
} catch (Exception ex) {
throw new GisPluginException("No s'ha pogut trobar cap expedient", ex);
}
}
}