diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/FlatFileItemReader.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/FlatFileItemReader.java index 1d1cf8463..047fa5bab 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/FlatFileItemReader.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/FlatFileItemReader.java @@ -41,6 +41,7 @@ import org.springframework.util.StringUtils; * about the problematic line and its line number. * * @author Robert Kasanicky + * @author Mahmoud Ben Hassine */ public class FlatFileItemReader extends AbstractItemCountingItemStreamItemReader implements ResourceAwareItemReaderItemStream, InitializingBean { @@ -50,6 +51,8 @@ public class FlatFileItemReader extends AbstractItemCountingItemStreamItemRea // default encoding for input files public static final String DEFAULT_CHARSET = Charset.defaultCharset().name(); + public static final String[] DEFAULT_COMMENT_PREFIXES = new String[] { "#" }; + private RecordSeparatorPolicy recordSeparatorPolicy = new SimpleRecordSeparatorPolicy(); private Resource resource; @@ -58,7 +61,7 @@ public class FlatFileItemReader extends AbstractItemCountingItemStreamItemRea private int lineCount = 0; - private String[] comments = new String[] { "#" }; + private String[] comments = DEFAULT_COMMENT_PREFIXES; private boolean noInput = false; @@ -134,7 +137,7 @@ public class FlatFileItemReader extends AbstractItemCountingItemStreamItemRea /** * Setter for comment prefixes. Can be used to ignore header lines as well by using e.g. the first couple of column - * names as a prefix. + * names as a prefix. Defaults to {@link #DEFAULT_COMMENT_PREFIXES}. * * @param comments an array of comment line prefixes. */ diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/builder/FlatFileItemReaderBuilder.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/builder/FlatFileItemReaderBuilder.java index a9feb798b..dd742d162 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/builder/FlatFileItemReaderBuilder.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/builder/FlatFileItemReaderBuilder.java @@ -76,7 +76,8 @@ public class FlatFileItemReaderBuilder { private Resource resource; - private List comments = new ArrayList<>(); + private List comments = + new ArrayList<>(Arrays.asList(FlatFileItemReader.DEFAULT_COMMENT_PREFIXES)); private int linesToSkip = 0; @@ -171,6 +172,7 @@ public class FlatFileItemReaderBuilder { /** * Add a string to the list of Strings that indicate commented lines. + * Defaults to {@link FlatFileItemReader#DEFAULT_COMMENT_PREFIXES}. * * @param comment the string to define a commented line. * @return The current instance of the builder. @@ -182,15 +184,16 @@ public class FlatFileItemReaderBuilder { } /** - * An array of Strings that indicate lines that are comments (and therefore skipped by - * the reader. + * Set an array of Strings that indicate lines that are comments (and therefore skipped by + * the reader). This method overrides the default comment prefixes which are + * {@link FlatFileItemReader#DEFAULT_COMMENT_PREFIXES}. * * @param comments an array of strings to identify comments. * @return The current instance of the builder. * @see FlatFileItemReader#setComments(String[]) */ public FlatFileItemReaderBuilder comments(String... comments) { - this.comments.addAll(Arrays.asList(comments)); + this.comments = Arrays.asList(comments); return this; } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/builder/FlatFileItemReaderBuilderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/builder/FlatFileItemReaderBuilderTests.java index 75f63631e..13acbb516 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/builder/FlatFileItemReaderBuilderTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/builder/FlatFileItemReaderBuilderTests.java @@ -300,7 +300,7 @@ public class FlatFileItemReaderBuilderTests { public void testDefaultComments() throws Exception { FlatFileItemReader reader = new FlatFileItemReaderBuilder() .name("fooReader") - .resource(getResource("1,2,3\n4,5,6")) + .resource(getResource("1,2,3\n4,5,6\n#this is a default comment")) .delimited() .names("first", "second", "third") .targetType(Foo.class)