xsi:noNamespaceSchemaLocation="../../defs/technical-component-definition.xsd">
<name>control-core</name>
<description>Brique de base pour les contrôles</description>
- <release>5.0.0.5</release>
+ <release>5.0.0.6</release>
<url>http://xemelios.org/updatesV5/control-core</url>
<type>COMPOSANT</type>
<destination>
<component-ref url="http://xemelios.org/updatesV5/xml-marshall" release="5.0.0.1"/>
<component-ref url="http://xemelios.org/updatesV5/starter" release="5.0.0.0"/>
</requires>
- <release-notes>
+ <release-notes>
+ <release v="5.0.0.6">
+ <note visibility="dev">Ajout de la possibilité d'avoir plusieurs tables de references pour un controle</note>
+ </release>
<release v="5.0.0.5">
<note visibility="dev">Ameliorations/Corrections des nouveaux contrôles</note>
</release>
return controlsToCall;
}
- public Document getTableReferenceResource(String ressourcePath){
- return ((ControlProvider)controlsToCallById.get(ControlProviderId)).getTableReference(ressourcePath);
+ public Document getTableReferenceResource(String ctrlId){
+ return ((ControlProvider)controlsToCallById.get(ControlProviderId)).getTableReference(ctrlId);
}
+ public ArrayList<Document> getTablesReferenceResource(String ressources){
+ return ((ControlProvider)controlsToCallById.get(ControlProviderId)).getTablesReference(ressources);
+ }
/**
* @return the messagesProvider
*/
*/
package fr.gouv.finances.dgfip.xemelios.controls.core;
+import java.util.ArrayList;
+
import nu.xom.Document;
import fr.gouv.finances.dgfip.xemelios.controls.core.models.DocumentControlModel;
return this.cch.getTableReferenceResource(getDocumentModel().getControlById(CTRL_ID).getTableReferenceResource());
}
+ public ArrayList<Document> getTablesReference(String CTRL_ID) {
+ return this.cch.getTablesReferenceResource(getDocumentModel().getControlById(CTRL_ID).getTableReferenceResource());
+ }
+
public abstract String getControlId();
}
private static final Logger logger = Logger.getLogger(ControlProvider.class);
private Hashtable<String,Document> hashTablesReferences = null;
-
+ private static final String SEPARATOR_TABLE_REFERENCE_RESSOURCES = ";";
+
@Override
public void startDocument() throws SAXException {
hashTablesReferences=new Hashtable<String, Document>();
ArrayList<ControlModel> controls = getDocumentModel().getControls();
- Document doc = null;
for(ControlModel cm:controls){
- if(cm.getTableReferenceResource()!=null && cm.getTableReferenceResource().length() > 0 && !hashTablesReferences.containsKey(cm.getTableReferenceResource())){
- Builder builder = new Builder();
- try {
- doc = builder.build(ControlProvider.class.getClassLoader().getResourceAsStream(cm.getTableReferenceResource()));
- hashTablesReferences.put(cm.getTableReferenceResource(),doc);
- } catch (Exception e) {
- logger.debug("Probleme de recuperation de ressource !");
+ String tablesReferencesResource = cm.getTableReferenceResource();
+ if(tablesReferencesResource.contains(SEPARATOR_TABLE_REFERENCE_RESSOURCES)){
+ for(String ressource:tablesReferencesResource.split(SEPARATOR_TABLE_REFERENCE_RESSOURCES)){
+ setTableRefrence(ressource);
}
+ } else {
+ setTableRefrence(tablesReferencesResource);
}
}
}
public Document getTableReference(String resource) {
return hashTablesReferences.get(resource);
}
+
+ public ArrayList<Document> getTablesReference(String resources) {
+ ArrayList<Document> docs = new ArrayList<Document>();
+
+ for(String ressource:resources.split(SEPARATOR_TABLE_REFERENCE_RESSOURCES)){
+ docs.add(hashTablesReferences.get(ressource));
+ }
+ return docs;
+ }
@Override
public void setDocumentLocator(Locator locator) {}
public String getControlId() {
return null;
}
+
+ private void setTableRefrence(String table){
+ Document doc = null;
+ if(table!=null && table.length() > 0 && !hashTablesReferences.containsKey(table)){
+ Builder builder = new Builder();
+ try {
+ doc = builder.build(ControlProvider.class.getClassLoader().getResourceAsStream(table));
+ hashTablesReferences.put(table,doc);
+ } catch (Exception e) {
+ logger.debug("Probleme de recuperation de ressource !");
+ }
+ }
+ }
}