Original 2.4
[marc4j.git] / src / org / marc4j / samples / PersonalNamesReader.java
1 package org.marc4j.samples;\r
2 \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
7 \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
14 \r
15 public class PersonalNamesReader implements MarcReader {\r
16 \r
17     private BufferedReader br = null;\r
18     \r
19     private MarcFactory factory;\r
20 \r
21     private String line;\r
22 \r
23     public PersonalNamesReader(InputStream in) {        \r
24         factory = MarcFactory.newInstance();\r
25         br = new BufferedReader(new InputStreamReader(in));\r
26     }\r
27 \r
28     public boolean hasNext() {\r
29         try {\r
30             if ((line = br.readLine()) != null)\r
31                 return true;\r
32             else\r
33                 return false;\r
34         } catch (IOException e) {\r
35             throw new MarcException(e.getMessage(), e);\r
36         }\r
37     }\r
38 \r
39     public Record next() {\r
40         String[] tokens = line.trim().split("\t");\r
41         \r
42         if (tokens.length != 3)\r
43             throw new MarcException("Index out of bounds");\r
44 \r
45         Record record = factory.newRecord("00000nz  a2200000o  4500");\r
46 \r
47         ControlField cf = factory.newControlField("001", tokens[0]);\r
48         record.addVariableField(cf);\r
49 \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
54 \r
55         return record;\r
56     }\r
57 \r
58 }\r