package fr.gouv.finances.dgfip.xemelios.controls.core;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.Hashtable;
import java.util.Stack;
import javax.xml.namespace.NamespaceContext;
+import nu.xom.Document;
+
import org.apache.log4j.Logger;
import org.xml.sax.Attributes;
import org.xml.sax.ContentHandler;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ControlProvider;
import fr.gouv.finances.dgfip.utils.Pair;
import fr.gouv.finances.dgfip.utils.xml.XmlAttributesImpl;
import fr.gouv.finances.dgfip.xemelios.auth.UnauthorizedException;
public abstract class AbstractControlContentHandler extends DefaultHandler implements ContentHandler {
private static final Logger logger = Logger.getLogger(AbstractControlContentHandler.class);
+
+ private static final String ControlProviderId = "CTRLPROV";
protected Pair collectivite, budget;
public int MAX_ANOS = 300;
private ArrayList<AbstractUnitControl> controlsToCall;
+ private HashMap<String,AbstractUnitControl> controlsToCallById;
private DocumentControlModel docControlMod;
private String documentId;
private Hashtable<String, Object> hParams;
private String fileName;
private ControlProgressListener cpl;
ArrayList<AddOnModel> addOns = null;
+ private MessagesProvider messagesProvider = null;
+
- public void setControlProgressListener(ControlProgressListener cpl) {
+ public void setControlProgressListener(ControlProgressListener cpl) {
this.cpl = cpl;
}
vTotalAnomalies = new ArrayList<ControlReturn>();
stack = new Stack<String>();
controlsToCall = new ArrayList<AbstractUnitControl>();
+ controlsToCallById = new HashMap<String, AbstractUnitControl>();
+ messagesProvider = new MessagesProvider(docControlMod.getMessagesRessource());
hParams = parameters;
if (docCtrlMod.getEngine() != null) {
addOns = docCtrlMod.getEngine().getAddOns();
auc.setDocumentModel(docControlMod);
auc.setFileName(fileName);
controlsToCall.add(auc);
+ controlsToCallById.put(ctrlm.id, auc);
}
} catch (InstantiationException e) {
e.printStackTrace();
}
for (AbstractUnitControl auc : controlsToCall) {
try {
+ auc.setCch(this);
auc.startDocument();
} catch (SAXException saxEx) {
logger.debug("in startDocument cch !!!", saxEx);
public ControlProgressListener getControlProgressListener() {
return cpl;
}
+
+ /**
+ * @return the controlsToCall
+ */
+ public ArrayList<AbstractUnitControl> getControlsToCall() {
+ return controlsToCall;
+ }
+
+ public Document getTableReferenceResource(String ressourcePath){
+ return ((ControlProvider)controlsToCallById.get(ControlProviderId)).getTableReference(ressourcePath);
+ }
+
+ /**
+ * @return the messagesProvider
+ */
+ public MessagesProvider getMessagesProvider() {
+ return messagesProvider;
+ }
}
*/
package fr.gouv.finances.dgfip.xemelios.controls.core;
+import nu.xom.Document;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ControlProvider;
import fr.gouv.finances.dgfip.xemelios.controls.core.models.DocumentControlModel;
/**
private String fileName = null;
private DocumentControlModel docModel;
-
- private final int ETAT_EXECUTE_SANS_ANOS = 0;
+ private AbstractControlContentHandler cch;
+
+ private final int ETAT_EXECUTE_SANS_ANOS = 0;
private final int ETAT_EXECUTE_NON_APPLICABLE = 1;
- private int statusControle = ETAT_EXECUTE_SANS_ANOS;
+ private int statusControle = ETAT_EXECUTE_NON_APPLICABLE;
public int getStatusControle() {
return statusControle;
public String getMessageControle(String ctrlId){
return this.docModel.getControlById(ctrlId).getMessage().getContent();
}
+
+ /**
+ * @return the cch
+ */
+ public AbstractControlContentHandler getCch() {
+ return this.cch;
+ }
+
+ /**
+ * @param cch the cch to set
+ */
+ public void setCch(AbstractControlContentHandler cch) {
+ this.cch = cch;
+ }
}
this.regle = documentControleModel.getControlById(ctrlId).getRegle().getHtmlContent();
this.severity = documentControleModel.getControlById(ctrlId).getSeverity();
this.nodes = new ArrayList<Node>();
- this.tableReferenceUrl = documentControleModel.getTableReferenceUrl();
- this.tableReferenceResource = documentControleModel.getTableReferenceResource();
- this.documentationControle = documentControleModel.getUrlDocumentation();
+ this.tableReferenceUrl = documentControleModel.getControlById(ctrlId).getTableReferenceUrl();
+ this.tableReferenceResource = documentControleModel.getControlById(ctrlId).getTableReferenceResource();
+ this.documentationControle = documentControleModel.getControlById(ctrlId).getUrlDocumentation();
}
- private String setTableReference(DocumentControlModel dcm) {
- return dcm.getTableReferenceUrl();
+ private String setTableReference(DocumentControlModel dcm, String ctrlId) {
+ return dcm.getControlById(ctrlId).getTableReferenceUrl();
}
- private String setDocumentationControle(DocumentControlModel dcm) {
- return dcm.getUrlDocumentation();
+ private String setDocumentationControle(DocumentControlModel dcm, String ctrlId) {
+ return dcm.getControlById(ctrlId).getUrlDocumentation();
}
public void addNode(Node node) {
import org.xml.sax.SAXException;
import fr.gouv.finances.cp.utils.xml.marshal.XmlOutputter;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ControlProvider;
import fr.gouv.finances.dgfip.utils.HostUtils;
import fr.gouv.finances.dgfip.utils.Pair;
import fr.gouv.finances.dgfip.utils.xml.FactoryProvider;
--- /dev/null
+/*
+ * Copyright
+ * 2011 axYus - www.axyus.com
+ * 2011 JP.Tessier - jean-philippe.tessier@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package fr.gouv.finances.dgfip.xemelios.controls.core;
+
+import org.apache.log4j.Logger;
+
+import nu.xom.Builder;
+import nu.xom.Document;
+import nu.xom.Nodes;
+
+/**
+ * @author jp.tessier
+ *
+ */
+public class MessagesProvider {
+ private final static Logger logger = Logger.getLogger(MessagesProvider.class);
+ private Document messages;
+
+ public MessagesProvider(String pathMessagesFile){
+ Builder builder = new Builder();
+ try {
+ messages = builder.build(MessagesProvider.class.getClassLoader().getResourceAsStream(pathMessagesFile));
+ } catch (Exception e) {
+ logger.debug("Probleme de recuperation de la ressource des messages !");
+ }
+ }
+
+ public String getRegleFonctionnelle(String msgId){
+ Nodes nodes = messages.query("/messages/message[@id='"+msgId+"']/regleFonctionnelle");
+ return nodes.get(0).getValue();
+ }
+
+ public String getRegleTechnique(String msgId){
+ Nodes nodes = messages.query("/messages/message[@id='"+msgId+"']/regleTechnique");
+ return nodes.get(0).getValue();
+ }
+
+ public String getSeverity(String msgId){
+ Nodes nodes = messages.query("/messages/message[@id='"+msgId+"']/severity");
+ return nodes.get(0).getValue();
+ }
+}
public class ControlModel implements XmlMarshallable{
public static final transient String TAG = "control";
public static final transient QName QN = new QName(TAG);
- public String id, libelle, severity, classe;
+ public String id, libelle, severity, classe,urlDocumentation, tableReferenceUrl, tableReferenceResource;
public RegleModel regle;
public Vector<RefIdModel> params;
public MessageModel message;
+
//public Vector<ElementLieModel> elementsLies;
//elementsLies=new Vector<ElementLieModel>();
}
- public void addCharacterData(String cData) throws SAXException { }
+
+ public void addCharacterData(String cData) throws SAXException { }
public void addChild(XmlMarshallable child, QName tagName) throws SAXException {
if(RegleModel.QN.equals(tagName)) {
regle = (RegleModel)child;
libelle=attributes.getValue("libelle");
severity=attributes.getValue("severity");
classe=attributes.getValue("class");
+ urlDocumentation=attributes.getValue("url-documentation");
+ tableReferenceUrl=attributes.getValue("table-reference-url");
+ tableReferenceResource=attributes.getValue("table-reference-resource");
return this;
}
public void validate() throws InvalidXmlDefinition {
output.addAttribute("libelle",libelle);
output.addAttribute("severity",severity);
output.addAttribute("class",classe);
+ output.addAttribute("url-documentation",urlDocumentation);
+ output.addAttribute("table-reference-url",tableReferenceUrl);
+ output.addAttribute("table-reference-resource",tableReferenceResource);
+
if(regle!=null) regle.marshall(output);
for(RefIdModel pcm:params) pcm.marshall(output);
message.marshall(output);
public String getLibelle() {return libelle;}
public String getSeverity() {return severity;}
public String getClasse() {return classe;}
+ public String getUrlDocumentation() {return urlDocumentation;}
+ public String getTableReferenceUrl() {return tableReferenceUrl;}
+ public String getTableReferenceResource() {return tableReferenceResource;}
+
public RegleModel getRegle() {return regle;}
public RefIdModel getRefIdModel() {return params.firstElement();}
public MessageModel getMessage() {return message;}
cm.libelle = this.libelle;
cm.severity = this.severity;
cm.classe = this.classe;
+ cm.urlDocumentation = this.urlDocumentation;
+ cm.tableReferenceUrl = this.tableReferenceUrl;
+ cm.tableReferenceResource = this.tableReferenceResource;
+
cm.regle=regle.clone();
for(RefIdModel pcm:params) {
try {
public static final transient String TAG = "document";
public static final transient QName QN = new QName(TAG);
private String id;
- private String urlDocumentation;
- private String tableReferenceUrl;
- private String tableReferenceResource;
private String assistant;
private String valideur;
+ private String messagesRessource;
private Vector<ParamModel> params;
private ArrayList<ControlModelTech> controlsTech;
private ArrayList<ControlModel> controls;
@Override
public XmlMarshallable getAttributes(XmlAttributes attributes) throws SAXException {
id=attributes.getValue("id");
+ assistant=attributes.getValue("assistant");
+ valideur=attributes.getValue("valideurSaisie");
+ messagesRessource=attributes.getValue("messagesRessource");
return this;
}
@Override
public void marshall(XmlOutputter output) {
output.startTag (TAG);
output.addAttribute("id",id);
- output.addAttribute("urlDocumentation",urlDocumentation);
- output.addAttribute("tableReferenceUrl",tableReferenceUrl);
- output.addAttribute("tableReferenceResource",tableReferenceResource);
output.addAttribute("assistant",assistant);
output.addAttribute("valideurSaisie",valideur);
+ output.addAttribute("messagesRessource",messagesRessource);
+
if (message!=null) message.marshall(output);
if(collectivitePath!=null) collectivitePath.marshall(output);
if(budgetPath!=null) budgetPath.marshall(output);
}
public String getDocumentId() {return id;}
-
- public String getUrlDocumentation() {return urlDocumentation;}
-
- public String getTableReferenceUrl() {return tableReferenceUrl;}
-
- public String getTableReferenceResource() {return tableReferenceResource;}
-
+
public String getAssistant() {return assistant;}
public String getValideurSaisie() {return valideur;}
+ public String getMessagesRessource() {return messagesRessource;}
+
public ParamModel getParamById(String etatId) {
for(ParamModel param:params) {
if(param.getId().equals(etatId)) return param;
@Override
public DocumentControlModel clone() {
DocumentControlModel dcm = new DocumentControlModel(QN);
- dcm.id = this.id;
- dcm.urlDocumentation = this.urlDocumentation;
- dcm.tableReferenceUrl = this.tableReferenceUrl;
- dcm.tableReferenceResource = this.tableReferenceResource;
+ dcm.id = this.id;
dcm.assistant = this.assistant;
dcm.valideur = this.valideur;
+ dcm.messagesRessource = this.messagesRessource;
try {
if (this.message!=null) dcm.addChild(this.message, MessageRapportModel.QN);
} catch (Throwable t) {}