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

  ViewVC Help
Powered by ViewVC 1.1.20