*/
package fr.gouv.finances.dgfip.xemelios.controls.core;
-import java.io.PrintWriter;
-import java.io.StringWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Hashtable;
+import java.util.LinkedList;
+import java.util.List;
import java.util.Stack;
import java.util.Vector;
private String documentId;
private Hashtable<String, Object> hParams;
private Stack<String> stack;
- // protected MainWindow owner;
- private ArrayList<ControlReturn> anos = new ArrayList<ControlReturn>();
- private ArrayList<ControlReturn> vTotalAnomalies;
- private ArrayList<Pair> vControlStatus;
+ private List<ControlReturn> vTotalAnomalies;
private SaxXmlWriter saxXmlWriter;
private NamespaceContext nsCtx;
public boolean importInterupted = false;
private MessagesProvider messagesProvider = null;
private Vector<Pair> donneesFlux = null;
- public void setControlProgressListener(ControlProgressListener cpl) {
+ public void setControlProgressListener(final ControlProgressListener cpl) {
this.cpl = cpl;
}
- public AbstractControlContentHandler(String documentId, NamespaceContext nsCtx, DocumentControlModel docCtrlMod, Hashtable<String, Object> parameters, String file, ControlProgressListener cpl) {
+ public AbstractControlContentHandler(final String documentId, final NamespaceContext nsCtx, final DocumentControlModel docCtrlMod, final Hashtable<String, Object> parameters, final String file, final ControlProgressListener cpl) {
super();
- setControlProgressListener(cpl);
+ this.setControlProgressListener(cpl);
this.documentId = documentId;
this.docControlMod = docCtrlMod;
this.fileName = file;
this.nsCtx = nsCtx;
- vTotalAnomalies = new ArrayList<ControlReturn>();
- vControlStatus = new ArrayList<Pair>();
- stack = new Stack<String>();
- controlsToCall = new ArrayList<AbstractUnitControl>();
- controlsToCallById = new HashMap<String, AbstractUnitControl>();
- messagesProvider = new MessagesProvider(docControlMod.getMessagesRessource());
- hParams = parameters;
+ this.vTotalAnomalies = new LinkedList<ControlReturn>();
+ this.stack = new Stack<String>();
+ this.controlsToCall = new ArrayList<AbstractUnitControl>();
+ this.controlsToCallById = new HashMap<String, AbstractUnitControl>();
+ this.messagesProvider = new MessagesProvider(this.docControlMod.getMessagesRessource());
+ this.hParams = parameters;
if (docCtrlMod.getEngine() != null) {
- addOns = docCtrlMod.getEngine().getAddOns();
+ this.addOns = docCtrlMod.getEngine().getAddOns();
}
- if (addOns == null) {
- addOns = new ArrayList<AddOnModel>();
+ if (this.addOns == null) {
+ this.addOns = new ArrayList<AddOnModel>();
}
- for (AddOnModel addOn : addOns) {
+ for (final AddOnModel addOn : this.addOns) {
addOn.getProcessor().setNamespaceContext(nsCtx);
}
// Le premier contrôle lit le code collectivité ainsi que le code budgétaire.
try {
- COLLBUDG cbc = new COLLBUDG();
- cbc.setDocumentModel(docControlMod);
+ final COLLBUDG cbc = new COLLBUDG();
+ cbc.setDocumentModel(this.docControlMod);
cbc.setCch(this);
cbc.setColl_path(docCtrlMod.getCollectivitePath().getCodePath().getPath());
cbc.setColl_lib(docCtrlMod.getCollectivitePath().getLibellePath().getPath());
cbc.setBudg_path(docCtrlMod.getBudgetPath().getCodePath().getPath());
cbc.setBudg_lib(docCtrlMod.getBudgetPath().getLibellePath().getPath());
- controlsToCall.add(cbc);
- } catch (Exception e) {
- logger.error(e, e);
+ this.controlsToCall.add(cbc);
+ } catch (final Exception e) {
+ AbstractControlContentHandler.logger.error(e, e);
}
- for (ControlModel ctrlm : docCtrlMod.getControls()) {
+
+ Object o = null;
+ for (final ControlModel ctrlm : docCtrlMod.getControls()) {
try {
- Object o = new Object();
if (!ctrlm.id.startsWith("TECH")) {
o = Class.forName(ctrlm.getClasse()).newInstance();
+
+ if (o instanceof AbstractUnitControl) {
+ final AbstractUnitControl auc = (AbstractUnitControl) o;
+ auc.setParameters(this.getParameters());
+ auc.setDocumentModel(this.docControlMod);
+ auc.setFileName(this.fileName);
+ this.controlsToCall.add(auc);
+ this.controlsToCallById.put(ctrlm.id, auc);
+ }
}
- if (o instanceof AbstractUnitControl) {
- AbstractUnitControl auc = (AbstractUnitControl) o;
- auc.setParameters(getParameters());
- auc.setDocumentModel(docControlMod);
- auc.setFileName(fileName);
- controlsToCall.add(auc);
- controlsToCallById.put(ctrlm.id, auc);
- }
- } catch (Exception e) {
- logger.error(e, e);
+ } catch (final Exception e) {
+ AbstractControlContentHandler.logger.error(e, e);
}
}
}
- public void setFileName(String fileName) {
- for (AbstractUnitControl auc : controlsToCall) {
+ public void setFileName(final String fileName) {
+ for (final AbstractUnitControl auc : this.controlsToCall) {
auc.setFileName(fileName);
}
}
@Override
public void startDocument() throws SAXException {
- for (AddOnModel addOn : addOns) {
- if (addOn.isConcernedBy(Processor.EVENT.START_DOCUMENT, null, null, null))
+ for (final AddOnModel addOn : this.addOns) {
+ if (addOn.isConcernedBy(Processor.EVENT.START_DOCUMENT, null, null, null)) {
addOn.process(Processor.EVENT.START_DOCUMENT);
+ }
}
- for (AbstractUnitControl auc : controlsToCall) {
+ for (final AbstractUnitControl auc : this.controlsToCall) {
try {
auc.setCch(this);
auc.startDocument();
- } catch (SAXException saxEx) {
- logger.error("in startDocument cch !!!", saxEx);
+ } catch (final SAXException saxEx) {
+ AbstractControlContentHandler.logger.error("in startDocument cch !!!", saxEx);
}
}
- saxXmlWriter.startDocument();
+ this.saxXmlWriter.startDocument();
}
@Override
- public void startElement(String uri, String localName, String qName, Attributes atts) throws SAXException {
- stack.push(localName);
- getXpathExpression();
- XmlAttributesImpl attrs = new XmlAttributesImpl();
+ public void startElement(final String uri, final String localName, final String qName, final Attributes atts) throws SAXException {
+ this.stack.push(localName);
+ // this.getXpathExpression();
+ final XmlAttributesImpl attrs = new XmlAttributesImpl();
for (int i = 0; i < atts.getLength(); i++) {
attrs.addAttribute(atts.getURI(i), atts.getLocalName(i), atts.getQName(i), atts.getType(i), atts.getValue(i));
}
- if (stack.size() == 1) {
- saxXmlWriter.startPrefixMapping(nsCtx.getPrefix(Anomalie.ANOMALY_NS_URI), Anomalie.ANOMALY_NS_URI);
+ if (this.stack.size() == 1) {
+ this.saxXmlWriter.startPrefixMapping(this.nsCtx.getPrefix(Anomalie.ANOMALY_NS_URI), Anomalie.ANOMALY_NS_URI);
}
- attrs.addAttribute(Anomalie.ANOMALY_NS_URI, "node-id", (nsCtx.getPrefix(Anomalie.ANOMALY_NS_URI) != null ? nsCtx.getPrefix(Anomalie.ANOMALY_NS_URI) + ":" : "") + "node-id", "CDATA", IdGenerator.nextId());
- for (AddOnModel addOn : addOns) {
+ attrs.addAttribute(Anomalie.ANOMALY_NS_URI, "node-id", (this.nsCtx.getPrefix(Anomalie.ANOMALY_NS_URI) != null ? this.nsCtx.getPrefix(Anomalie.ANOMALY_NS_URI) + ":" : "") + "node-id", "CDATA", IdGenerator.nextId());
+ for (final AddOnModel addOn : this.addOns) {
if (addOn.isConcernedBy(Processor.EVENT.START_ELEMENT, uri, localName, qName)) {
addOn.process(Processor.EVENT.START_ELEMENT, uri, localName, qName, attrs);
}
}
- for (AbstractUnitControl auc : controlsToCall) {
- auc.startElement(uri, localName, qName, attrs, getXpathExpression());
+ for (final AbstractUnitControl auc : this.controlsToCall) {
+ AbstractControlContentHandler.logger.debug(auc.getControlId() + " - startElement");
+ auc.startElement(uri, localName, qName, attrs, this.getXpathExpression());
}
- saxXmlWriter.startElement(uri, localName, qName, attrs);
+ this.saxXmlWriter.startElement(uri, localName, qName, attrs);
}
@Override
- public void endElement(String uri, String localName, String qName) throws SAXException {
- String xPath = getXpathExpression();
- ArrayList<ControlReturn> vAno = new ArrayList<ControlReturn>();
- for (AbstractUnitControl auc : controlsToCall) {
+ public void endElement(final String uri, final String localName, final String qName) throws SAXException {
+ final String xPath = this.getXpathExpression();
+ final List<ControlReturn> allControlAnos = new LinkedList<ControlReturn>();
+
+ ArrayList<ControlReturn> controlResults;
+ for (final AbstractUnitControl auc : this.controlsToCall) {
+ AbstractControlContentHandler.logger.debug(auc.getControlId() + " - endElement");
try {
- anos = auc.endElement(uri, localName, qName, xPath);
- if (auc.getControlId() != null)
- vControlStatus.add(new Pair(auc.getControlId(), String.valueOf(auc.getStatusControle())));
- if (anos != null && !anos.isEmpty()) {
- if (!(vTotalAnomalies.size() > MAX_ANOS)) {
- vTotalAnomalies.addAll(anos);
- vAno.addAll(anos);
- }
+ controlResults = auc.endElement(uri, localName, qName, xPath);
+ if ((controlResults != null) && !controlResults.isEmpty()) {
+ allControlAnos.addAll(controlResults);
}
- } catch (SAXException ex) {
- logger.error("in endElement!!!", ex);
- } catch (Exception ex) {
- // an exception during schema loading
- StringWriter sw = new StringWriter();
- PrintWriter pw = new PrintWriter(sw, true);
- ex.printStackTrace(pw);
- Anomalie ano = new Anomalie(IdGenerator.nextId(), auc.getControlId(), "Erreur d'execution du " + auc.getControlId(), auc.getControlId(), "", "", "", "", "", new StringBuilder(
- "<![CDATA[<b>Erreur critique lors de l'analyse du flux</b> : Veuillez contacter votre support technique.<p style='font-size: 10px; padding-left: 75px;'>").append(sw.toString()).append("</p>]]>").toString(), "Erreur d'execution du contrôle " + auc.getControlId(), "BLOQUANT",
- "xpath namespacise", new Hashtable<String, Object>());
- // ano.addNode(new Node(null));
- if (anos != null) {
- anos.add(ano);
- if (!(vTotalAnomalies.size() > MAX_ANOS)) {
- vTotalAnomalies.addAll(anos);
- vAno.addAll(anos);
- }
- }
-
+ } catch (final SAXException ex) {
+ AbstractControlContentHandler.logger.error("in endElement!!!", ex);
}
}
- if (!vAno.isEmpty()) {
- for (ControlReturn ano : vAno) {
- saxXmlWriter.writeAnomally(ano);
+
+ if (!allControlAnos.isEmpty()) {
+ if (this.vTotalAnomalies.size() <= this.MAX_ANOS) {
+ this.vTotalAnomalies.addAll(allControlAnos);
+ }
+
+ for (final ControlReturn ano : allControlAnos) {
+ this.saxXmlWriter.writeAnomally(ano);
}
}
- if (stack.size() == 1) {
- saxXmlWriter.endPrefixMapping(nsCtx.getPrefix(Anomalie.ANOMALY_NS_URI));
+
+ if (this.stack.size() == 1) {
+ this.saxXmlWriter.endPrefixMapping(this.nsCtx.getPrefix(Anomalie.ANOMALY_NS_URI));
}
- saxXmlWriter.endElement(uri, localName, qName);
- stack.pop();
+ this.saxXmlWriter.endElement(uri, localName, qName);
+ this.stack.pop();
}
@Override
public void endDocument() throws SAXException {
- for (AbstractUnitControl auc : controlsToCall) {
+ for (final AbstractUnitControl auc : this.controlsToCall) {
+ AbstractControlContentHandler.logger.debug(auc.getControlId() + " - endDocument");
try {
auc.endDocument();
- if (auc.getControlId() != null)
- vControlStatus.add(new Pair(auc.getControlId(), String.valueOf(auc.getStatusControle())));
- } catch (Exception ex) {
- logger.error("in endDocument!!!", ex);
+ } catch (final Exception ex) {
+ AbstractControlContentHandler.logger.error("in endDocument!!!", ex);
}
}
- if (collectivite == null || collectivite.key == null || collectivite.libelle == null) {
+ if ((this.collectivite == null) || (this.collectivite.key == null) || (this.collectivite.libelle == null)) {
try {
- collectivite = getCollectivite(documentId, fileName);
- } catch (Exception e) {
- logger.error(e, e);
+ this.collectivite = this.getCollectivite(this.documentId, this.fileName);
+ } catch (final Exception e) {
+ AbstractControlContentHandler.logger.error(e, e);
throw new SAXException(e);
}
}
- if (budget == null || budget.key == null || budget.libelle == null || budget.libelle.equals("")) {
+ if ((this.budget == null) || (this.budget.key == null) || (this.budget.libelle == null) || this.budget.libelle.equals("")) {
try {
- budget = getBudget(documentId, collectivite, fileName);
- } catch (Exception e) {
- logger.error(e, e);
+ this.budget = this.getBudget(this.documentId, this.collectivite, this.fileName);
+ } catch (final Exception e) {
+ AbstractControlContentHandler.logger.error(e, e);
throw new SAXException(e);
}
}
- saxXmlWriter.endDocument();
+ this.saxXmlWriter.endDocument();
}
private Hashtable<String, Object> getParameters() {
- return hParams;
+ return this.hParams;
}
- public void setParameters(Hashtable<String, Object> ho) {
- hParams = ho;
+ public void setParameters(final Hashtable<String, Object> ho) {
+ this.hParams = ho;
}
private String getXpathExpression() {
- StringBuffer sb = new StringBuffer();
- for (String s : stack) {
+ final StringBuffer sb = new StringBuffer();
+ for (final String s : this.stack) {
sb.append(s + "/");
}
return sb.toString();
}
- public void setControlsModel(ArrayList<ControlModel> cm) {
+ public void setControlsModel(final ArrayList<ControlModel> cm) {
}
- public void setSaxWriter(SaxXmlWriter sxw) {
- saxXmlWriter = sxw;
+ public void setSaxWriter(final SaxXmlWriter sxw) {
+ this.saxXmlWriter = sxw;
}
public ArrayList<ControlReturn> getVTotalAnomalies() {
- return vTotalAnomalies;
+ return new ArrayList<ControlReturn>(this.vTotalAnomalies);
}
public abstract Pair getCollectivite(String documentModelId, String fileName) throws Exception;
public abstract Pair getBudget(String documentModelId, Pair collectivite, String fileName) throws Exception, UnauthorizedException;
@Override
- public void startPrefixMapping(String prefix, String uri) throws SAXException {
+ public void startPrefixMapping(final String prefix, final String uri) throws SAXException {
super.startPrefixMapping(prefix, uri);
- for (AbstractUnitControl auc : controlsToCall) {
- auc.startPrefixMapping(prefix, uri, getXpathExpression());
+ for (final AbstractUnitControl auc : this.controlsToCall) {
+ auc.startPrefixMapping(prefix, uri, this.getXpathExpression());
}
- saxXmlWriter.startPrefixMapping(prefix, uri);
+ this.saxXmlWriter.startPrefixMapping(prefix, uri);
}
@Override
- public void endPrefixMapping(String prefix) throws SAXException {
+ public void endPrefixMapping(final String prefix) throws SAXException {
super.endPrefixMapping(prefix);
- for (AbstractUnitControl auc : controlsToCall) {
- auc.endPrefixMapping(prefix, getXpathExpression());
+ for (final AbstractUnitControl auc : this.controlsToCall) {
+ auc.endPrefixMapping(prefix, this.getXpathExpression());
}
- saxXmlWriter.endPrefixMapping(prefix);
+ this.saxXmlWriter.endPrefixMapping(prefix);
}
@Override
- public void characters(char[] ch, int start, int length) throws SAXException {
- for (AbstractUnitControl auc : controlsToCall) {
+ public void characters(final char[] ch, final int start, final int length) throws SAXException {
+ for (final AbstractUnitControl auc : this.controlsToCall) {
try {
- auc.characters(ch, start, length, getXpathExpression());
- } catch (SAXException saxEx) {
- logger.error("in characters!!!", saxEx);
+ auc.characters(ch, start, length, this.getXpathExpression());
+ } catch (final SAXException saxEx) {
+ AbstractControlContentHandler.logger.error("in characters!!!", saxEx);
}
}
- saxXmlWriter.characters(ch, start, length);
+ this.saxXmlWriter.characters(ch, start, length);
}
@Override
- public void setDocumentLocator(Locator locator) {
- saxXmlWriter.setDocumentLocator(locator);
+ public void setDocumentLocator(final Locator locator) {
+ this.saxXmlWriter.setDocumentLocator(locator);
}
@Override
- public void ignorableWhitespace(char[] ch, int start, int length) throws SAXException {
- saxXmlWriter.ignorableWhitespace(ch, start, length);
+ public void ignorableWhitespace(final char[] ch, final int start, final int length) throws SAXException {
+ this.saxXmlWriter.ignorableWhitespace(ch, start, length);
}
@Override
- public void processingInstruction(String target, String data) {
+ public void processingInstruction(final String target, final String data) {
try {
- saxXmlWriter.processingInstruction(target, data);
- } catch (SAXException e) {
- logger.error(e, e);
+ this.saxXmlWriter.processingInstruction(target, data);
+ } catch (final SAXException e) {
+ AbstractControlContentHandler.logger.error(e, e);
}
}
@Override
- public void skippedEntity(String name) throws SAXException {
- saxXmlWriter.skippedEntity(name);
+ public void skippedEntity(final String name) throws SAXException {
+ this.saxXmlWriter.skippedEntity(name);
}
- public void setNamespaceContext(NamespaceContext nsCtx) {
+ public void setNamespaceContext(final NamespaceContext nsCtx) {
this.nsCtx = nsCtx;
}
public Pair getBudget() {
- return budget;
+ return this.budget;
}
- public void setBudget(Pair budget) {
+ public void setBudget(final Pair budget) {
this.budget = budget;
}
public Pair getCollectivite() {
- return collectivite;
+ return this.collectivite;
}
- public void setCollectivite(Pair collectivite) {
+ public void setCollectivite(final Pair collectivite) {
this.collectivite = collectivite;
- logger.debug("setting collectivite: " + collectivite);
+ AbstractControlContentHandler.logger.debug("setting collectivite: " + collectivite);
}
public ControlProgressListener getControlProgressListener() {
- return cpl;
+ return this.cpl;
}
/**
* @return the controlsToCall
*/
public ArrayList<AbstractUnitControl> getControlsToCall() {
- return controlsToCall;
+ return this.controlsToCall;
}
- public Document getTableReferenceResource(String ctrlId) {
- return ((ControlProvider) controlsToCallById.get(ControlProviderId)).getTableReference(ctrlId);
+ public Document getTableReferenceResource(final String ctrlId) {
+ return ((ControlProvider) this.controlsToCallById.get(AbstractControlContentHandler.ControlProviderId)).getTableReference(ctrlId);
}
- public ArrayList<Document> getTablesReferenceResource(String ressources) {
- return ((ControlProvider) controlsToCallById.get(ControlProviderId)).getTablesReference(ressources);
+ public ArrayList<Document> getTablesReferenceResource(final String ressources) {
+ return ((ControlProvider) this.controlsToCallById.get(AbstractControlContentHandler.ControlProviderId)).getTablesReference(ressources);
}
/**
* @return the messagesProvider
*/
public MessagesProvider getMessagesProvider() {
- return messagesProvider;
+ return this.messagesProvider;
}
public Vector<Pair> getDonneesFlux() {
- return donneesFlux;
+ return this.donneesFlux;
}
- public void setDonneesFlux(Vector<Pair> donneesFlux) {
+ public void setDonneesFlux(final Vector<Pair> donneesFlux) {
this.donneesFlux = donneesFlux;
}