import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
-import java.io.OutputStreamWriter;
import java.lang.reflect.Constructor;
-import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import nu.xom.Element;
import nu.xom.Nodes;
import nu.xom.ParsingException;
+import nu.xom.Serializer;
import nu.xom.XPathContext;
import nu.xom.converters.DOMConverter;
import org.apache.commons.io.FilenameUtils;
+import org.apache.commons.lang3.StringEscapeUtils;
import org.apache.log4j.Logger;
import fr.gouv.finances.cp.utils.PropertiesExpansion;
import fr.gouv.finances.dgfip.utils.DateUtils;
import fr.gouv.finances.dgfip.utils.Pair;
import fr.gouv.finances.dgfip.utils.xml.FactoryProvider;
-import fr.gouv.finances.dgfip.xemelios.auth.UnauthorizedException;
import fr.gouv.finances.dgfip.xemelios.auth.XemeliosUser;
import fr.gouv.finances.dgfip.xemelios.common.Constants;
import fr.gouv.finances.dgfip.xemelios.common.FileInfo;
import fr.gouv.finances.dgfip.xemelios.common.config.DocumentModel;
import fr.gouv.finances.dgfip.xemelios.common.config.DocumentsModel;
import fr.gouv.finances.dgfip.xemelios.common.config.EtatModel.Marker;
-import fr.gouv.finances.dgfip.xemelios.data.DataAccessException;
import fr.gouv.finances.dgfip.xemelios.data.DataConfigurationException;
import fr.gouv.finances.dgfip.xemelios.data.DataLayerManager;
import fr.gouv.finances.dgfip.xemelios.importers.AbstractImportPatcherImpl;
+import fr.gouv.finances.dgfip.xemelios.importers.DefaultImporter;
import fr.gouv.finances.dgfip.xemelios.importers.EtatImporteur;
import fr.gouv.finances.dgfip.xemelios.importers.ImportServiceProvider;
import fr.gouv.finances.dgfip.xemelios.importers.archives.rules.DeleteModel;
documentToImport.addAttribute(new Attribute("imported", "La PJ est marquée absente dans le manifest"));
} catch (final Exception ex) {
ArchiveImporter.logger.error("while importing " + documentToImport.getAttributeValue("path"), ex);
- documentToImport.addAttribute(new Attribute("imported", "Erreur: " + ex.getMessage()));
+ errors.addError(Errors.SEVERITY_ERROR, ex.getMessage());
+
+ final String message = StringEscapeUtils.escapeXml(ex.getMessage().replace("\n", "<br/>").substring(0, 100));
+
+ documentToImport.addAttribute(new Attribute("imported", "Erreur: " + message));
}
}
doImport = true;
} else {
errors.addError(Errors.SEVERITY_WARNING, "Cette archive ne peut être importée par aucune des règles de cette configuration.");
}
- } catch (final XPathExpressionException ex) {
- ArchiveImporter.logger.error(ex.getMessage(), ex);
- errors.addError(Errors.SEVERITY_ERROR, ex.getMessage());
} catch (final IOException ioEx) {
ArchiveImporter.logger.error(this.fileToImport.getAbsolutePath() + ": " + ioEx.getMessage(), ioEx);
errors.addError(Errors.SEVERITY_ERROR, ioEx.getMessage());
} catch (final ImportException iEx) {
+ ArchiveImporter.logger.error(iEx.getMessage(), iEx);
final Errors.Error error = iEx.error;
errors.addError(error);
- } catch (final DataConfigurationException dcEx) {
- ArchiveImporter.logger.error(dcEx.getMessage(), dcEx);
- errors.addError(Errors.SEVERITY_ERROR, dcEx.getMessage());
- } catch (final DataAccessException daEx) {
- ArchiveImporter.logger.error(daEx.getMessage(), daEx);
- errors.addError(Errors.SEVERITY_ERROR, daEx.getMessage());
- } catch (final UnauthorizedException ex) {
+ } catch (final Exception ex) {
ArchiveImporter.logger.error(ex.getMessage(), ex);
errors.addError(Errors.SEVERITY_ERROR, ex.getMessage());
- } catch (final Throwable t) {
- ArchiveImporter.logger.error(t.getMessage(), t);
- errors.addError(Errors.SEVERITY_ERROR, t.getMessage());
- } finally {
- // try { zipArchive.close(); } catch(Exception ex) {}
}
+
return errors;
}
}
}
- File outputFile = null;
+ final File outputFile = new File(this.getTempDir(), archiveName + ".xml");
try {
- outputFile = new File(FileUtils.getTempDir(), archiveName + ".xml");
- final Charset cs = Charset.forName("UTF-8");
- final OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(outputFile), cs);
- osw.write(manif.toXML());
- osw.flush();
- osw.close();
+ final FileOutputStream fos = new FileOutputStream(outputFile);
+ try {
+ final Serializer s = new Serializer(fos, "UTF-8");
+ s.write(manif);
+ s.flush();
+ } finally {
+ fos.close();
+ }
+
final Class clazz = Class.forName(dm.getImportClass());
final Constructor cc = clazz.getConstructor(XemeliosUser.class, PropertiesExpansion.class);
final Object obj = cc.newInstance(this.getUser(), this.applicationProperties);
throw new DataConfigurationException("Cette classe n'est pas un importeur.\nLe fichier de configuration qui vous a été livré est certainement invalide.\nVeuillez contacter votre fournisseur.");
}
final EtatImporteur ei = (EtatImporteur) obj;
- // WARNING : if one name per archive (and not one per volume), change this
+
+ // Patch dégueux... merci la conception de merde
+ if ((ei instanceof DefaultImporter) && (this.localTempDir != null)) {
+ ((DefaultImporter) ei).setLocalTempDir(this.localTempDir);
+ }
+
ei.setArchiveName(archiveName);
ei.setImpSvcProvider(this.importServiceProvider);
this.importServiceProvider.setEtatImporter(ei);
- ei.setOverwriteRule("never");
+ ei.setOverwriteRule("always");
ei.setApplicationConfiguration(this.applicationProperties);
ei.setDocument(dm);
ArchiveImporter.logger.error("importer", ex);
return new FileInfo();
} finally {
- if (outputFile.exists()) {
- outputFile.delete();
- }
+ outputFile.delete();
}
}
- protected FileInfo doImportPJ(final String filePath, final Pair collectivite, final String nomOrigine, final String idUnique, final String overwriteRule, final Element document, final File volume, final String archiveName) throws IOException {
+ protected FileInfo doImportPJ(final String filePath, final Pair collectivite, final String nomOrigine, final String idUnique, final String overwriteRule, final Element document, final File volume, final String archiveName) throws Exception {
final FileInfo fInfo = new FileInfo();
DataLayerManager.getImplementation().importPj(pj, archiveName, this.getUser());
fInfo.incElement(new Marker("PJ", null));
document.addAttribute(new Attribute("imported", "Oui"));
- } catch (final Exception ex) {
- ArchiveImporter.logger.error("doImportPJ(ZipFile,String,Pair,Pair,String,String)", ex);
} finally {
if (f.exists()) {
f.delete();