Skip to content

Commit dfac467

Browse files
committed
Added multiline support to FormetaReader.
Changed the `FormetaReader` to use `FormetaRecordsReader` for record plitting instead of the `LineReader` module. This allows to process sequences of multi-line formeta records.
1 parent 53c36b9 commit dfac467

File tree

3 files changed

+23
-15
lines changed

3 files changed

+23
-15
lines changed

src/main/java/org/culturegraph/mf/stream/reader/FormetaReader.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,15 @@
1616
package org.culturegraph.mf.stream.reader;
1717

1818
import org.culturegraph.mf.stream.converter.FormetaDecoder;
19+
import org.culturegraph.mf.stream.converter.FormetaRecordsReader;
1920

2021
/**
2122
* @author Markus Geipel
2223
*/
2324
public class FormetaReader extends ReaderBase<FormetaDecoder> {
2425

2526
public FormetaReader() {
26-
super(new FormetaDecoder());
27+
super(new FormetaRecordsReader(), new FormetaDecoder());
2728
}
2829

2930
}

src/main/java/org/culturegraph/mf/stream/reader/ReaderBase.java

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package org.culturegraph.mf.stream.reader;
1717

1818
import org.culturegraph.mf.framework.ObjectPipe;
19+
import org.culturegraph.mf.framework.ObjectReceiver;
1920
import org.culturegraph.mf.framework.StreamReceiver;
2021
import org.culturegraph.mf.stream.converter.LineReader;
2122

@@ -25,18 +26,23 @@
2526
*
2627
* @param <D> type of the decoder used
2728
*/
28-
public class ReaderBase<D extends ObjectPipe<String, StreamReceiver>> implements Reader {
29-
private final LineReader lineReader;
29+
public class ReaderBase<D extends ObjectPipe<String, StreamReceiver>> implements Reader {
30+
private final ObjectPipe<java.io.Reader, ObjectReceiver<String>> recordReader;
3031
private final D decoder;
31-
32-
public ReaderBase(final D decoder) {
32+
33+
public ReaderBase(final ObjectPipe<java.io.Reader, ObjectReceiver<String>> recordReader,
34+
final D decoder) {
3335
super();
34-
36+
37+
this.recordReader = recordReader;
3538
this.decoder = decoder;
36-
lineReader = new LineReader();
37-
lineReader.setReceiver(this.decoder);
39+
this.recordReader.setReceiver(this.decoder);
40+
}
41+
42+
public ReaderBase(final D decoder) {
43+
this(new LineReader(), decoder);
3844
}
39-
45+
4046
public final D getDecoder() {
4147
return decoder;
4248
}
@@ -46,10 +52,10 @@ public final <R extends StreamReceiver> R setReceiver(final R receiver) {
4652
decoder.setReceiver(receiver);
4753
return receiver;
4854
}
49-
55+
5056
@Override
5157
public final void process(final java.io.Reader reader) {
52-
lineReader.process(reader);
58+
recordReader.process(reader);
5359
}
5460

5561
@Override
@@ -59,12 +65,12 @@ public final void read(final String entry) {
5965

6066
@Override
6167
public final void resetStream() {
62-
lineReader.resetStream();
68+
recordReader.resetStream();
6369
}
64-
70+
6571
@Override
6672
public final void closeStream() {
67-
lineReader.closeStream();
73+
recordReader.closeStream();
6874
}
69-
75+
7076
}

src/main/resources/metastream-readers.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,5 @@ text/x-pica org.culturegraph.mf.stream.reader.PicaReader
1414
text/x-mab2 org.culturegraph.mf.stream.reader.MabReader
1515
text/x-marc21 org.culturegraph.mf.stream.reader.MarcReader
1616
text/x-cg+xml org.culturegraph.mf.stream.reader.CGXmlReader
17+
text/x-formeta org.culturegraph.mf.stream.reader.FormetaReader
1718
application/x-cgentity org.culturegraph.mf.stream.reader.CGEntityReader

0 commit comments

Comments
 (0)