r2644 - branches/topia-2.6.x/topia-persistence/src/main/java/org/nuiton/topia/persistence/csv/in
Author: tchemit Date: 2012-08-23 17:08:49 +0200 (Thu, 23 Aug 2012) New Revision: 2644 Url: http://nuiton.org/repositories/revision/topia/2644 Log: fixes #2266: Add some api about import / export in csv format (last javadoc and import methods) Modified: branches/topia-2.6.x/topia-persistence/src/main/java/org/nuiton/topia/persistence/csv/in/ImportStrategy.java branches/topia-2.6.x/topia-persistence/src/main/java/org/nuiton/topia/persistence/csv/in/TopiaCsvImports.java Modified: branches/topia-2.6.x/topia-persistence/src/main/java/org/nuiton/topia/persistence/csv/in/ImportStrategy.java =================================================================== --- branches/topia-2.6.x/topia-persistence/src/main/java/org/nuiton/topia/persistence/csv/in/ImportStrategy.java 2012-08-23 07:45:42 UTC (rev 2643) +++ branches/topia-2.6.x/topia-persistence/src/main/java/org/nuiton/topia/persistence/csv/in/ImportStrategy.java 2012-08-23 15:08:49 UTC (rev 2644) @@ -22,13 +22,28 @@ */ public interface ImportStrategy<T extends TopiaEntityEnum> { + /** @return the model factory (will be used to produce the model to import). */ ImportModelFactory<T> getModelFactory(); - <E extends TopiaEntity> void importTable(Import<E> importer, - TableMeta<T> meta, - Reader reader, + /** + * Import a table given a {@code importer}. with an optional csv result. + * + * @param meta type of table to import + * @param importer the csv importer + * @param csvResult optional object where to put csv import result + * @throws TopiaException if any db problem + */ + <E extends TopiaEntity> void importTable(TableMeta<T> meta, Import<E> importer, CsvImportResult<T> csvResult) throws TopiaException; + /** + * Import a association given a {@code importer}. with an optional csv result. + * + * @param meta type of association to import + * @param importer the csv importer + * @param csvResult optional object where to put csv import result + * @throws TopiaException if any db problem + */ void importAssociation(AssociationMeta<T> meta, ImportToMap importer, CsvImportResult<T> csvResult) throws TopiaException; Modified: branches/topia-2.6.x/topia-persistence/src/main/java/org/nuiton/topia/persistence/csv/in/TopiaCsvImports.java =================================================================== --- branches/topia-2.6.x/topia-persistence/src/main/java/org/nuiton/topia/persistence/csv/in/TopiaCsvImports.java 2012-08-23 07:45:42 UTC (rev 2643) +++ branches/topia-2.6.x/topia-persistence/src/main/java/org/nuiton/topia/persistence/csv/in/TopiaCsvImports.java 2012-08-23 15:08:49 UTC (rev 2644) @@ -24,6 +24,7 @@ */ import com.google.common.base.Preconditions; +import com.google.common.collect.Lists; import com.google.common.collect.Maps; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; @@ -148,7 +149,7 @@ * @param <E> type of data * @throws TopiaException if any db problem while storing datas * @throws IOException if any pb while reading csv data - * @see ImportStrategy#importTable(Import, TableMeta, Reader, CsvImportResult) + * @see ImportStrategy#importTable(TableMeta, Import, CsvImportResult) */ public static <T extends TopiaEntityEnum, E extends TopiaEntity> void importTable(Reader reader, ImportStrategy<T> importStrategy, @@ -163,9 +164,7 @@ ImportModel<E> model = importStrategy.getModelFactory().buildForImport(meta); Import<E> importer = Import.newImport(model, reader); try { - importStrategy.importTable(importer, - meta, - reader, + importStrategy.importTable(meta, importer, csvResult); } finally { importer.close(); @@ -184,7 +183,7 @@ * @param <T> type of entity enum * @throws TopiaException if any db problem while storing datas * @throws IOException if any pb while reading csv data - * @see ImportStrategy#importTable(Import, TableMeta, Reader, CsvImportResult) + * @see ImportStrategy#importAssociation(AssociationMeta, ImportToMap, CsvImportResult) */ public static <T extends TopiaEntityEnum> void importAssociation(Reader reader, ImportStrategy<T> importStrategy, @@ -214,7 +213,7 @@ Import<E> importer, CsvImportResult<T> csvResult) throws TopiaException { - for (TopiaEntity entity : importer) { + for (E entity : importer) { Map<String, Object> properties = meta.prepareCreate( entity, entity.getTopiaId()); @@ -228,13 +227,35 @@ } } + public static <T extends TopiaEntityEnum, E extends TopiaEntity> Iterable<E> importAllEntitiesAndReturnThem(TopiaDAO<E> dao, + TableMeta<T> meta, + Import<E> importer, + CsvImportResult<T> csvResult) throws TopiaException { + + List<E> result = Lists.newArrayList(); + for (E entity : importer) { + + Map<String, Object> properties = meta.prepareCreate( + entity, entity.getTopiaId()); + E entityToSave = dao.create(properties); + + meta.copy(entity, entityToSave); + + if (csvResult != null) { + csvResult.incrementsNumberUpdated(); + } + result.add(entityToSave); + } + return result; + } + public static <T extends TopiaEntityEnum, E extends TopiaEntity> void importNotExistingEntities(TopiaDAO<E> dao, TableMeta<T> meta, Map<String, TopiaEntity> universe, Import<E> importer, CsvImportResult<T> csvResult) throws TopiaException { - for (TopiaEntity entity : importer) { + for (E entity : importer) { String topiaId = entity.getTopiaId();
participants (1)
-
tchemit@users.nuiton.org