Author: tchemit Date: 2012-08-22 18:07:30 +0200 (Wed, 22 Aug 2012) New Revision: 562 Url: http://forge.codelutin.com/repositories/revision/echobase/562 Log: refs #1407: Extraction du module d'import-export csv vers ToPIA Modified: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/EchoBaseDbMeta.java trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/EchoBasePersistenceHelper.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DefaultImportStrategy.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ImportDbService.java Modified: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/EchoBaseDbMeta.java =================================================================== --- trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/EchoBaseDbMeta.java 2012-08-22 10:54:29 UTC (rev 561) +++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/EchoBaseDbMeta.java 2012-08-22 16:07:30 UTC (rev 562) @@ -2,6 +2,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; +import org.nuiton.topia.persistence.TopiaPersistenceHelper; import org.nuiton.topia.persistence.metadata.AssociationMeta; import org.nuiton.topia.persistence.metadata.DbMeta; import org.nuiton.topia.persistence.metadata.TableMeta; @@ -194,6 +195,10 @@ */ public List<EchoBaseEntityEnum> getReferenceTypes() { return REFERENCE_TYPES; + } + @Override + public EchoBasePersistenceHelper getPersistenceHelper() { + return (EchoBasePersistenceHelper) super.getPersistenceHelper(); } } Modified: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/EchoBasePersistenceHelper.java =================================================================== --- trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/EchoBasePersistenceHelper.java 2012-08-22 10:54:29 UTC (rev 561) +++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/EchoBasePersistenceHelper.java 2012-08-22 16:07:30 UTC (rev 562) @@ -31,11 +31,11 @@ import org.nuiton.topia.persistence.TopiaPersistenceHelper; /** -* TODO -* -* @author tchemit <chemit@codelutin.com> -* @since 1.1 -*/ + * TODO + * + * @author tchemit <chemit@codelutin.com> + * @since 1.1 + */ public class EchoBasePersistenceHelper implements TopiaPersistenceHelper<EchoBaseEntityEnum> { @Override @@ -51,4 +51,9 @@ throw new TopiaRuntimeException(e); } } + + @Override + public <E extends TopiaEntity> TopiaDAO<E> getDAO(TopiaContext tx, EchoBaseEntityEnum type) { + return (TopiaDAO<E>) getDAO(tx, type.getContract()); + } } Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DefaultImportStrategy.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DefaultImportStrategy.java 2012-08-22 10:54:29 UTC (rev 561) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DefaultImportStrategy.java 2012-08-22 16:07:30 UTC (rev 562) @@ -1,12 +1,11 @@ package fr.ifremer.echobase.services; import fr.ifremer.echobase.entities.EchoBaseEntityEnum; +import fr.ifremer.echobase.entities.EchoBasePersistenceHelper; import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaException; import org.nuiton.topia.persistence.TopiaDAO; import org.nuiton.topia.persistence.TopiaEntity; -import org.nuiton.topia.persistence.TopiaEntityEnum; -import org.nuiton.topia.persistence.TopiaPersistenceHelper; import org.nuiton.topia.persistence.csv.in.CsvImportResult; import org.nuiton.topia.persistence.csv.in.ImportModelFactory; import org.nuiton.topia.persistence.csv.in.ImportStrategy; @@ -17,7 +16,6 @@ import org.nuiton.util.csv.ImportToMap; import java.io.Reader; -import java.util.Map; /** * TODO @@ -29,7 +27,7 @@ private final TopiaContext tx; - private final TopiaPersistenceHelper<EchoBaseEntityEnum> persistenceHelper; + private final EchoBasePersistenceHelper persistenceHelper; private final int nbRowBuffer; @@ -37,7 +35,7 @@ public DefaultImportStrategy(ImportModelFactory<EchoBaseEntityEnum> modelFactory, TopiaContext tx, - TopiaPersistenceHelper<EchoBaseEntityEnum> persistenceHelper, + EchoBasePersistenceHelper persistenceHelper, int nbRowBuffer) { this.tx = tx; this.persistenceHelper = persistenceHelper; @@ -50,44 +48,33 @@ } @Override - public <E extends TopiaEntity> void importTableFile(Import<E> importer, - TableMeta<EchoBaseEntityEnum> meta, - Reader reader, - CsvImportResult<EchoBaseEntityEnum> csvResult) throws TopiaException { - TopiaDAO<E> dao = (TopiaDAO<E>) persistenceHelper.getDAO(tx, meta.getEntityType()); + public <E extends TopiaEntity> void importTable(Import<E> importer, + TableMeta<EchoBaseEntityEnum> meta, + Reader reader, + CsvImportResult<EchoBaseEntityEnum> csvResult) throws TopiaException { + TopiaDAO<E> dao = persistenceHelper.getDAO(tx, meta.getSource()); - for (TopiaEntity entity : importer) { - - Map<String, Object> properties = meta.prepareCreate( - entity, entity.getTopiaId()); - E entityToSave = dao.create(properties); - - meta.copy(entity, entityToSave); - - csvResult.incrementsNumberUpdated(); - } + TopiaCsvImports.importAllEntities(dao, meta, importer, csvResult); } @Override - public <T extends TopiaEntityEnum> void importAssociationFile(AssociationMeta<T> meta, - ImportToMap importer, - CsvImportResult<T> csvResult) throws TopiaException { - TopiaCsvImports.importAssociationFile(tx, - meta, - importer, - csvResult, - nbRowBuffer); - } + public void importAssociation(AssociationMeta<EchoBaseEntityEnum> meta, + ImportToMap importer, + CsvImportResult<EchoBaseEntityEnum> csvResult) throws TopiaException { - @Override - public void importNMAssociationFile(AssociationMeta<EchoBaseEntityEnum> meta, - ImportToMap importer, - CsvImportResult<EchoBaseEntityEnum> csvResult) throws TopiaException { - - TopiaCsvImports.importNMAssociationFile(tx, + if (getModelFactory().isNMAssociationMeta(meta)) { + TopiaCsvImports.importNMAssociation(tx, meta, importer, csvResult, nbRowBuffer); + } else { + TopiaCsvImports.importAssociation(tx, + meta, + importer, + csvResult, + nbRowBuffer); + } + } } Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ImportDbService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ImportDbService.java 2012-08-22 10:54:29 UTC (rev 561) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/ImportDbService.java 2012-08-22 16:07:30 UTC (rev 562) @@ -24,6 +24,7 @@ package fr.ifremer.echobase.services; import com.google.common.collect.Lists; +import fr.ifremer.echobase.entities.EchoBaseDbMeta; import fr.ifremer.echobase.entities.EchoBaseEntityEnum; import fr.ifremer.echobase.entities.EchoBaseUser; import fr.ifremer.echobase.entities.EntityModificationLog; @@ -83,12 +84,14 @@ List<String> missingEntries = Lists.newArrayList(); + EchoBaseDbMeta dbMeta = getDbMeta(); + Map<TableMeta<EchoBaseEntityEnum>, ZipEntry> tables = TopiaCsvImports.discoverEntries( - "echobase/", getDbMeta().getAllTables(), + "echobase/", dbMeta.getAllTables(), zipFile, missingEntries); Map<AssociationMeta<EchoBaseEntityEnum>, ZipEntry> associations = TopiaCsvImports.discoverEntries( - "echobase/", getDbMeta().getAllAssociations(), + "echobase/", dbMeta.getAllAssociations(), zipFile, missingEntries); if (computeSteps) { @@ -109,7 +112,7 @@ DefaultImportStrategy strategy = new DefaultImportStrategy( getService(ImportService.class), getTransaction(), - getDbMeta().getPersistenceHelper(), + dbMeta.getPersistenceHelper(), 1000 ); @@ -138,7 +141,6 @@ } } - private void importTables(DefaultImportStrategy strategy, ImportDbConfiguration model, ZipFile zipFile, @@ -216,10 +218,10 @@ log.info("Will import " + entryDef); } - TopiaCsvImports.importAssociationFile(reader, - strategy, - entryDef, - csvResult); + TopiaCsvImports.importAssociation(reader, + strategy, + entryDef, + csvResult); s0 = TIME_LOG.log(s0, "importFile::done");