/[projects]/dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/AddressSourceNS.java
ViewVC logotype

Contents of /dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/AddressSourceNS.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2861 - (show annotations) (download)
Thu Jan 28 11:03:14 2016 UTC (8 years, 4 months ago) by torben
File size: 4625 byte(s)
More findbugs
1 package dk.daoas.adressevedligehold;
2
3 import java.io.BufferedReader;
4 import java.io.IOException;
5 import java.io.InputStream;
6 import java.io.InputStreamReader;
7 import java.nio.charset.Charset;
8
9 import org.apache.commons.fileupload.FileItem;
10
11 import dk.daoas.adressevedligehold.AddressSourceEntry.EntryType;
12 import dk.daoas.adressevedligehold.util.DeduplicateHelper;
13
14 public class AddressSourceNS implements AddressSource {
15
16 enum NextUgedag {
17 MANDAG,TIRSDAG,ONSDAG,TORSDAG,FREDAG,LORDAG,SONDAG
18 }
19
20 DeduplicateHelper<String> dirigeringsCache = new DeduplicateHelper<String>();
21
22 FileItem file;
23
24 InputStream is;
25 InputStreamReader isr;
26 BufferedReader br;
27
28 String parts[];
29
30 int lineCount = 0;
31
32 NextUgedag nextUgedag = NextUgedag.MANDAG;
33
34 public AddressSourceNS(FileItem file) throws Exception {
35 this.file = file;
36 }
37
38 @Override
39 public String getFilename() {
40 return file.getName();
41 }
42
43 @Override
44 public void validate() throws IOException {
45 try (
46 InputStream is1 = file.getInputStream();
47 InputStreamReader isr1 = new InputStreamReader(is1, Charset.forName("ISO-8859-1") );
48 BufferedReader br1 = new BufferedReader(isr1)
49 ) {
50 String line = br1.readLine();
51
52 if (line == null) {
53 throw new IOException("Can't read 1st line - is file empty?");
54 }
55
56 String[] parts = line.split(",");
57 if (parts.length != 22) {
58 throw new IOException("Not enough fields in CSV file. Found " + parts.length + ", expected 22");
59 }
60 }
61
62
63 is = file.getInputStream();
64 isr = new InputStreamReader(is, Charset.forName("ISO-8859-1") );
65 br = new BufferedReader(isr);
66 }
67
68 //TODO: Skal csv parsning klares med Apache Commons CSV ?
69
70 @Override
71 public AddressSourceEntry getNextEntry() throws IOException {
72 if (nextUgedag == NextUgedag.MANDAG) {
73 String line = br.readLine();
74 if (line == null) // end of file
75 return null;
76
77 if (line.trim().equals(""))
78 return null;
79 parts = line.split(",");
80
81 if (parts.length != 22) {
82 System.out.println( line );
83 throw new IOException("Not enough fields in line " + line);
84 }
85 }
86
87
88
89
90 AddressSourceEntry entry = new AddressSourceEntry( EntryType.TypeAddressRange );
91 entry.distributor = "NS";
92
93
94 entry.gadeid = Integer.parseInt( parts[0] );
95 entry.vejnavn = parts[1].replace("\"", "");
96 //stednavn = parts[2];
97 //ukendtt = parts[3];
98 entry.postnr = Short.parseShort( parts[4] );
99 entry.rute = dirigeringsCache.getInstance( parts[5].replace("\"", "") );
100 entry.husnr = Short.parseShort( parts[6] );
101 entry.litra = parts[7].replace("\"", "");
102 entry.tilHusnr = Short.parseShort( parts[8] );
103 entry.tilLitra = parts[9].replace("\"", "");
104 //sekvens = parts[10]
105 //fradato = parts[11]
106 //tildato = parts[12]
107 //distributor = parts[13]
108 //inspektorkode = parts[21]
109
110 switch (nextUgedag) {
111 case MANDAG:
112 entry.koreliste = dirigeringsCache.getInstance( parts[14] );
113 entry.ugedage = EntryUgedage.MAN;
114 nextUgedag = NextUgedag.TIRSDAG;
115 break;
116 case TIRSDAG:
117 entry.koreliste = dirigeringsCache.getInstance( parts[15] );
118 entry.ugedage = EntryUgedage.TIR;
119 nextUgedag = NextUgedag.ONSDAG;
120 break;
121 case ONSDAG:
122 entry.koreliste = dirigeringsCache.getInstance( parts[16] );
123 entry.ugedage = EntryUgedage.ONS;
124 nextUgedag = NextUgedag.TORSDAG;
125 break;
126 case TORSDAG:
127 entry.koreliste = dirigeringsCache.getInstance( parts[17] );
128 entry.ugedage = EntryUgedage.TOR;
129 nextUgedag = NextUgedag.FREDAG;
130 break;
131 case FREDAG:
132 entry.koreliste = dirigeringsCache.getInstance( parts[18] );
133 entry.ugedage = EntryUgedage.FRE;
134 nextUgedag = NextUgedag.LORDAG;
135 break;
136 case LORDAG:
137 entry.koreliste = dirigeringsCache.getInstance( parts[19] );
138 entry.ugedage = EntryUgedage.LOR;
139 nextUgedag = NextUgedag.SONDAG;
140 break;
141 case SONDAG:
142 entry.koreliste = dirigeringsCache.getInstance( parts[20] );
143 entry.ugedage = EntryUgedage.SON;
144 nextUgedag = NextUgedag.MANDAG;
145 break;
146 default:
147 throw new IOException("Ukendt ugedag:" + nextUgedag);
148 }
149
150
151 lineCount++;
152
153 return entry;
154 }
155
156 @Override
157 public String getDistributor() {
158 return "NS";
159 }
160
161 @Override //AutoCloseable
162 public void close() throws Exception {
163 System.out.println("Closing NS after lines " + lineCount);
164 try {
165 br.close();
166 isr.close();
167 is.close();
168
169 file.delete();
170
171 } catch (Exception e) {
172 System.out.println("Error on closing " + e.getMessage() );
173 }
174
175
176 }
177
178 }

  ViewVC Help
Powered by ViewVC 1.1.20