import org.apache.log4j.xml.DOMConfigurator;
import fr.gouv.finances.dgfip.utils.Pair;
+import fr.gouv.finances.dgfip.utils.xml.FactoryProvider;
import fr.gouv.finances.dgfip.xemelios.auth.XemeliosUser;
import fr.gouv.finances.dgfip.xemelios.common.Constants;
import fr.gouv.finances.dgfip.xemelios.common.PJRef;
import fr.gouv.finances.dgfip.xemelios.data.DataConfigurationException;
import fr.gouv.finances.dgfip.xemelios.data.DataLayerManager;
import fr.gouv.finances.dgfip.xemelios.importers.EtatImporteur;
-import fr.gouv.finances.dgfip.xemelios.importers.XemeliosArchiveImporter;
+import fr.gouv.finances.dgfip.xemelios.importers.archives.ArchiveImporter;
+import fr.gouv.finances.dgfip.xemelios.importers.archives.rules.RulesModel;
+import fr.gouv.finances.dgfip.xemelios.importers.archives.rules.RulesParser;
+import fr.gouv.finances.dgfip.xemelios.utils.Errors;
import fr.gouv.finances.dgfip.xemelios.utils.FileUtils;
import java.io.FileInputStream;
import java.lang.reflect.Constructor;
private XemeliosUser user;
private ArrayList<File> filesToDrop;
private PropertiesExpansion applicationConfiguration;
+ private RulesModel archiveRules = null;
public BatchRealImporter(PropertiesExpansion applicationConfiguration, String[] args) throws Exception {
super();
if (args[i].matches("-d")) {
documentid = args[i + 1];
logger.debug("docId =" + documentid);
+ } else if(args[i].matches("-r")) {
+ String rulesFileName = args[i+1];
+ RulesParser rp = new RulesParser(FactoryProvider.getSaxParserFactory());
+ rp.parse(new File(rulesFileName));
+ RulesModel rules = (RulesModel)rp.getMarshallable();
+ setArchiveRules(rules);
}
}
if (cmopts.contains("f")) {
} else {
System.out.println("\n\nAide de l'importeur batch.\n" +
"_________________________\n\n" +
- "Syntaxe : importerBatch [-config config-dir] -d [typeDoc] -b [code][libelle] -c [code][libelle] -i [budget][collectivite] -f [fichier(s)]\n\n" +
+ "Syntaxe : importerBatch -config config-dir -d typeDoc [-c code libelle] [-b code libelle] [-i (y|n budget) (y|n collectivite)] [-r fichier.regles] -f fichier [fichier [...]]\n\n" +
"-config : chaine contenant le ou les répertoires où se trouvent les fichiers de définition des configurations de documents\n" +
" si cette option n'est pas fournie, utilise le contenu de la variable d'environnement "+Constants.SYS_PROP_DOC_DEF_DIR+"\n\n"+
"-d : MODELE DU DOCUMENT à importer >> Option Obligatoire.\n\n" +
" - Si le budget est présent dans le fichier cette option est inutile.\n" +
" - Sinon précisez le libellé puis le code du budget.\n" +
" - Si pas d'argument pour le budget :\n" +
- " - Si présence d'un budget par defaut dans fichier de conf, alors on celui-ci sera pris.\n" +
+ " - Si présence d'un budget par defaut dans fichier de conf, alors celui-ci sera pris.\n" +
" - Sinon, abandon de l'import car le budget n'est pas définit.\n" +
" - Si option particulière si y n alors mode interactif avec l'utilisateur dans la console." +
- "Pour chaque fichier sans budget, on pause la question à l'utilisateur.\n\n" +
+ "Pour chaque fichier sans budget, on pose la question à l'utilisateur.\n\n" +
"-c : COLLECTIVITE DU FICHIER >> Option Facultative.\n\n" +
- " - Si la collectivité est présente dans le fichier, on l\92utilise.\n" +
- " - Sinon on prend celui de l\92argument.\n" +
+ " - Si la collectivité est présente dans le fichier, on l'utilise.\n" +
+ " - Sinon on prend celui de l'argument.\n" +
" - Si pas d'argument pour la collectivité, alors mode interactif avec l'utilisateur dans la console.\n" +
- "Pour chaque fichier sans collectivité, on pause la question à l'utilisateur.\n\n" +
+ "Pour chaque fichier sans collectivité, on pose la question à l'utilisateur.\n\n" +
"-i : MODE INTERACTIF >> Option Facultative.\n" +
" - y ou n permet d'activer l'option interactive pour l'element en question.\n\n" +
+ "-r : permet de spécifier le fichier de règles à appliquer à l'import de l'archive ;\n\t\tuniquement si -d xemelios.archive.\n\n" +
"-u : utilisateur (id ou login) à utiliser opur l'import\n\n"+
"-f : NOM DU/DES FICHIER(S) à importer");
System.exit(SYNTAX_ERROR);
opts.getOption("g").setArgs(1);
opts.addOption("u",true,"Utilisateur réalisant l'import");
opts.getOption("u").setArgs(1);
+ opts.addOption("r", true, "Fichier de règles pour les archives");
+ opts.getOption("r").setArgs(1);
}
private int importer(String docId) {
ImportServiceBatchProvider isp = new ImportServiceBatchProvider(null, null, null);
isp.setDisplayFeedback(false);
isp.setAlwaysOverwrite(true);
- XemeliosArchiveImporter xai = new XemeliosArchiveImporter(docModels, files.get(0), isp, applicationConfiguration);
- xai.setUser(user);
- XemeliosArchiveImporter.Errors errors = xai.doImport();
- SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
- logger.debug("Fin import archive a "+sdf.format(new Date()));
- StringBuilder sb = new StringBuilder();
- int errorLevel = 0;
- for(XemeliosArchiveImporter.Error error:errors.getErrors()) {
- errorLevel = Math.max(errorLevel, error.getSeverity());
- sb.append("[").append(error.getSeverityMessage()).append("] ").append(error.getMessage()).append("\n");
- }
- if(sb.length()>0) {
- System.out.println(sb.toString());
+ try {
+ ArchiveImporter ai = new ArchiveImporter(docModels, files.get(0), isp, applicationConfiguration, getArchiveRules());
+ ai.setUser(user);
+ Errors errors = ai.doImport();
+ SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
+ logger.debug("Fin import archive a "+sdf.format(new Date()));
+ StringBuilder sb = new StringBuilder();
+ int errorLevel = 0;
+ for(Errors.Error error:errors.getErrors()) {
+ errorLevel = Math.max(errorLevel, error.getSeverity());
+ sb.append("[").append(error.getSeverityMessage()).append("] ").append(error.getMessage()).append("\n");
+ }
+ if(sb.length()>0) {
+ System.out.println(sb.toString());
+ }
+ if(errorLevel>=Errors.SEVERITY_ERROR) return IMPORT_FAILURE;
+ else if(errorLevel>=Errors.SEVERITY_WARNING) return IMPORT_WARNING;
+ else return IMPORT_SUCCESS;
+ } catch(Exception ex) {
+ logger.error("Import archive ",ex);
+ return IMPORT_FAILURE;
}
- if(errorLevel>=XemeliosArchiveImporter.Errors.SEVERITY_ERROR) return IMPORT_FAILURE;
- else if(errorLevel>=XemeliosArchiveImporter.Errors.SEVERITY_WARNING) return IMPORT_WARNING;
- else return IMPORT_SUCCESS;
} else {
DocumentModel dm = docModels.getDocumentById(docId);
try {
}
return ic;
}
+
+ public RulesModel getArchiveRules() {
+ return archiveRules;
+ }
+
+ public void setArchiveRules(RulesModel archiveRules) {
+ this.archiveRules = archiveRules;
+ }
+
}
\ No newline at end of file