r280 - trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv
Author: tchemit Date: 2012-01-15 20:38:46 +0100 (Sun, 15 Jan 2012) New Revision: 280 Url: http://forge.codelutin.com/repositories/revision/echobase/280 Log: improve csv api Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/CsvModelUtil.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/EntityAssociationExportModel.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/EntityAssociationImportModel.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/EntityCsvModel.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ExportQueryCsvModel.java Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/CsvModelUtil.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/CsvModelUtil.java 2012-01-15 19:37:20 UTC (rev 279) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/CsvModelUtil.java 2012-01-15 19:38:46 UTC (rev 280) @@ -34,6 +34,12 @@ import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.util.StringUtil; import org.nuiton.util.csv.Common; +import org.nuiton.util.csv.ExportModel; +import org.nuiton.util.csv.ExportableColumn; +import org.nuiton.util.csv.ImportExportModel; +import org.nuiton.util.csv.ImportModel; +import org.nuiton.util.csv.ImportableColumn; +import org.nuiton.util.csv.ModelBuilder; import org.nuiton.util.csv.ValueFormatter; import org.nuiton.util.csv.ValueParser; import org.nuiton.util.csv.ValueParserFormatter; @@ -43,6 +49,7 @@ import java.util.Arrays; import java.util.Collection; import java.util.Date; +import java.util.List; import java.util.Locale; import java.util.Map; @@ -106,7 +113,10 @@ } public static final ValueParser<Date> IMPORT_DAY = new DateValue("dd/MM/yy"); + public static final ValueParser<Date> IMPORT_DAY2 = new DateValue("dd-MM-yy"); + public static final ValueParser<Date> TIME = new DateValue("HH:mm:ss"); + public static final ValueParser<Boolean> INT_TO_BOOLEAN_PARSER = new ValueParser<Boolean>() { @Override @@ -285,4 +295,84 @@ protected CsvModelUtil() { // avoid instanciation on helper class } + + public static abstract class AbstractImportModel<E> implements ImportModel<E> { + + private final char separator; + + protected final ModelBuilder<E> modelBuilder; + + public AbstractImportModel(char separator) { + this.separator = separator; + modelBuilder = new ModelBuilder<E>(); + } + + @Override + public final char getSeparator() { + return separator; + } + + @Override + public void pushCsvHeaderNames(List<String> headerNames) { + } + + @Override + public final Iterable<ImportableColumn<E, Object>> getColumnsForImport() { + return (Iterable) modelBuilder.getColumnsForImport(); + } + } + + public static abstract class AbstractImportExportModel<E> implements ImportExportModel<E> { + + private final char separator; + + protected final ModelBuilder<E> modelBuilder; + + public AbstractImportExportModel(char separator) { + this.separator = separator; + modelBuilder = new ModelBuilder<E>(); + } + + @Override + public final char getSeparator() { + return separator; + } + + @Override + public void pushCsvHeaderNames(List<String> headerNames) { + } + + @Override + public final Iterable<ExportableColumn<E, Object>> getColumnsForExport() { + return (Iterable) modelBuilder.getColumnsForImport(); + } + + @Override + public final Iterable<ImportableColumn<E, Object>> getColumnsForImport() { + return (Iterable) modelBuilder.getColumnsForImport(); + } + } + + public static abstract class AbstractExportModel<E> implements ExportModel<E> { + + private final char separator; + + protected final ModelBuilder<E> modelBuilder; + + public AbstractExportModel(char separator) { + this.separator = separator; + modelBuilder = new ModelBuilder<E>(); + } + + @Override + public final char getSeparator() { + return separator; + } + + @Override + public final Iterable<ExportableColumn<E, Object>> getColumnsForExport() { + return (Iterable) modelBuilder.getColumnsForImport(); + } + + } } Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/EntityAssociationExportModel.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/EntityAssociationExportModel.java 2012-01-15 19:37:20 UTC (rev 279) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/EntityAssociationExportModel.java 2012-01-15 19:38:46 UTC (rev 280) @@ -26,25 +26,17 @@ import fr.ifremer.echobase.entities.meta.AssociationMeta; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.util.csv.ExportModel; -import org.nuiton.util.csv.ExportableColumn; -import org.nuiton.util.csv.ModelBuilder; -import java.util.Collection; - /** * A model to export associations of entities into csv files. * * @author tchemit <chemit@codelutin.com> * @since 0.2 */ -public class EntityAssociationExportModel<E extends TopiaEntity> implements ExportModel<E> { +public class EntityAssociationExportModel<E extends TopiaEntity> extends CsvModelUtil.AbstractExportModel<E> { - protected final char separator; - protected final AssociationMeta meta; - protected ModelBuilder<E> modelBuilder; - public static <E extends TopiaEntity> ExportModel<E> newExportModel(char separator, AssociationMeta meta ) { @@ -66,21 +58,9 @@ return model; } - @Override - public char getSeparator() { - return separator; - } - - @Override - public Iterable<ExportableColumn<E, Object>> getColumnsForExport() { - return (Collection) - modelBuilder.getColumnsForExport(); - } - protected EntityAssociationExportModel(char separator, AssociationMeta meta) { - this.separator = separator; + super(separator); this.meta = meta; - modelBuilder = new ModelBuilder<E>(); } Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/EntityAssociationImportModel.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/EntityAssociationImportModel.java 2012-01-15 19:37:20 UTC (rev 279) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/EntityAssociationImportModel.java 2012-01-15 19:38:46 UTC (rev 280) @@ -26,11 +26,7 @@ import fr.ifremer.echobase.entities.meta.AssociationMeta; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.util.csv.ImportModel; -import org.nuiton.util.csv.ImportableColumn; -import org.nuiton.util.csv.ModelBuilder; -import java.util.Collection; -import java.util.List; import java.util.Map; /** @@ -39,14 +35,10 @@ * @author tchemit <chemit@codelutin.com> * @since 0.2 */ -public class EntityAssociationImportModel implements ImportModel<Map<String, Object>> { +public class EntityAssociationImportModel extends CsvModelUtil.AbstractImportModel<Map<String, Object>> { - protected final char separator; - protected final AssociationMeta meta; - protected ModelBuilder<Map<String, Object>> modelBuilder; - public static ImportModel<Map<String, Object>> newImportModel(char separator, AssociationMeta meta ) { @@ -70,29 +62,14 @@ } @Override - public char getSeparator() { - return separator; - } - - @Override - public Iterable<ImportableColumn<Map<String, Object>, Object>> getColumnsForImport() { - return (Collection) - modelBuilder.getColumnsForImport(); - } - - @Override - public void pushCsvHeaderNames(List<String> headerNames) { - } - - @Override public Map<String, Object> newEmptyInstance() { return null; } - protected EntityAssociationImportModel(char separator, AssociationMeta meta) { - this.separator = separator; + protected EntityAssociationImportModel(char separator, + AssociationMeta meta) { + super(separator); this.meta = meta; - modelBuilder = new ModelBuilder<Map<String, Object>>(); } Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/EntityCsvModel.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/EntityCsvModel.java 2012-01-15 19:37:20 UTC (rev 279) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/EntityCsvModel.java 2012-01-15 19:38:46 UTC (rev 280) @@ -26,15 +26,11 @@ import com.google.common.base.Function; import fr.ifremer.echobase.entities.meta.TableMeta; import org.nuiton.topia.persistence.TopiaEntity; -import org.nuiton.util.csv.ExportableColumn; -import org.nuiton.util.csv.ImportExportModel; import org.nuiton.util.csv.ImportableColumn; -import org.nuiton.util.csv.ModelBuilder; import org.nuiton.util.csv.ValueParser; import java.util.Collection; import java.util.Date; -import java.util.List; /** * A model to import / export entities into csv files. @@ -42,14 +38,10 @@ * @author tchemit <chemit@codelutin.com> * @since 0.2 */ -public class EntityCsvModel<E extends TopiaEntity> implements ImportExportModel<E> { +public class EntityCsvModel<E extends TopiaEntity> extends CsvModelUtil.AbstractImportExportModel<E> { - protected final char separator; - protected final TableMeta tableMeta; - protected ModelBuilder<E> modelBuilder; - public static <E extends TopiaEntity> EntityCsvModel<E> newModel( char separator, TableMeta tableMeta @@ -65,27 +57,6 @@ return new EntityCsvModel<E>(separator, tableMeta, idHeader); } - @Override - public char getSeparator() { - return separator; - } - - @Override - public Collection<ExportableColumn<E, Object>> getColumnsForExport() { - return (Collection) - modelBuilder.getColumnsForExport(); - } - - @Override - public Collection<ImportableColumn<E, Object>> getColumnsForImport() { - return (Collection) - modelBuilder.getColumnsForImport(); - } - - @Override - public void pushCsvHeaderNames(List<String> headerNames) { - } - public <T> ImportableColumn<E, T> newIgnoredColumn(String headerName) { return modelBuilder.newIgnoredColumn(headerName); } @@ -252,9 +223,8 @@ protected EntityCsvModel(char separator, TableMeta tableMeta) { - this.separator = separator; + super(separator); this.tableMeta = tableMeta; - modelBuilder = new ModelBuilder<E>(); } protected EntityCsvModel(char separator, Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ExportQueryCsvModel.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ExportQueryCsvModel.java 2012-01-15 19:37:20 UTC (rev 279) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/csv/ExportQueryCsvModel.java 2012-01-15 19:38:46 UTC (rev 280) @@ -24,13 +24,7 @@ package fr.ifremer.echobase.services.csv; import fr.ifremer.echobase.services.ExportQueryService; -import org.nuiton.util.csv.ExportableColumn; -import org.nuiton.util.csv.ImportExportModel; -import org.nuiton.util.csv.ImportableColumn; -import org.nuiton.util.csv.ModelBuilder; -import java.util.Collection; -import java.util.List; import java.util.Map; /** @@ -39,16 +33,11 @@ * @author tchemit <chemit@codelutin.com> * @since 0.2 */ -public class ExportQueryCsvModel implements ImportExportModel<Map<String, Object>> { +public class ExportQueryCsvModel extends CsvModelUtil.AbstractExportModel<Map<String, Object>> { - protected final char separator; - - protected final ModelBuilder<?> modelBuilder; - public ExportQueryCsvModel(char separator, String[] columnHeaders) { - this.separator = separator; - modelBuilder = new ModelBuilder<Object>(); + super(separator); for (String columnHeader : columnHeaders) { modelBuilder.newColumnForExport( columnHeader, @@ -58,29 +47,4 @@ } } - @Override - public char getSeparator() { - return separator; - } - - @Override - public Collection<ExportableColumn<Map<String, Object>, Object>> getColumnsForExport() { - return (Collection) modelBuilder.getColumnsForExport(); - } - - @Override - public Collection<ImportableColumn<Map<String, Object>, Object>> getColumnsForImport() { - // never do import from this model - throw new UnsupportedOperationException(); - } - - @Override - public void pushCsvHeaderNames(List<String> headerNames) { - } - - @Override - public Map<String, Object> newEmptyInstance() { - // never do import from this model - throw new UnsupportedOperationException(); - } }
participants (1)
-
tchemit@users.forge.codelutin.com