Author: kmorin Date: 2013-03-15 14:43:12 +0100 (Fri, 15 Mar 2013) New Revision: 2533 Url: http://nuiton.org/projects/nuiton-utils/repository/revisions/2533 Log: fixes #2601 add a method to create a new optional column Modified: trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/Column.java trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/ModelBuilder.java trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/MyModelBuilder.java trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/ext/AbstractImportExportModel.java trunk/nuiton-csv/src/test/java/org/nuiton/util/csv/ImportTest.java Modified: trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/Column.java =================================================================== --- trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/Column.java 2013-03-15 12:43:07 UTC (rev 2532) +++ trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/Column.java 2013-03-15 13:43:12 UTC (rev 2533) @@ -44,20 +44,23 @@ valueFormatter, null, null, - ignored + ignored, + !ignored ); } public static <E, T> Column<E, T> newImportableColumn(String headerName, ValueParser<T> valueParser, ValueSetter<E, T> valueSetter, - boolean ignored) { + boolean ignored, + boolean mandatory) { return new Column<E, T>(headerName, null, null, valueParser, valueSetter, - ignored + ignored, + mandatory ); } @@ -72,7 +75,8 @@ valueFormatter, valueParser, valueSetter, - ignored + ignored, + !ignored ); } @@ -108,14 +112,15 @@ ValueFormatter<T> valueFormatter, ValueParser<T> valueParser, ValueSetter<E, T> valueSetter, - boolean ignored) { + boolean ignored, + boolean mandatory) { this.headerName = headerName; this.valueGetter = valueGetter; this.valueFormatter = valueFormatter; this.valueSetter = valueSetter; this.valueParser = valueParser; this.ignored = ignored; - mandatory = !ignored; + this.mandatory = mandatory; } @Override Modified: trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/ModelBuilder.java =================================================================== --- trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/ModelBuilder.java 2013-03-15 12:43:07 UTC (rev 2532) +++ trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/ModelBuilder.java 2013-03-15 13:43:12 UTC (rev 2533) @@ -43,7 +43,7 @@ new LinkedList<ExportableColumn<E, ?>>(); public <T> ImportableColumn<E, T> newIgnoredColumn(String headerName) { - Column<E, T> newColumn = Column.newImportableColumn(headerName, null, null, true); + Column<E, T> newColumn = Column.newImportableColumn(headerName, null, null, true, false); columnsForImport.add(newColumn); return newColumn; } @@ -61,11 +61,29 @@ } public <T> ImportableColumn<E, T> newMandatoryColumn(String headerName, ValueParser<T> valueParser, ValueSetter<E, T> valueSetter) { - Column<E, T> newColumn = Column.newImportableColumn(headerName, valueParser, valueSetter, false); + Column<E, T> newColumn = Column.newImportableColumn(headerName, valueParser, valueSetter, false, true); columnsForImport.add(newColumn); return newColumn; } + public ImportableColumn<E, String> newOptionalColumn(String headerName, String propertyName) { + return newOptionalColumn(headerName, propertyName, Common.STRING); + } + + public <T> ImportableColumn<E, T> newOptionalColumn(String headerName, String propertyName, ValueParser<T> valueParser) { + return newOptionalColumn(headerName, valueParser, new Common.BeanProperty<E, T>(propertyName)); + } + + public ImportableColumn<E, String> newOptionalColumn(String headerName, ValueSetter<E, String> valueSetter) { + return newOptionalColumn(headerName, Common.STRING, valueSetter); + } + + public <T> ImportableColumn<E, T> newOptionalColumn(String headerName, ValueParser<T> valueParser, ValueSetter<E, T> valueSetter) { + Column<E, T> newColumn = Column.newImportableColumn(headerName, valueParser, valueSetter, false, false); + columnsForImport.add(newColumn); + return newColumn; + } + public ExportableColumn<E, String> newColumnForExport(String headerName, String propertyName) { return newColumnForExport(headerName, propertyName, Common.STRING); } Modified: trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/MyModelBuilder.java =================================================================== --- trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/MyModelBuilder.java 2013-03-15 12:43:07 UTC (rev 2532) +++ trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/MyModelBuilder.java 2013-03-15 13:43:12 UTC (rev 2533) @@ -64,7 +64,7 @@ } public ChooseExportStrategyForColumnStep<E> ignoreAtImport() { - Column<E, Object> importableColumn = Column.newImportableColumn(columnName, null, null, true); + Column<E, Object> importableColumn = Column.newImportableColumn(columnName, null, null, true, false); return new ChooseExportStrategyForColumnStep(columnName, importableColumn); } @@ -81,7 +81,7 @@ } public <T> ChooseExportStrategyForColumnStep<E> mandatoryAtImport(ValueParser<T> valueParser, ValueSetter<E, T> valueSetter) { - Column<E, T> importableColumn = Column.newImportableColumn(columnName, valueParser, valueSetter, false); + Column<E, T> importableColumn = Column.newImportableColumn(columnName, valueParser, valueSetter, false, true); return new ChooseExportStrategyForColumnStep(columnName, importableColumn); } @@ -98,8 +98,7 @@ } public <T> ChooseExportStrategyForColumnStep<E> optionalAtImport(ValueParser<T> valueParser, ValueSetter<E, T> valueSetter) { - // FIXME 20111225 ici comme la colonne est optionnel elle est simplement ignorée, lacune - Column<E, T> importableColumn = Column.newImportableColumn(columnName, valueParser, valueSetter, false); + Column<E, T> importableColumn = Column.newImportableColumn(columnName, valueParser, valueSetter, false, true); return new ChooseExportStrategyForColumnStep(columnName, importableColumn); } Modified: trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/ext/AbstractImportExportModel.java =================================================================== --- trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/ext/AbstractImportExportModel.java 2013-03-15 12:43:07 UTC (rev 2532) +++ trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/ext/AbstractImportExportModel.java 2013-03-15 13:43:12 UTC (rev 2533) @@ -103,6 +103,30 @@ return modelBuilder.newMandatoryColumn(headerName, valueParser, etValueSetter); } + public ImportableColumn<E, String> newOptionalColumn(String headerName) { + return modelBuilder.newOptionalColumn(headerName, headerName); + } + + public ImportableColumn<E, String> newOptionalColumn(String headerName, String propertyName) { + return modelBuilder.newOptionalColumn(headerName, propertyName); + } + + public <T> ImportableColumn<E, T> newOptionalColumn(String headerName, ValueParser<T> valueParser) { + return modelBuilder.newOptionalColumn(headerName, headerName, valueParser); + } + + public <T> ImportableColumn<E, T> newOptionalColumn(String headerName, String propertyName, ValueParser<T> valueParser) { + return modelBuilder.newOptionalColumn(headerName, propertyName, valueParser); + } + + public ImportableColumn<E, String> newOptionalColumn(String headerName, ValueSetter<E, String> eStringValueSetter) { + return modelBuilder.newOptionalColumn(headerName, eStringValueSetter); + } + + public <T> ImportableColumn<E, T> newOptionalColumn(String headerName, ValueParser<T> valueParser, ValueSetter<E, T> etValueSetter) { + return modelBuilder.newOptionalColumn(headerName, valueParser, etValueSetter); + } + public ExportableColumn<E, String> newColumnForExport(String headerName) { return modelBuilder.newColumnForExport(headerName, headerName); } Modified: trunk/nuiton-csv/src/test/java/org/nuiton/util/csv/ImportTest.java =================================================================== --- trunk/nuiton-csv/src/test/java/org/nuiton/util/csv/ImportTest.java 2013-03-15 12:43:07 UTC (rev 2532) +++ trunk/nuiton-csv/src/test/java/org/nuiton/util/csv/ImportTest.java 2013-03-15 13:43:12 UTC (rev 2533) @@ -166,7 +166,8 @@ "TITLE", Common.STRING, withBeanSetter("title", String.class), - false + false, + true ); } @@ -175,7 +176,8 @@ "DATE", withDateParser(), withBeanSetter("date", Date.class), - false + false, + true ); } @@ -184,7 +186,8 @@ "NUMBER", Common.INTEGER, withBeanSetter("number", Integer.class), - false + false, + true ); } @@ -193,7 +196,8 @@ "ROWBEANENUM", Common.newEnumByOrdinalParserFormatter(RowBeanEnum.class), withBeanSetter("rowBeanEnum", RowBeanEnum.class), - false + false, + true ); } @SuppressWarnings({"UnusedParameters"})