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

  ViewVC Help
Powered by ViewVC 1.1.20