1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 package net.sf.flatpack;
34
35 import java.io.File;
36 import java.io.FileReader;
37 import java.io.InputStream;
38 import java.io.InputStreamReader;
39 import java.io.Reader;
40
41 import net.sf.flatpack.xml.MapParser;
42
43
44
45
46
47 public class DelimiterParser extends AbstractDelimiterParser {
48 private InputStream pzmapXMLStream = null;
49 private File pzmapXML = null;
50 private Reader pzmapReader;
51
52
53
54
55 private InputStream dataSourceStream = null;
56 private File dataSource = null;
57
58 public DelimiterParser(final File pzmapXML, final File dataSource, final char delimiter, final char qualifier, final boolean ignoreFirstRecord) {
59 super(null, delimiter, qualifier, ignoreFirstRecord);
60 this.pzmapXML = pzmapXML;
61 this.dataSource = dataSource;
62 }
63
64 public DelimiterParser(final InputStream pzmapXMLStream, final InputStream dataSourceStream, final char delimiter, final char qualifier,
65 final boolean ignoreFirstRecord) {
66 super(null, delimiter, qualifier, ignoreFirstRecord);
67 this.pzmapXMLStream = pzmapXMLStream;
68 this.dataSourceStream = dataSourceStream;
69 }
70
71 public DelimiterParser(final File dataSource, final char delimiter, final char qualifier, final boolean ignoreFirstRecord) {
72 super(null, delimiter, qualifier, ignoreFirstRecord);
73 this.dataSource = dataSource;
74 }
75
76 public DelimiterParser(final InputStream dataSourceStream, final char delimiter, final char qualifier, final boolean ignoreFirstRecord) {
77 super(null, delimiter, qualifier, ignoreFirstRecord);
78 this.dataSourceStream = dataSourceStream;
79 }
80
81 public DelimiterParser(final Reader dataSourceReader, final char delimiter, final char qualifier, final boolean ignoreFirstRecord) {
82 super(dataSourceReader, delimiter, qualifier, ignoreFirstRecord);
83 }
84
85 public DelimiterParser(final Reader dataSourceReader, final Reader pzmapReader, final char delimiter, final char qualifier,
86 final boolean ignoreFirstRecord) {
87 super(dataSourceReader, delimiter, qualifier, ignoreFirstRecord);
88 this.pzmapReader = pzmapReader;
89 }
90
91 @Override
92 protected void init() {
93 try {
94
95
96 initStreamOrSource(dataSourceStream, dataSource);
97
98 boolean closeMapReader = false;
99 if (pzmapXML != null) {
100 this.pzmapReader = new FileReader(pzmapXML);
101 closeMapReader = true;
102 } else if (pzmapXMLStream != null) {
103 this.pzmapReader = new InputStreamReader(pzmapXMLStream);
104 closeMapReader = true;
105 }
106
107 if (this.pzmapReader != null) {
108 try {
109 setPzMetaData(MapParser.parseMap(this.pzmapReader, this));
110 } finally {
111 if (closeMapReader) {
112
113
114 this.pzmapReader.close();
115 }
116 }
117 }
118
119 setInitialised(true);
120 } catch (final Exception e) {
121 throw new InitialisationException(e);
122 }
123 }
124
125 @Override
126 protected boolean shouldCreateMDFromFile() {
127 return pzmapReader == null;
128 }
129 }