Make List type safe. Remove/suppress all warnings.
[marc4j.git] / src / org / marc4j / samples / DataFieldExample.java
1 // $Id: DataFieldExample.java,v 1.1 2006/08/04 12:39:58 bpeters Exp $\r
2 /**\r
3  * Copyright (C) 2002-2006 Bas Peters\r
4  *\r
5  * This file is part of MARC4J\r
6  *\r
7  * MARC4J is free software; you can redistribute it and/or\r
8  * modify it under the terms of the GNU Lesser General Public \r
9  * License as published by the Free Software Foundation; either \r
10  * version 2.1 of the License, or (at your option) any later version.\r
11  *\r
12  * MARC4J is distributed in the hope that it will be useful,\r
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
15  * Lesser General Public License for more details.\r
16  *\r
17  * You should have received a copy of the GNU Lesser General Public \r
18  * License along with MARC4J; if not, write to the Free Software\r
19  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
20  */\r
21 package org.marc4j.samples;\r
22 \r
23 import java.io.InputStream;\r
24 import java.util.Iterator;\r
25 import java.util.List;\r
26 \r
27 import org.marc4j.MarcReader;\r
28 import org.marc4j.MarcStreamReader;\r
29 import org.marc4j.marc.DataField;\r
30 import org.marc4j.marc.Record;\r
31 import org.marc4j.marc.Subfield;\r
32 import org.marc4j.marc.VariableField;\r
33 \r
34 /**\r
35  * Read data fields.\r
36  * \r
37  * @author Bas Peters\r
38  * @version $Revision: 1.1 $\r
39  */\r
40 public class DataFieldExample {\r
41 \r
42     public static void main(String args[]) throws Exception {\r
43 \r
44         InputStream input = DataFieldExample.class\r
45                 .getResourceAsStream("resources/summerland.mrc");\r
46 \r
47         MarcReader reader = new MarcStreamReader(input);\r
48         while (reader.hasNext()) {\r
49             Record record = reader.next();\r
50 \r
51             // get the first field occurence for a given tag\r
52             DataField dataField = (DataField) record.getVariableField("245");\r
53             System.out.println(dataField.toString() + '\n');\r
54 \r
55             // get all occurences for a particular tag\r
56             List<VariableField> variableFields = record.getVariableFields("650");\r
57             Iterator<VariableField> vi = variableFields.iterator();\r
58             while (vi.hasNext()) {\r
59                 VariableField variableField = vi.next();\r
60                 System.out.println(variableField.toString());\r
61             }\r
62             System.out.print('\n');\r
63 \r
64             // get all occurences for a given list of tags\r
65             String[] tags = { "010", "100", "245", "250", "260", "300" };\r
66             variableFields = record.getVariableFields(tags);\r
67             vi = variableFields.iterator();\r
68             while (vi.hasNext()) {\r
69                 VariableField vf = (DataField) vi.next();\r
70                 if (vf instanceof DataField)\r
71                   System.out.println( ((DataField) vf).toString());\r
72                 else\r
73                  System.err.println("Not a Datafield: " + vf.toString());\r
74             }\r
75             System.out.print('\n');\r
76 \r
77             // read indicators and subfields\r
78             dataField = (DataField) record.getVariableField("245");\r
79             String tag = dataField.getTag();\r
80             char ind1 = dataField.getIndicator1();\r
81             char ind2 = dataField.getIndicator2();\r
82 \r
83             System.out.println("Tag: " + tag + " Indicator 1: " + ind1\r
84                     + " Indicator 2: " + ind2);\r
85 \r
86             List<Subfield> subfields = dataField.getSubfields();\r
87             Iterator<Subfield> si = subfields.iterator();\r
88 \r
89             while (si.hasNext()) {\r
90                 Subfield subfield = si.next();\r
91                 char code = subfield.getCode();\r
92                 String data = subfield.getData();\r
93 \r
94                 System.out.println("Subfield code: " + code + " Data element: "\r
95                         + data);\r
96             }\r
97             System.out.print('\n');\r
98 \r
99             // retrieve the first occurrence of subfield with code 'a'\r
100             Subfield subfield = dataField.getSubfield('a');\r
101             System.out.println("Title proper: " + subfield.getData());\r
102 \r
103         }\r
104 \r
105     }\r
106 \r
107 }