
org.nuiton.csv.MyModelBuilder Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of nuiton-csv Show documentation
Show all versions of nuiton-csv Show documentation
Library of usefull classes to import export csv.
/*
* #%L
* Nuiton CSV
* %%
* Copyright (C) 2011 - 2012 CodeLutin
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Lesser Public License for more details.
*
* You should have received a copy of the GNU General Lesser Public
* License along with this program. If not, see
* .
* #L%
*/
package org.nuiton.csv;
import java.util.LinkedList;
import java.util.List;
/**
* @param
*/
public class MyModelBuilder {
protected char separator;
protected List> columnsForImport = new LinkedList>();
protected List> columnsForExport = new LinkedList>();
public BuildOrAddColumnStep newEmptyModel(char separator) {
this.separator = separator;
return new BuildOrAddColumnStep();
}
public class BuildOrAddColumnStep {
public ChooseImportStrategyForColumnStep addColumn(String columnName) {
return new ChooseImportStrategyForColumnStep(columnName);
}
public CsvModel buildModelForExport() {
return new CsvModel(separator, (Iterable) columnsForImport, (Iterable) columnsForExport, null);
}
public CsvModel buildModelForImport(CsvModel.Factory emptyEFactory) {
return new CsvModel(separator, (Iterable) columnsForImport, (Iterable) columnsForExport, (CsvModel.Factory) emptyEFactory);
}
}
public class ChooseImportStrategyForColumnStep {
protected String columnName;
public ChooseImportStrategyForColumnStep(String columnName) {
this.columnName = columnName;
}
public ChooseExportStrategyForColumnStep ignoreAtImport() {
Column importableColumn = Column.newImportableColumn(columnName, null, null, true, false);
return new ChooseExportStrategyForColumnStep(columnName, importableColumn);
}
public ChooseExportStrategyForColumnStep mandatoryAtImport(String propertyName) {
return mandatoryAtImport(propertyName, Common.STRING);
}
public ChooseExportStrategyForColumnStep mandatoryAtImport(String propertyName, ValueParser valueParser) {
return mandatoryAtImport(valueParser, new Common.BeanProperty(propertyName));
}
public ChooseExportStrategyForColumnStep mandatoryAtImport(ValueSetter valueSetter) {
return mandatoryAtImport(Common.STRING, valueSetter);
}
public ChooseExportStrategyForColumnStep mandatoryAtImport(ValueParser valueParser, ValueSetter valueSetter) {
Column importableColumn = Column.newImportableColumn(columnName, valueParser, valueSetter, false, true);
return new ChooseExportStrategyForColumnStep(columnName, importableColumn);
}
public ChooseExportStrategyForColumnStep optionalAtImport(String propertyName) {
return optionalAtImport(propertyName, Common.STRING);
}
public ChooseExportStrategyForColumnStep optionalAtImport(String propertyName, ValueParser valueParser) {
return optionalAtImport(valueParser, new Common.BeanProperty(propertyName));
}
public ChooseExportStrategyForColumnStep optionalAtImport(ValueSetter valueSetter) {
return optionalAtImport(Common.STRING, valueSetter);
}
public ChooseExportStrategyForColumnStep optionalAtImport(ValueParser valueParser, ValueSetter valueSetter) {
Column importableColumn = Column.newImportableColumn(columnName, valueParser, valueSetter, false, true);
return new ChooseExportStrategyForColumnStep(columnName, importableColumn);
}
}
public class ChooseExportStrategyForColumnStep {
protected String columnName;
protected Column importableColumn;
public ChooseExportStrategyForColumnStep(String columnName, Column importableColumn) {
this.columnName = columnName;
this.importableColumn = importableColumn;
}
public AddColumnStep ignoredAtExport() {
Column exportableColumn = Column.newExportableColumn(columnName, null, null, true);
return new AddColumnStep(importableColumn, exportableColumn);
}
public AddColumnStep writeAtExport(String propertyName) {
return writeAtExport(propertyName, Common.STRING);
}
public AddColumnStep writeAtExport(ValueGetter valueGetter) {
return writeAtExport(valueGetter, Common.STRING);
}
public AddColumnStep writeAtExport(String propertyName, ValueFormatter valueFormatter) {
return writeAtExport( new Common.BeanProperty(propertyName), valueFormatter);
}
public AddColumnStep writeAtExport(ValueGetter valueGetter, ValueFormatter valueFormatter) {
ExportableColumn exportableColumn = Column.newExportableColumn(columnName, valueGetter, valueFormatter, false);
return new AddColumnStep((ImportableColumn) importableColumn, (ExportableColumn) exportableColumn);
}
}
public class AddColumnStep {
protected ImportableColumn importableColumn;
protected ExportableColumn exportableColumn;
public AddColumnStep(ImportableColumn importableColumn, ExportableColumn exportableColumn) {
this.importableColumn = importableColumn;
this.exportableColumn = exportableColumn;
}
public BuildOrAddColumnStep add() {
return addIf(true);
}
public BuildOrAddColumnStep addIf(boolean condition) {
if (condition) {
columnsForImport.add((ImportableColumn) importableColumn);
columnsForExport.add((ExportableColumn) exportableColumn);
}
return new BuildOrAddColumnStep();
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy