Skip to content

Commit fe22c5a

Browse files
committed
Changed default separator to the global separator (0x001d).
1 parent f3d808b commit fe22c5a

File tree

2 files changed

+44
-44
lines changed

2 files changed

+44
-44
lines changed

src/main/java/org/culturegraph/mf/stream/converter/RecordReader.java

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,10 @@
2828
/**
2929
* <p>Reads data from a {@code Reader} and splits it into individual
3030
* records.</p>
31-
*
32-
* <p>The default separator is the new line character (0x0a). Empty
33-
* records are skipped by default.</p>
34-
*
31+
*
32+
* <p>The default separator is the global separator character (0x001d).
33+
* Empty records are skipped by default.</p>
34+
*
3535
* @author Christoph Böhme
3636
*
3737
*/
@@ -41,28 +41,28 @@
4141
public final class RecordReader extends
4242
DefaultObjectPipe<Reader, ObjectReceiver<String>> {
4343

44-
public static final char DEFAULT_SEPARATOR = '\n';
45-
44+
public static final char DEFAULT_SEPARATOR = '\u001d';
45+
4646
private static final int BUFFER_SIZE = 1024 * 1024 * 16;
4747

4848
private final StringBuilder builder = new StringBuilder();
4949
private final char[] buffer = new char[BUFFER_SIZE];
50-
50+
5151
private char separator = DEFAULT_SEPARATOR;
5252
private boolean skipEmptyRecords = true;
53-
53+
5454
public void setSeparator(final char separator) {
5555
this.separator = separator;
5656
}
57-
57+
5858
public char getSeparator() {
5959
return separator;
6060
}
61-
61+
6262
public void setSkipEmptyRecords(final boolean skipEmptyRecords) {
6363
this.skipEmptyRecords = skipEmptyRecords;
6464
}
65-
65+
6666
public boolean getSkipEmptyRecords() {
6767
return skipEmptyRecords;
6868
}
@@ -89,18 +89,18 @@ public void process(final Reader reader) {
8989
if (!nothingRead) {
9090
emitRecord();
9191
}
92-
92+
9393
} catch (final IOException e) {
9494
throw new MetafactureException(e);
9595
}
9696
}
97-
97+
9898
private void emitRecord() {
9999
final String record = builder.toString();
100100
if (!skipEmptyRecords || !record.isEmpty()) {
101101
getReceiver().process(record);
102102
builder.delete(0, builder.length());
103103
}
104104
}
105-
105+
106106
}

src/test/java/org/culturegraph/mf/stream/converter/RecordReaderTest.java

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232

