r2231 - in trunk/nuiton-csv: . src src/license src/main/java/org/nuiton/util/csv src/main/resources/i18n
Author: tchemit Date: 2011-11-22 18:51:31 +0100 (Tue, 22 Nov 2011) New Revision: 2231 Url: http://nuiton.org/repositories/revision/nuiton-utils/2231 Log: continue csv api Added: trunk/nuiton-csv/src/license/ trunk/nuiton-csv/src/license/THIRD-PARTY.properties trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/ImportRuntimeException.java Modified: trunk/nuiton-csv/LICENSE.txt trunk/nuiton-csv/README.txt trunk/nuiton-csv/changelog.txt trunk/nuiton-csv/pom.xml trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/Column.java trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/Common.java trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/Export.java trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/ExportModel.java trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/ExportableColumn.java trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/Import.java trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/ImportExportModel.java trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/ImportModel.java trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/ImportableColumn.java trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/ImportableExportableColumn.java trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/ModelBuilder.java trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/ValidationResult.java trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/ValueFormatter.java trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/ValueGetter.java trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/ValueGetterSetter.java trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/ValueParser.java trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/ValueParserFormatter.java trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/ValueSetter.java trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/package-info.java trunk/nuiton-csv/src/main/resources/i18n/nuiton-csv_en_GB.properties trunk/nuiton-csv/src/main/resources/i18n/nuiton-csv_es_ES.properties trunk/nuiton-csv/src/main/resources/i18n/nuiton-csv_fr_FR.properties Property changes on: trunk/nuiton-csv/LICENSE.txt ___________________________________________________________________ Modified: svn:keywords - Author Date Id Revision + Author Date Id Revision HeadURL Property changes on: trunk/nuiton-csv/README.txt ___________________________________________________________________ Modified: svn:keywords - Author Date Id Revision + Author Date Id Revision HeadURL Property changes on: trunk/nuiton-csv/changelog.txt ___________________________________________________________________ Modified: svn:keywords - Author Date Id Revision + Author Date Id Revision HeadURL Property changes on: trunk/nuiton-csv/pom.xml ___________________________________________________________________ Modified: svn:keywords - Author Date Id Revision + Author Date Id Revision HeadURL Added: trunk/nuiton-csv/src/license/THIRD-PARTY.properties =================================================================== --- trunk/nuiton-csv/src/license/THIRD-PARTY.properties (rev 0) +++ trunk/nuiton-csv/src/license/THIRD-PARTY.properties 2011-11-22 17:51:31 UTC (rev 2231) @@ -0,0 +1,20 @@ +# Generated by org.codehaus.mojo.license.AddThirdPartyMojo +#------------------------------------------------------------------------------- +# Already used licenses in project : +# - BSD License +# - BSD style +# - COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0 +# - Common Public License Version 1.0 +# - GNU Library or Lesser General Public License +# - Indiana University Extreme! Lab Software License, vesion 1.1.1 +# - Lesser General Public License (LGPL) v 3.0 +# - Lesser General Public License (LPGL) +# - Lesser General Public License (LPGL) v 2.1 +# - MIT License +# - The Apache Software License, Version 2.0 +#------------------------------------------------------------------------------- +# Please fill the missing licenses for dependencies : +# +# +#Tue Nov 22 12:24:47 CET 2011 +commons-primitives--commons-primitives--1.0=The Apache Software License, Version 2.0 Property changes on: trunk/nuiton-csv/src/license/THIRD-PARTY.properties ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Property changes on: trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/Column.java ___________________________________________________________________ Modified: svn:keywords - Author Date Id Revision + Author Date Id Revision HeadURL Modified: trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/Common.java =================================================================== --- trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/Common.java 2011-11-22 11:29:24 UTC (rev 2230) +++ trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/Common.java 2011-11-22 17:51:31 UTC (rev 2231) @@ -48,7 +48,57 @@ */ public class Common { + public static final ValueParserFormatter<String> STRING = + new StringValueParser(); + + public static final ValueParserFormatter<Boolean> BOOLEAN = + new BooleanParserFormatter(null, true); + + public static final ValueParserFormatter<Boolean> PRIMITIVE_BOOLEAN = + new BooleanParserFormatter(false, false); + + public static ValueParserFormatter<Character> CHAR = + new CharacterParserFormatter(null, true); + + public static ValueParserFormatter<Integer> INTEGER = + new IntegerParserFormatter(null, true); + + public static ValueParserFormatter<Integer> PRIMITIVE_INTEGER = + new IntegerParserFormatter(0, false); + + public static ValueParserFormatter<Long> LONG = + new LongParserFormatter(null, true); + + public static ValueParserFormatter<Long> PRIMITIVE_LONG = + new LongParserFormatter(0l, false); + + public static ValueParserFormatter<Float> FLOAT = + new FloatParserFormatter(null, true); + + public static ValueParserFormatter<Float> PRIMITIVE_FLOAT = + new FloatParserFormatter(0f, false); + + public static ValueParserFormatter<Double> DOUBLE = + new DoubleParserFormatter(null, true); + + public static ValueParserFormatter<Double> DOUBLE_PRIMITIVE = + new DoubleParserFormatter(0d, false); + + public static final ValueParserFormatter<Date> DAY = + new DateValue("dd/MM/yyyy"); + + public static final ValueParserFormatter<Date> DAY_TIME = + new DateValue("dd/MM/yyyy HH:mm"); + + public static final ValueParserFormatter<Date> DAY_TIME_SECOND = + new DateValue("dd/MM/yyyy HH:mm:ss"); + + /** A week in a given year, ie "1/2011" until "52/2011" */ + public static final ValueParserFormatter<Date> WEEK = + new DateValue("w/yyyy"); + public static class StringValueParser implements ValueParserFormatter<String> { + @Override public String parse(String value) { return value; @@ -60,8 +110,6 @@ } } - public static final ValueParserFormatter<String> STRING = new StringValueParser(); - public static class BeanProperty<E, T> implements ValueGetterSetter<E, T> { protected String propertyName; @@ -87,7 +135,7 @@ protected DateFormat dateFormat; public DateValue(String dateFormatPattern) { - this.dateFormat = new SimpleDateFormat(dateFormatPattern); + dateFormat = new SimpleDateFormat(dateFormatPattern); } @Override @@ -123,19 +171,22 @@ computeToStrings(values, null); } - public ToStringParserFormatter(List<E> values, StringUtil.ToString<E> toString) { + public ToStringParserFormatter(List<E> values, + StringUtil.ToString<E> toString) { computeToStrings(values, toString); } /** fill toStrings and fromString */ - protected void computeToStrings(E[] values, StringUtil.ToString<E> toString) { + protected void computeToStrings(E[] values, + StringUtil.ToString<E> toString) { List<E> valuesAsList = new LinkedList<E>(); Collections.addAll(valuesAsList, values); computeToStrings(valuesAsList, toString); } /** fill toStrings and fromString */ - protected void computeToStrings(List<E> values, StringUtil.ToString<E> toString) { + protected void computeToStrings(List<E> values, + StringUtil.ToString<E> toString) { for (E value : values) { String valueToString; if (toString == null) { @@ -161,26 +212,65 @@ public E parse(String valueAsString) throws ParseException { E value = fromString.get(valueAsString); if (value == null) { - throw new IllegalArgumentException("Unaple to parse value '" + valueAsString + + throw new IllegalArgumentException("Unable to parse value '" + valueAsString + "'. Possible values are " + fromString.keySet().toString()); } return value; } } - public static class BooleanParserFormatter implements - ValueParserFormatter<Boolean> { - protected Boolean defaultValue; + public static class ValueSaver<E, T> implements ValueGetterSetter<E, T> { - protected Boolean nullAllowed; + protected T value; - public BooleanParserFormatter(Boolean defaultValue, - boolean nullAllowed) { + @Override + public T get(E object) throws Exception { + return value; + } + + @Override + public void set(E object, T value) throws Exception { + this.value = value; + } + } + + public static abstract class NullableParserFormatter<O> implements ValueParserFormatter<O> { + + protected O defaultValue; + + protected boolean nullAllowed; + + protected abstract O parseNoneEmptyValue(String value); + + protected NullableParserFormatter(O defaultValue, + boolean nullAllowed) { this.defaultValue = defaultValue; this.nullAllowed = nullAllowed; } @Override + public O parse(String value) throws ParseException { + O result; + if (StringUtils.isBlank(value)) { + result = defaultValue; + } else { + result = parseNoneEmptyValue(value); + } + + if (result == null && !nullAllowed) { + throw new IllegalArgumentException(); + } + return result; + } + } + + public static class BooleanParserFormatter extends NullableParserFormatter<Boolean> { + + public BooleanParserFormatter(Boolean defaultValue, boolean nullAllowed) { + super(defaultValue, nullAllowed); + } + + @Override public String format(Boolean bool) { String value; if (bool == null) { @@ -198,11 +288,9 @@ } @Override - public Boolean parse(String value) throws ParseException { + protected Boolean parseNoneEmptyValue(String value) { Boolean result; - if (StringUtils.isBlank(value)) { - result = defaultValue; - } else if ("?".equals(value)) { + if ("?".equals(value)) { result = null; } else if ("Y".equals(value)) { result = true; @@ -211,48 +299,60 @@ } else { result = Boolean.parseBoolean(value); } - - if (result == null && !nullAllowed) { - throw new IllegalArgumentException(); - } return result; } } - public static final ValueParserFormatter<Boolean> BOOLEAN = - new BooleanParserFormatter(null, true); + public static class CharacterParserFormatter extends NullableParserFormatter<Character> { - public static final ValueParserFormatter<Date> DAY = - new DateValue("dd/MM/yyyy"); + public CharacterParserFormatter(Character defaultValue, boolean nullAllowed) { + super(defaultValue, nullAllowed); + } - public static final ValueParserFormatter<Date> DAY_TIME = - new DateValue("dd/MM/yyyy HH:mm"); + @Override + public String format(Character value) { + String str = ""; + if (value != null) { + str = String.valueOf(value); + } + return str; + } - public static final ValueParserFormatter<Date> DAY_TIME_SECOND = - new DateValue("dd/MM/yyyy HH:mm:ss"); + @Override + protected Character parseNoneEmptyValue(String value) { + return value.charAt(0); + } + } - /** A week in a given year, ie "1/2011" until "52/2011" */ - public static final ValueParserFormatter<Date> WEEK = - new DateValue("w/yyyy"); + public static class IntegerParserFormatter extends NullableParserFormatter<Integer> { - public static class ValueSaver<E, T> implements ValueGetterSetter<E, T> { + public IntegerParserFormatter(Integer defaultValue, boolean nullAllowed) { + super(defaultValue, nullAllowed); + } - protected T value; - @Override - public T get(E object) throws Exception { - return value; + public String format(Integer value) { + String str = ""; + if (value != null) { + str = String.valueOf(value); + } + return str; } @Override - public void set(E object, T value) throws Exception { - this.value = value; + protected Integer parseNoneEmptyValue(String value) { + return Integer.valueOf(value); } } - public static class IntegerParserFormatter implements ValueParserFormatter<Integer> { + public static class LongParserFormatter extends NullableParserFormatter<Long> { + + public LongParserFormatter(Long defaultValue, boolean nullAllowed) { + super(defaultValue, nullAllowed); + } + @Override - public String format(Integer value) { + public String format(Long value) { String str = ""; if (value != null) { str = String.valueOf(value); @@ -261,18 +361,40 @@ } @Override - public Integer parse(String value) throws ParseException { - Integer integer = null; - if (StringUtils.isNotBlank(value)) { - integer = Integer.valueOf(value); + protected Long parseNoneEmptyValue(String value) { + return Long.valueOf(value); + } + + } + + public static class FloatParserFormatter extends NullableParserFormatter<Float> { + + public FloatParserFormatter(Float defaultValue, boolean nullAllowed) { + super(defaultValue, nullAllowed); + } + + @Override + public String format(Float value) { + String str = ""; + if (value != null) { + str = String.valueOf(value); } - return integer; + return str; } + + @Override + protected Float parseNoneEmptyValue(String value) { + return Float.valueOf(value); + } + } - public static ValueParserFormatter<Integer> INTEGER = new IntegerParserFormatter(); + public static class DoubleParserFormatter extends NullableParserFormatter<Double> { - public static class DoubleParserFormatter implements ValueParserFormatter<Double> { + public DoubleParserFormatter(Double defaultValue, boolean nullAllowed) { + super(defaultValue, nullAllowed); + } + @Override public String format(Double value) { String str = ""; @@ -283,14 +405,11 @@ } @Override - public Double parse(String value) throws ParseException { - Double doubleValue = null; - if (StringUtils.isNotBlank(value)) { - doubleValue = Double.valueOf(value); - } - return doubleValue; + protected Double parseNoneEmptyValue(String value) { + return Double.valueOf(value); } + } - public static ValueParserFormatter<Double> DOUBLE = new DoubleParserFormatter(); + } Property changes on: trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/Common.java ___________________________________________________________________ Modified: svn:keywords - Author Date Id Revision + Author Date Id Revision HeadURL Modified: trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/Export.java =================================================================== --- trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/Export.java 2011-11-22 11:29:24 UTC (rev 2230) +++ trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/Export.java 2011-11-22 17:51:31 UTC (rev 2231) @@ -55,7 +55,7 @@ this.data = data; } - public InputStream startExport() throws Exception { + public String startExportAsString() throws Exception { String separator = String.valueOf(model.getSeparator()); StringBuilder csv = new StringBuilder(); @@ -65,37 +65,37 @@ headerNames.add(column.getHeaderName()); } String headersLine = StringUtil.join(headerNames, separator, true); - csv.append(headersLine).append("\n"); + csv.append(headersLine).append('\n'); if (log.isDebugEnabled()) { log.debug("headers for export are '" + headersLine + "'"); log.debug("will export " + data.size() + " lines"); } + Collection<ExportableColumn<E, Object>> columnsForExport = + model.getColumnsForExport(); + for (E object : data) { - for (ExportableColumn<E, Object> column : model.getColumnsForExport()) { + for (ExportableColumn<E, Object> column : + columnsForExport) { Object value = column.getValue(object); String formattedValue = column.formatValue(value); if (formattedValue == null) { - formattedValue = ""; - if (log.isWarnEnabled()) { - log.warn("column for header " + column.getHeaderName() + - " returned a null value." + column.toString()); - } + throw new NullPointerException( + "column for header " + column.getHeaderName() + + " returned a null value." + column.toString()); } - boolean valueNeedQuotes = formattedValue.contains(separator) - || formattedValue.contains("\n") - || formattedValue.contains(";") - || formattedValue.contains(","); - if (valueNeedQuotes) { - // escape '"' char to prevent - formattedValue = formattedValue.replaceAll("\"", "\"\""); - formattedValue = "\"" + formattedValue + "\""; - } + formattedValue = + StringUtil.escapeCsvValue(formattedValue, separator); csv.append(formattedValue).append(separator); } - csv.append("\n"); + csv.append('\n'); } - return IOUtils.toInputStream(csv); + return csv.toString(); } + + public InputStream startExport() throws Exception { + String content = startExportAsString(); + return IOUtils.toInputStream(content); + } } Property changes on: trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/Export.java ___________________________________________________________________ Modified: svn:keywords - Author Date Id Revision + Author Date Id Revision HeadURL Property changes on: trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/ExportModel.java ___________________________________________________________________ Modified: svn:keywords - Author Date Id Revision + Author Date Id Revision HeadURL Property changes on: trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/ExportableColumn.java ___________________________________________________________________ Modified: svn:keywords - Author Date Id Revision + Author Date Id Revision HeadURL Modified: trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/Import.java =================================================================== --- trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/Import.java 2011-11-22 11:29:24 UTC (rev 2230) +++ trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/Import.java 2011-11-22 17:51:31 UTC (rev 2231) @@ -28,7 +28,6 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.util.StringUtil; -import org.nuiton.util.TimeLog; import java.io.IOException; import java.io.InputStream; @@ -58,9 +57,6 @@ /** Logger. */ private static final Log log = LogFactory.getLog(Import.class); - private static final TimeLog timeLog = - new TimeLog(Import.class + "TimeLog"); - protected ImportModel<E> model; protected CsvReader reader; @@ -181,16 +177,12 @@ public Iterator<E> startImport() throws IOException { - long startValidateCSV = TimeLog.getTime(); - ValidationResult validationResult = validateCsv(); if (!validationResult.isSuccess()) { throw new IOException(validationResult.getMessage()); } - timeLog.log(startValidateCSV, "validate CSV", "done"); - readFirstLine(); Iterator<E> result = new Iterator<E>() { @@ -207,7 +199,7 @@ } @Override - public E next() throws NoSuchElementException { + public E next() throws NoSuchElementException, ImportRuntimeException { if (!hasNext) { throw new NoSuchElementException(); @@ -215,69 +207,54 @@ lineNumber += 1; - long time = TimeLog.getTime(); + E element = model.newEmptyInstance(); - E element = startImportLine(); + for (ImportableColumn<E, Object> field : getNonIgnoredHeaders()) { - time = timeLog.log(time, "newEmptyInstance"); + // read value from csv cell + String value; + try { + value = reader.get(field.getHeaderName()); + } catch (Exception e) { + reader.close(); + throw new ImportRuntimeException(_("csv.import.error.unableToReadField", field.getHeaderName(), lineNumber), e); + } - try { - for (ImportableColumn<E, Object> field : getNonIgnoredHeaders()) { + // contravariance ftw + Object parsedValue; + try { + parsedValue = field.parseValue(value); + } catch (Exception e) { + String message = _("csv.import.error.unableToParseValue", value, field.getHeaderName(), lineNumber) + + "\n" + e.getMessage(); + throw new ImportRuntimeException(message, e); + } - time = timeLog.log(time, "readValue", "read value for field " + field.getHeaderName()); - String value; - try { - value = reader.get(field.getHeaderName()); - } catch (IOException e) { - reader.close(); - throw new RuntimeException(_("csv.import.error.unableToReadField", field.getHeaderName(), lineNumber), e); + // set value to element + try { + field.setValue(element, parsedValue); + } catch (Exception e) { + String message = _("csv.import.error.unableToSetValue", + parsedValue, + element.toString(), + lineNumber, field.getHeaderName()); + if (log.isErrorEnabled()) { + log.error(message); } - time = timeLog.log(time, "readValue", "end read"); - - // contravariance ftw - Object parsedValue; - try { - parsedValue = field.parseValue(value); - } catch (Exception e) { - String message = _("csv.import.error.unableToParseValue", value, field.getHeaderName(), lineNumber) - + "\n" + e.getMessage(); - throw new RuntimeException(message, e); - } - - time = timeLog.log(time, "parseValue"); - - try { - field.setValue(element, parsedValue); - } catch (Exception e) { - String message = _("csv.import.error.unableToSetValue", - parsedValue, - element.toString(), - lineNumber, field.getHeaderName()); - if (log.isErrorEnabled()) { - log.error(message); - } - throw new RuntimeException(message, e); - } - - time = timeLog.log(time, "setValue"); + throw new ImportRuntimeException(message, e); } - } finally { - endImportLine(element); + + lastElement = element; } - lastElement = element; - try { hasNext = reader.readRecord(); } catch (IOException e) { reader.close(); - throw new RuntimeException(_("csv.import.error.unableToReadLine", lineNumber + 1), e); + throw new ImportRuntimeException( + _("csv.import.error.unableToReadLine", lineNumber + 1), e); } - if (log.isTraceEnabled()) { - log.trace(timeLog.getCallCount().toString()); - } - return lastElement; } @@ -286,19 +263,9 @@ throw new UnsupportedOperationException(); } }; - return result; } - public E startImportLine() { - E element = model.newEmptyInstance(); - return element; - } - - public void endImportLine(E element) { - // by default do nothing - } - protected void readFirstLine() { try { boolean emptyFile = !reader.readRecord(); Property changes on: trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/Import.java ___________________________________________________________________ Modified: svn:keywords - Author Date Id Revision + Author Date Id Revision HeadURL Property changes on: trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/ImportExportModel.java ___________________________________________________________________ Modified: svn:keywords - Author Date Id Revision + Author Date Id Revision HeadURL Property changes on: trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/ImportModel.java ___________________________________________________________________ Modified: svn:keywords - Author Date Id Revision + Author Date Id Revision HeadURL Added: trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/ImportRuntimeException.java =================================================================== --- trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/ImportRuntimeException.java (rev 0) +++ trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/ImportRuntimeException.java 2011-11-22 17:51:31 UTC (rev 2231) @@ -0,0 +1,47 @@ +/* + * #%L + * Nuiton Utils :: Nuiton Csv + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2011 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 + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * #L% + */ +package org.nuiton.util.csv; + +/** + * TODO + * + * @author tchemit <chemit@codelutin.com> + * @since 2.4 + */ +public class ImportRuntimeException extends RuntimeException{ + private static final long serialVersionUID = 1L; + + public ImportRuntimeException(String message) { + super(message); + } + + public ImportRuntimeException(String message, Throwable cause) { + super(message, cause); + } + + public ImportRuntimeException(Throwable cause) { + super(cause); + } +} Property changes on: trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/ImportRuntimeException.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Property changes on: trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/ImportableColumn.java ___________________________________________________________________ Modified: svn:keywords - Author Date Id Revision + Author Date Id Revision HeadURL Property changes on: trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/ImportableExportableColumn.java ___________________________________________________________________ Modified: svn:keywords - Author Date Id Revision + Author Date Id Revision HeadURL Property changes on: trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/ModelBuilder.java ___________________________________________________________________ Modified: svn:keywords - Author Date Id Revision + Author Date Id Revision HeadURL Property changes on: trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/ValidationResult.java ___________________________________________________________________ Modified: svn:keywords - Author Date Id Revision + Author Date Id Revision HeadURL Property changes on: trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/ValueFormatter.java ___________________________________________________________________ Modified: svn:keywords - Author Date Id Revision + Author Date Id Revision HeadURL Property changes on: trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/ValueGetter.java ___________________________________________________________________ Modified: svn:keywords - Author Date Id Revision + Author Date Id Revision HeadURL Property changes on: trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/ValueGetterSetter.java ___________________________________________________________________ Modified: svn:keywords - Author Date Id Revision + Author Date Id Revision HeadURL Property changes on: trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/ValueParser.java ___________________________________________________________________ Modified: svn:keywords - Author Date Id Revision + Author Date Id Revision HeadURL Property changes on: trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/ValueParserFormatter.java ___________________________________________________________________ Modified: svn:keywords - Author Date Id Revision + Author Date Id Revision HeadURL Property changes on: trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/ValueSetter.java ___________________________________________________________________ Modified: svn:keywords - Author Date Id Revision + Author Date Id Revision HeadURL Property changes on: trunk/nuiton-csv/src/main/java/org/nuiton/util/csv/package-info.java ___________________________________________________________________ Modified: svn:keywords - Author Date Id Revision + Author Date Id Revision HeadURL Property changes on: trunk/nuiton-csv/src/main/resources/i18n/nuiton-csv_en_GB.properties ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Property changes on: trunk/nuiton-csv/src/main/resources/i18n/nuiton-csv_es_ES.properties ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Property changes on: trunk/nuiton-csv/src/main/resources/i18n/nuiton-csv_fr_FR.properties ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native
participants (1)
-
tchemit@users.nuiton.org