1 package org.marc4j.samples;
\r
3 import java.io.BufferedReader;
\r
4 import java.io.IOException;
\r
5 import java.io.InputStream;
\r
6 import java.io.InputStreamReader;
\r
8 import org.marc4j.MarcException;
\r
9 import org.marc4j.MarcReader;
\r
10 import org.marc4j.marc.ControlField;
\r
11 import org.marc4j.marc.DataField;
\r
12 import org.marc4j.marc.MarcFactory;
\r
13 import org.marc4j.marc.Record;
\r
15 public class PersonalNamesReader implements MarcReader {
\r
17 private BufferedReader br = null;
\r
19 private MarcFactory factory;
\r
21 private String line;
\r
23 public PersonalNamesReader(InputStream in) {
\r
24 factory = MarcFactory.newInstance();
\r
25 br = new BufferedReader(new InputStreamReader(in));
\r
28 public boolean hasNext() {
\r
30 if ((line = br.readLine()) != null)
\r
34 } catch (IOException e) {
\r
35 throw new MarcException(e.getMessage(), e);
\r
39 public Record next() {
\r
40 String[] tokens = line.trim().split("\t");
\r
42 if (tokens.length != 3)
\r
43 throw new MarcException("Index out of bounds");
\r
45 Record record = factory.newRecord("00000nz a2200000o 4500");
\r
47 ControlField cf = factory.newControlField("001", tokens[0]);
\r
48 record.addVariableField(cf);
\r
50 DataField df = factory.newDataField("100", '1', ' ');
\r
51 df.addSubfield(factory.newSubfield('a', tokens[1]));
\r
52 df.addSubfield(factory.newSubfield('d', tokens[2]));
\r
53 record.addVariableField(df);
\r