3333
/**
3434
* Tests for {@link RecordReader}.
35-
*
35+
*
3636
* @author Christoph Böhme
3737
*
3838
*/
@@ -42,20 +42,20 @@ public final class RecordReaderTest {
4242
private static final String RECORD2 = "record2";
4343
private static final String EMPTY_RECORD = "";
4444
private static final char SEPARATOR = ':';
45-
private static final char DEFAULT_SEPARATOR = '\n';
46-
45+
private static final char DEFAULT_SEPARATOR = '\u001d';
46+
4747
private RecordReader recordReader;
48-
48+
4949
@Mock
5050
private ObjectReceiver<String> receiver;
51-
51+
5252
@Before
5353
public void setup() {
5454
MockitoAnnotations.initMocks(this);
5555
recordReader = new RecordReader();
5656
recordReader.setReceiver(receiver);
5757
}
58-
58+
5959
@After
6060
public void cleanup() {
6161
recordReader.closeStream();
@@ -68,7 +68,7 @@ public void testShouldProcessRecordsFollowedbySeparator() {
6868
recordReader.process(new StringReader(
6969
RECORD1 + SEPARATOR +
7070
RECORD2 + SEPARATOR));
71-
71+
7272
final InOrder ordered = inOrder(receiver);
7373
ordered.verify(receiver).process(RECORD1);
7474
ordered.verify(receiver).process(RECORD2);
@@ -78,56 +78,56 @@ public void testShouldProcessRecordsFollowedbySeparator() {
7878
@Test
7979
public void testShouldProcessRecordsPrecededbySeparator() {
8080
recordReader.setSeparator(SEPARATOR);
81-
81+
8282
recordReader.process(new StringReader(
8383
SEPARATOR + RECORD1 +
8484
SEPARATOR + RECORD2));
85-
85+
8686
final InOrder ordered = inOrder(receiver);
8787
ordered.verify(receiver).process(RECORD1);
8888
ordered.verify(receiver).process(RECORD2);
8989
verifyNoMoreInteractions(receiver);
9090
}
91-
91+
9292
@Test
9393
public void testShouldProcessRecordsSeparatedBySeparator() {
9494
recordReader.setSeparator(SEPARATOR);
9595

9696
recordReader.process(new StringReader(
9797
RECORD1 + SEPARATOR +
9898
RECORD2));
99-
99+
100100
final InOrder ordered = inOrder(receiver);
101101
ordered.verify(receiver).process(RECORD1);
102102
ordered.verify(receiver).process(RECORD2);
103103
verifyNoMoreInteractions(receiver);
104104
}
105-
105+
106106
@Test
107107
public void testShouldProcessSingleRecordWithoutSeparator() {
108108
recordReader.setSeparator(SEPARATOR);
109109

110110
recordReader.process(new StringReader(
111111
RECORD1));
112-
112+
113113
final InOrder ordered = inOrder(receiver);
114114
ordered.verify(receiver).process(RECORD1);
115115
verifyNoMoreInteractions(receiver);
116116
}
117-
117+
118118
@Test
119119
public void testShouldNotEmitRecordIfInputIsEmpty() {
120120
recordReader.setSeparator(SEPARATOR);
121121
// Make sure empty records are
122122
// normally emitted:
123123
recordReader.setSkipEmptyRecords(false);
124-
124+
125125
recordReader.process(new StringReader(
126126
EMPTY_RECORD));
127-
127+
128128
verifyZeroInteractions(receiver);
129129
}
130-
130+
131131
@Test
132132
public void testShouldSkipEmptyRecordsByDefault() {
133133
recordReader.setSeparator(SEPARATOR);
@@ -136,13 +136,13 @@ public void testShouldSkipEmptyRecordsByDefault() {
136136
RECORD1 + SEPARATOR +
137137
EMPTY_RECORD + SEPARATOR +
138138
RECORD2));
139-
139+
140140
final InOrder ordered = inOrder(receiver);
141141
ordered.verify(receiver).process(RECORD1);
142142
ordered.verify(receiver).process(RECORD2);
143143
verifyNoMoreInteractions(receiver);
144144
}
145-
145+
146146
@Test
147147
public void testShouldOutputEmptyRecordsIfConfigured() {
148148
recordReader.setSeparator(SEPARATOR);
@@ -152,14 +152,14 @@ public void testShouldOutputEmptyRecordsIfConfigured() {
152152
RECORD1 + SEPARATOR +
153153
EMPTY_RECORD + SEPARATOR +
154154
RECORD2));
155-
155+
156156
final InOrder ordered = inOrder(receiver);
157157
ordered.verify(receiver).process(RECORD1);
158158
ordered.verify(receiver).process(EMPTY_RECORD);
159159
ordered.verify(receiver).process(RECORD2);
160160
verifyNoMoreInteractions(receiver);
161161
}
162-
162+
163163
@Test
164164
public void testShouldOutputEmptyRecordsAtStartOfInputIfConfigured() {
165165
recordReader.setSeparator(SEPARATOR);
@@ -169,14 +169,14 @@ public void testShouldOutputEmptyRecordsAtStartOfInputIfConfigured() {
169169
EMPTY_RECORD + SEPARATOR +
170170
RECORD1 + SEPARATOR +
171171
RECORD2));
172-
172+
173173
final InOrder ordered = inOrder(receiver);
174174
ordered.verify(receiver).process(EMPTY_RECORD);
175175
ordered.verify(receiver).process(RECORD1);
176176
ordered.verify(receiver).process(RECORD2);
177177
verifyNoMoreInteractions(receiver);
178178
}
179-
179+
180180
@Test
181181
public void testShouldOutputEmptyRecordsAtEndOfInputIfConfigured() {
182182
recordReader.setSeparator(SEPARATOR);
@@ -186,7 +186,7 @@ public void testShouldOutputEmptyRecordsAtEndOfInputIfConfigured() {
186186
RECORD1 + SEPARATOR +
187187
RECORD2 + SEPARATOR +
188188
EMPTY_RECORD));
189-
189+
190190
final InOrder ordered = inOrder(receiver);
191191
ordered.verify(receiver).process(RECORD1);
192192
ordered.verify(receiver).process(RECORD2);
@@ -195,17 +195,17 @@ public void testShouldOutputEmptyRecordsAtEndOfInputIfConfigured() {
195195
}
196196

197197
@Test
198-
public void testShouldUseNewLineAsDefaultSeparator() {
198+
public void testShouldUseGlobalSeparatorAsDefaultSeparator() {
199199
recordReader.process(new StringReader(
200200
RECORD1 + DEFAULT_SEPARATOR +
201201
RECORD2 + DEFAULT_SEPARATOR));
202-
202+
203203
final InOrder ordered = inOrder(receiver);
204204
ordered.verify(receiver).process(RECORD1);
205205
ordered.verify(receiver).process(RECORD2);
206206
verifyNoMoreInteractions(receiver);
207207
}
208-
208+
209209
@Test
210210
public void testShouldProcessMultipleReaders() {
211211
recordReader.setSeparator(SEPARATOR);
@@ -216,13 +216,13 @@ public void testShouldProcessMultipleReaders() {
216216
recordReader.process(new StringReader(
217217
RECORD2 + SEPARATOR +
218218
RECORD1));
219-
219+
220220
final InOrder ordered = inOrder(receiver);
221221
ordered.verify(receiver).process(RECORD1);
222222
ordered.verify(receiver, times(2)).process(RECORD2);
223223
ordered.verify(receiver).process(RECORD1);
224224
verifyNoMoreInteractions(receiver);
225-
225+
226226
}
227-
227+
228228
}

0 commit comments

Comments
 (0)