Skip to content

Commit 88c1613

Browse files
hagbeckdr0i
authored andcommitted
Add support of separator as FLUX parameter for CsvDecoder
Assume that the first char of a String is meant for this case (reason: char is needed for CSVReader).
1 parent b884850 commit 88c1613

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

metafacture-csv/src/main/java/org/metafacture/csv/CsvDecoder.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,20 @@
4242
public final class CsvDecoder extends DefaultObjectPipe<String, StreamReceiver> {
4343

4444
private static final char DEFAULT_SEP = ',';
45-
private final char separator;
45+
private char separator;
4646

4747
private String[] header = new String[0];
4848
private int count;
4949
private boolean hasHeader;
5050

51+
/**
52+
* @param separator to split lines
53+
*/
54+
public CsvDecoder(final String separator) {
55+
super();
56+
this.separator = separator.charAt(0);
57+
}
58+
5159
/**
5260
* @param separator to split lines
5361
*/
@@ -109,4 +117,5 @@ public void setHasHeader(final boolean hasHeader) {
109117
this.hasHeader = hasHeader;
110118
}
111119

120+
public void setSeparator(final String separator) { this.separator = separator.charAt(0); }
112121
}

metafacture-csv/src/test/java/org/metafacture/csv/CsvDecoderTest.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,4 +74,18 @@ public void testQuoted() {
7474
ordered.verify(receiver).endRecord();
7575
}
7676

77+
@Test
78+
public void testTabSeparated() {
79+
80+
decoder.setSeparator("\t");
81+
82+
decoder.process("a\tb\tc");
83+
final InOrder ordered = inOrder(receiver);
84+
ordered.verify(receiver).startRecord("1");
85+
ordered.verify(receiver).literal("h1", "a");
86+
ordered.verify(receiver).literal("h2", "b");
87+
ordered.verify(receiver).literal("h3", "c");
88+
ordered.verify(receiver).endRecord();
89+
}
90+
7791
}

0 commit comments

Comments
 (0)