*/
package fr.gouv.finances.dgfip.xemelios.controls.core;
-import fr.gouv.finances.dgfip.xemelios.controls.core.models.ControlModel;
-import fr.gouv.finances.dgfip.xemelios.controls.core.models.DocumentControlModel;
-import fr.gouv.finances.dgfip.utils.Pair;
+import java.io.File;
import java.io.IOException;
+import java.net.URI;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Hashtable;
+import org.apache.log4j.Logger;
+import org.apache.log4j.helpers.Loader;
+
+import fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP01;
+import fr.gouv.finances.dgfip.utils.Pair;
+import fr.gouv.finances.dgfip.xemelios.controls.core.models.ControlModel;
+import fr.gouv.finances.dgfip.xemelios.controls.core.models.DocumentControlModel;
+
/**
- * public Anomalie(String idAnomalie,String controleID,String controleLibelle,String docID,String etatID,String elementID,String elementLibelle,String message,String regle,String severity,XPath xPathNameSpacise,Vector<String> xslParams)
+ * public Anomalie(String idAnomalie,String controleID,String
+ * controleLibelle,String docID,String etatID,String elementID,String
+ * elementLibelle,String message,String regle,String severity,XPath
+ * xPathNameSpacise,Vector<String> xslParams)
*
- * @param idAnomalie
+ * @param idAnomalie
* @param controleID
* @param controleLibelle
* @param docID
* @param xPath
* @param xslParams
*/
-public class Anomalie implements Comparable<Anomalie> {
-
- public static final String ANOMALY_NS_URI = "http://projets.admisource.gouv.fr/xemelios/namespaces#anomally";
- private String idAnomalie, // id auto generer avec IdGenerator
- controleID, // id du controle
- controleLibelle, // libelle du controle (dans le fichier de config).A recuperer par l'intermediaire du DocumentControlModel
- documentID, // id du document importé. A recuperer par l'intermediaire du DocumentControlModel
- etatID, // id de l'etat sur lequel porte l'anomalie.
- elementImportable, // balise (element importable)
- idElementImportable,// numéro de l'element importable sur lequel l'anomalie porte (obligatoire)
- elementEnAnomalie, // le localName (nom de la balise xml au moment de la creation de l'ano) du startElement
- libelleLien, // libelle du lien afficher pour l'anomalie dans l'affichage du rapport
- message, // message du controle.A recuperer par l'intermediaire du DocumentControlModel
- regle, // règle du controle.A recuperer par l'intermediaire du DocumentControlModel
- severity, // severity du controle.A recuperer par l'intermediaire du DocumentControlModel
- xPath; // xpath car une fois importer il faut pointer sur les éléments
- private Hashtable<String, Object> xslParams; // Hashtable< id du paramètre , valeur du paramètre >
- private ArrayList<Node> nodes;
- private boolean visible = true;
-
- public Anomalie(String idAnomalie,
- String controleID,
- String controleLibelle,
- String docID,
- String etatID,
- String elementImportable,
- String idElementImportable,
- String elementEnAnomalie,
- String libelleLien,
- String message,
- String regle,
- String severity,
- String xPath,
- Hashtable<String, Object> xslParams) {
- this.idAnomalie = idAnomalie;
- this.controleID = controleID;
- this.controleLibelle = controleLibelle;
- this.documentID = docID;
- this.etatID = etatID;
- this.elementImportable = elementImportable;
- this.idElementImportable = idElementImportable;
- this.elementEnAnomalie = elementEnAnomalie;
- this.libelleLien = libelleLien;
- this.message = message;
- this.regle = regle;
- this.severity = severity;
- this.xPath = xPath;
- this.xslParams = xslParams;
- this.nodes = new ArrayList<Node>();
- }
-
- /**
- *
- * @param idAnomalie
- * @param ctrl
- * @param docID
- * @param etatID
- * @param elementImportable
- * @param idElementImportable
- * @param elementEnAnomalie
- * @param libelleLien
- * @param message
- * @param regle
- * @param severity
- * @param xPath
- * @param xslParams
- */
- public Anomalie(String idAnomalie,
- ControlModel ctrl,
- String docID,
- String etatID,
- String elementImportable,
- String idElementImportable,
- String elementEnAnomalie,
- String libelleLien,
- String message,
- String regle,
- String severity,
- String xPath,
- Hashtable<String, Object> xslParams) {
- this.idAnomalie = idAnomalie;
- this.controleID = ctrl.getId();
- this.controleLibelle = ctrl.getLibelle();
- this.documentID = docID;
- this.etatID = etatID;
- this.elementImportable = elementImportable;
- this.idElementImportable = idElementImportable;
- this.elementEnAnomalie = elementEnAnomalie;
- this.libelleLien = libelleLien;
- this.message = message;
- this.regle = regle;
- this.severity = severity;
- this.xPath = xPath;
- this.xslParams = xslParams;
- this.nodes = new ArrayList<Node>();
- }
-
- public Anomalie(DocumentControlModel documentControleModel, String ctrlId) {
- this.idAnomalie = IdGenerator.nextId();
- this.controleID = documentControleModel.getControlById(ctrlId).getId();
- this.controleLibelle = documentControleModel.getControlById(ctrlId).getLibelle();
- this.documentID = documentControleModel.getDocumentId();
- this.regle = documentControleModel.getControlById(ctrlId).getRegle().getHtmlContent();
- this.severity = documentControleModel.getControlById(ctrlId).getSeverity();
- this.nodes = new ArrayList<Node>();
- }
-
- public void addNode(Node node) {
- nodes.add(node);
- }
-
- public void addNode(String nodeId) {
- nodes.add(new Node(nodeId));
- }
-
- public void addAll(Collection<Node> node) {
- this.nodes.addAll(node);
- }
-
- public String getSeverity() {
- return severity;
- }
-
- public Collection<Node> getNodes() {
- return nodes;
- }
-
- public String getControleID() {
- return controleID;
- }
-
- public void setControleID(String controleID) {
- this.controleID = controleID;
- }
-
- public String getControleLibelle() {
- return controleLibelle;
- }
-
- public void setControleLibelle(String controleLibelle) {
- this.controleLibelle = controleLibelle;
- }
-
- public String getDocumentID() {
- return documentID;
- }
-
- public void setDocumentID(String documentID) {
- this.documentID = documentID;
- }
-
- public String getelementImportable() {
- return elementImportable;
- }
-
- public void setelementImportable(String elementImportable) {
- this.elementImportable = elementImportable;
- }
-
- public String getelementEnAnomalie() {
- return elementEnAnomalie;
- }
-
- public void setelementEnAnomalie(String elementEnAnomalie) {
- this.elementEnAnomalie = elementEnAnomalie;
- }
-
- public String getEtatID() {
- return etatID;
- }
-
- public void setEtatID(String etatID) {
- this.etatID = etatID;
- }
-
- public String getIdAnomalie() {
- return idAnomalie;
- }
-
- public void setIdAnomalie(String idAnomalie) {
- this.idAnomalie = idAnomalie;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public void setFormatedMessage(String message, Object... args) {
- setMessage(String.format(message,args));
- }
-
- public String getRegle() {
- return regle;
- }
-
- public void setRegle(String regle) {
- this.regle = regle;
- }
-
- public String getXPath() {
- return xPath;
- }
-
- public void setxPath(String pathNameSpacise) {
- xPath = pathNameSpacise;
- }
-
- public Hashtable<String, Object> getXslParams() {
- return xslParams;
- }
-
- public void setXslParams(Hashtable<String, Object> xslParams) {
- this.xslParams = xslParams;
- }
-
- public void setSeverity(String severity) {
- this.severity = severity;
- }
-
- public String getElementEnAnomalie() {
- return elementEnAnomalie;
- }
-
- public void setElementEnAnomalie(String elementEnAnomalie) {
- this.elementEnAnomalie = elementEnAnomalie;
- }
-
- public String getElementImportable() {
- return elementImportable;
- }
-
- public void setElementImportable(String elementImportable) {
- this.elementImportable = elementImportable;
- }
-
- public String getIdElementImportable() {
- return idElementImportable;
- }
-
- public void setIdElementImportable(String idElementImportable) {
- this.idElementImportable = idElementImportable;
- }
-
- public String getLibelleLien() {
- return libelleLien;
- }
-
- public void setLibelleLien(String libelleLien) {
- this.libelleLien = libelleLien;
- }
-
- /**
- * @param other other doit être de type Anomalie !
- */
+public class Anomalie extends ControlReturn implements Comparable<Anomalie> {
+
+ public static final String ANOMALY_NS_URI = "http://projets.admisource.gouv.fr/xemelios/namespaces#anomally";
+
+ private final static Logger logger = Logger.getLogger(DEP01.class);
+
+ private String idAnomalie, // id auto generer avec IdGenerator
+ controleID, // id du controle
+ controleLibelle, // libelle du controle (dans le fichier de config).A recuperer par l'intermediaire du DocumentControlModel
+ documentID, // id du document importé. A recuperer par l'intermediaire du DocumentControlModel
+ etatID, // id de l'etat sur lequel porte l'anomalie.
+ elementImportable, // balise (element importable)
+ idElementImportable,// numéro de l'element importable sur lequel l'anomalie porte (obligatoire)
+ elementEnAnomalie, // le localName (nom de la balise xml au moment de la creation de l'ano) du startElement
+ libelleLien, // libelle du lien afficher pour l'anomalie dans l'affichage du rapport
+ message, // message du controle.A recuperer par l'intermediaire du DocumentControlModel
+ regle, // règle du controle.A recuperer par l'intermediaire du DocumentControlModel
+ severity, // severity du controle.A recuperer par l'intermediaire du DocumentControlModel
+ xPath; // xpath car une fois importer il faut pointer sur les éléments
+ private Hashtable<String, Object> xslParams; // Hashtable< id du paramètre , valeur du paramètre >
+ private ArrayList<Node> nodes;
+ private boolean visible = true;
+ private File tableReference = null;
+ private File documentationControle = null;
+
+ public Anomalie(String idAnomalie, String controleID,
+ String controleLibelle, String docID, String etatID,
+ String elementImportable, String idElementImportable,
+ String elementEnAnomalie, String libelleLien, String message,
+ String regle, String severity, String xPath,
+ Hashtable<String, Object> xslParams) {
+ this.idAnomalie = idAnomalie;
+ this.controleID = controleID;
+ this.controleLibelle = controleLibelle;
+ this.documentID = docID;
+ this.etatID = etatID;
+ this.elementImportable = elementImportable;
+ this.idElementImportable = idElementImportable;
+ this.elementEnAnomalie = elementEnAnomalie;
+ this.libelleLien = libelleLien;
+ this.message = message;
+ this.regle = regle;
+ this.severity = severity;
+ this.xPath = xPath;
+ this.xslParams = xslParams;
+ this.nodes = new ArrayList<Node>();
+ }
+
+ /**
+ *
+ * @param idAnomalie
+ * @param ctrl
+ * @param docID
+ * @param etatID
+ * @param elementImportable
+ * @param idElementImportable
+ * @param elementEnAnomalie
+ * @param libelleLien
+ * @param message
+ * @param regle
+ * @param severity
+ * @param xPath
+ * @param xslParams
+ */
+ public Anomalie(String idAnomalie, ControlModel ctrl, String docID,
+ String etatID, String elementImportable,
+ String idElementImportable, String elementEnAnomalie,
+ String libelleLien, String message, String regle, String severity,
+ String xPath, Hashtable<String, Object> xslParams) {
+ this.idAnomalie = idAnomalie;
+ this.controleID = ctrl.getId();
+ this.controleLibelle = ctrl.getLibelle();
+ this.documentID = docID;
+ this.etatID = etatID;
+ this.elementImportable = elementImportable;
+ this.idElementImportable = idElementImportable;
+ this.elementEnAnomalie = elementEnAnomalie;
+ this.libelleLien = libelleLien;
+ this.message = message;
+ this.regle = regle;
+ this.severity = severity;
+ this.xPath = xPath;
+ this.xslParams = xslParams;
+ this.nodes = new ArrayList<Node>();
+ }
+
+ public Anomalie(DocumentControlModel documentControleModel, String ctrlId) {
+ this.idAnomalie = IdGenerator.nextId();
+ this.controleID = documentControleModel.getControlById(ctrlId).getId();
+ this.controleLibelle = documentControleModel.getControlById(ctrlId).getLibelle();
+ this.documentID = documentControleModel.getDocumentId();
+ this.regle = documentControleModel.getControlById(ctrlId).getRegle().getHtmlContent();
+ this.severity = documentControleModel.getControlById(ctrlId).getSeverity();
+ this.nodes = new ArrayList<Node>();
+ this.tableReference = setTableReference(documentControleModel);
+ this.documentationControle = setDocumentationControle(documentControleModel);
+ }
+
+ private File setTableReference(DocumentControlModel dcm) {
+ File tabRef = null;
+ try {
+ String tableReferenceLocation = dcm.getTableReference();
+ if (tableReferenceLocation.toLowerCase().startsWith("http")) {
+ tabRef = new File(new URI(tableReferenceLocation));
+ }
+ tabRef = new File(Loader.getResource(tableReferenceLocation).toURI().toURL().toExternalForm());
+ } catch (Exception e) {
+ logger.error("Problème de recupération de la Table de reference !",e.getCause());
+ }
+ return tabRef;
+ }
+
+ private File setDocumentationControle(DocumentControlModel dcm) {
+ File doc = null;
+ try {
+ String tableReferenceLocation = dcm.getTableReference();
+ doc = new File(new URI(tableReferenceLocation));
+ } catch (Exception e) {
+ logger.error("Problème de recupération de la documentation du controle !",e.getCause());
+ }
+ return doc;
+ }
+
+ public void addNode(Node node) {
+ nodes.add(node);
+ }
+
+ public void addNode(String nodeId) {
+ nodes.add(new Node(nodeId));
+ }
+
+ public void addAll(Collection<Node> node) {
+ this.nodes.addAll(node);
+ }
+
+ @Override
+ public String getSeverity() {
+ return severity;
+ }
+
+ @Override
+ public ArrayList<Node> getNodes() {
+ return nodes;
+ }
+
+ @Override
+ public String getControleID() {
+ return controleID;
+ }
+
+ public void setControleID(String controleID) {
+ this.controleID = controleID;
+ }
+
+ @Override
+ public String getControleLibelle() {
+ return controleLibelle;
+ }
+
+ public void setControleLibelle(String controleLibelle) {
+ this.controleLibelle = controleLibelle;
+ }
+
+ public String getDocumentID() {
+ return documentID;
+ }
+
+ public void setDocumentID(String documentID) {
+ this.documentID = documentID;
+ }
+
+ public String getelementImportable() {
+ return elementImportable;
+ }
+
+ private File getTableReference() {
+ return this.tableReference;
+ }
+
+ private File getDocumentationControle() {
+ return this.documentationControle;
+ }
+
+ public void setelementImportable(String elementImportable) {
+ this.elementImportable = elementImportable;
+ }
+
+ public String getelementEnAnomalie() {
+ return elementEnAnomalie;
+ }
+
+ public void setelementEnAnomalie(String elementEnAnomalie) {
+ this.elementEnAnomalie = elementEnAnomalie;
+ }
+
+ public String getEtatID() {
+ return etatID;
+ }
+
+ public void setEtatID(String etatID) {
+ this.etatID = etatID;
+ }
+
+ @Override
+ public String getIdAnomalie() {
+ return idAnomalie;
+ }
+
+ public void setIdAnomalie(String idAnomalie) {
+ this.idAnomalie = idAnomalie;
+ }
+
+ @Override
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public void setFormatedMessage(String message, Object... args) {
+ setMessage(String.format(message, args));
+ }
+
+ @Override
+ public String getRegle() {
+ return regle;
+ }
+
+ public void setRegle(String regle) {
+ this.regle = regle;
+ }
+
+ public String getXPath() {
+ return xPath;
+ }
+
+ public void setxPath(String pathNameSpacise) {
+ xPath = pathNameSpacise;
+ }
+
+ public Hashtable<String, Object> getXslParams() {
+ return xslParams;
+ }
+
+ public void setXslParams(Hashtable<String, Object> xslParams) {
+ this.xslParams = xslParams;
+ }
+
+ public void setSeverity(String severity) {
+ this.severity = severity;
+ }
+
+ public String getElementEnAnomalie() {
+ return elementEnAnomalie;
+ }
+
+ public void setElementEnAnomalie(String elementEnAnomalie) {
+ this.elementEnAnomalie = elementEnAnomalie;
+ }
+
+ public String getElementImportable() {
+ return elementImportable;
+ }
+
+ public void setElementImportable(String elementImportable) {
+ this.elementImportable = elementImportable;
+ }
+
+ public String getIdElementImportable() {
+ return idElementImportable;
+ }
+
+ public void setIdElementImportable(String idElementImportable) {
+ this.idElementImportable = idElementImportable;
+ }
+
+ public String getLibelleLien() {
+ return libelleLien;
+ }
+
+ public void setLibelleLien(String libelleLien) {
+ this.libelleLien = libelleLien;
+ }
+
+ /**
+ * @param other
+ * other doit être de type Anomalie !
+ */
+ @Override
+ public int compareTo(Anomalie other) {
+ String id1 = ((Anomalie) other).getControleID();
+ String id2 = this.getControleID();
+
+ return id1.compareTo(id2);
+ }
+
+ @Override
+ public boolean isVisible() {
+ return visible;
+ }
+
+ public void setVisible(boolean visible) {
+ this.visible = visible;
+ }
+
@Override
- public int compareTo(Anomalie other) {
- String id1 = ((Anomalie) other).getControleID();
- String id2 = this.getControleID();
-
- return id1.compareTo(id2);
- }
-
- public boolean isVisible() {
- return visible;
- }
-
- public void setVisible(boolean visible) {
- this.visible = visible;
- }
-
- public void marshall(RapportWriter writer) {
- writer.openElement("Anomalie");
- writer.writeElement("Id", new Pair("V", getIdAnomalie()));
- writer.writeElement("Visibility", new Pair("V", isVisible() ? "visible" : "hidden"));
- writer.writeElement("IdCtrl", new Pair("V", getControleID()));
- writer.writeElement("LibelleCtrl", new Pair("V", getControleLibelle()));
- writer.writeElement("EtatId", new Pair("V", getEtatID()));
- writer.writeElement("ElementImportable", new Pair("V", getelementImportable()));
- writer.writeElement("IdElementImportable", new Pair("V", getIdElementImportable()));
- writer.writeElement("ElementEnAnomalie", new Pair("V", getelementEnAnomalie()));
- writer.writeElement("LibelleLien", new Pair("V", getLibelleLien()));
-
- writer.openElement("Message");
- writer.writeData("<![CDATA[");
- try {
- writer.getWriter().getWriter().write(getMessage());
- } catch(IOException ioEx) {
- // ignored
- }
- writer.writeData("]]>");
- writer.closeElement("Message");
-
- writer.openElement("Regle");
- writer.writeData("<![CDATA[");
- try {
- writer.getWriter().getWriter().write(getRegle());
- } catch(IOException ioEx) {
- // ignored
- }
- writer.writeData("]]>");
- writer.closeElement("Regle");
-
- writer.writeElement("Severity", new Pair("V", getSeverity()));
- if (getXPath() != null) {
- writer.writeElement("XPath", new Pair("V", getXPath()));
- }
- if (getXslParams() != null && getXslParams().size() > 0) {
- for (String key : getXslParams().keySet()) {
- String value = getXslParams().get(key).toString();
- writer.openElement("XslParam");
- writer.writeElement("Key", new Pair("V", key));
- writer.writeElement("Value", new Pair("V", value));
- writer.closeElement("XslParam");
- }
- }
- writer.closeElement("Anomalie");
- }
+ public void marshall(RapportWriter writer) {
+ writer.openElement("Anomalie");
+ writer.writeElement("Id", new Pair("V", getIdAnomalie()));
+ writer.writeElement("Visibility", new Pair("V", isVisible() ? "visible"
+ : "hidden"));
+ writer.writeElement("IdCtrl", new Pair("V", getControleID()));
+ writer.writeElement("LibelleCtrl", new Pair("V", getControleLibelle()));
+ writer.writeElement("EtatId", new Pair("V", getEtatID()));
+ writer.writeElement("ElementImportable", new Pair("V",
+ getelementImportable()));
+ writer.writeElement("IdElementImportable", new Pair("V",
+ getIdElementImportable()));
+ writer.writeElement("ElementEnAnomalie", new Pair("V",
+ getelementEnAnomalie()));
+ writer.writeElement("LibelleLien", new Pair("V", getLibelleLien()));
+
+ writer.openElement("Message");
+ writer.writeData("<![CDATA[");
+ try {
+ writer.getWriter().getWriter().write(getMessage());
+ } catch (IOException ioEx) {
+ // ignored
+ }
+ writer.writeData("]]>");
+ writer.closeElement("Message");
+
+ writer.openElement("Regle");
+ writer.writeData("<![CDATA[");
+ try {
+ writer.getWriter().getWriter().write(getRegle());
+ } catch (IOException ioEx) {
+ // ignored
+ }
+ writer.writeData("]]>");
+ writer.closeElement("Regle");
+
+ writer.writeElement("Severity", new Pair("V", getSeverity()));
+ if (getXPath() != null) {
+ writer.writeElement("XPath", new Pair("V", getXPath()));
+ }
+ if (getXslParams() != null && getXslParams().size() > 0) {
+ for (String key : getXslParams().keySet()) {
+ String value = getXslParams().get(key).toString();
+ writer.openElement("XslParam");
+ writer.writeElement("Key", new Pair("V", key));
+ writer.writeElement("Value", new Pair("V", value));
+ writer.closeElement("XslParam");
+ }
+ }
+ writer.closeElement("Anomalie");
+ }
}