/[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 2933 - (show annotations) (download)
Fri Feb 12 09:55:14 2016 UTC (8 years, 3 months ago) by torben
File size: 3424 byte(s)
Switch NS reader to Gauva splitter
1 package dk.daoas.adressevedligehold;
2
3 import java.io.IOException;
4 import java.util.List;
5
6 import org.apache.commons.fileupload.FileItem;
7
8 import com.google.common.base.CharMatcher;
9 import com.google.common.base.Splitter;
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
20 final Splitter splitter = Splitter.on(',')
21 .trimResults( CharMatcher.is('"') );
22
23 List<String> parts;
24
25
26 NextUgedag nextUgedag = NextUgedag.MANDAG;
27
28 public AddressSourceNS(FileItem file) throws Exception {
29 super(file);
30 }
31
32
33 @Override
34 public void validate() throws IOException {
35 super.validatNoHeaderLine(22, ',');
36 }
37
38 //TODO: Skal csv parsning klares med Apache Commons CSV ?
39
40 @Override
41 public AddressSourceEntry getNextEntry() throws IOException {
42 if (nextUgedag == NextUgedag.MANDAG) {
43 String line = br.readLine();
44 if (line == null) // end of file
45 return null;
46
47 if (line.trim().equals(""))
48 return null;
49 parts = splitter.splitToList(line);
50
51 if (parts.size() != 22) {
52 throw new IOException("Not enough fields in line " + line);
53 }
54 }
55
56
57
58
59 AddressSourceEntry entry = new AddressSourceEntry( EntryType.TypeAddressRange );
60 entry.distributor = "NS";
61
62
63 entry.gadeid = Integer.parseInt( parts.get(0) );
64 entry.vejnavn = parts.get(1);
65 //stednavn = parts.get(2);
66 //ukendtt = parts.get(3);
67 entry.postnr = Short.parseShort( parts.get(4) );
68 entry.rute = dirigeringsCache.getInstance( parts.get(5) );
69 entry.husnr = Short.parseShort( parts.get(6) );
70 entry.litra = parts.get(7);
71 entry.tilHusnr = Short.parseShort( parts.get(8) );
72 entry.tilLitra = parts.get(9);
73 //sekvens = parts.get(10)
74 //fradato = parts.get(11)
75 //tildato = parts.get(12)
76 //distributor = parts.get(13)
77 //inspektorkode = parts.get(21)
78
79 switch (nextUgedag) {
80 case MANDAG:
81 entry.koreliste = dirigeringsCache.getInstance( parts.get(14) );
82 entry.ugedage = EntryUgedage.MAN;
83 nextUgedag = NextUgedag.TIRSDAG;
84 break;
85 case TIRSDAG:
86 entry.koreliste = dirigeringsCache.getInstance( parts.get(15) );
87 entry.ugedage = EntryUgedage.TIR;
88 nextUgedag = NextUgedag.ONSDAG;
89 break;
90 case ONSDAG:
91 entry.koreliste = dirigeringsCache.getInstance( parts.get(16) );
92 entry.ugedage = EntryUgedage.ONS;
93 nextUgedag = NextUgedag.TORSDAG;
94 break;
95 case TORSDAG:
96 entry.koreliste = dirigeringsCache.getInstance( parts.get(17) );
97 entry.ugedage = EntryUgedage.TOR;
98 nextUgedag = NextUgedag.FREDAG;
99 break;
100 case FREDAG:
101 entry.koreliste = dirigeringsCache.getInstance( parts.get(18) );
102 entry.ugedage = EntryUgedage.FRE;
103 nextUgedag = NextUgedag.LORDAG;
104 break;
105 case LORDAG:
106 entry.koreliste = dirigeringsCache.getInstance( parts.get(19) );
107 entry.ugedage = EntryUgedage.LOR;
108 nextUgedag = NextUgedag.SONDAG;
109 break;
110 case SONDAG:
111 entry.koreliste = dirigeringsCache.getInstance( parts.get(20) );
112 entry.ugedage = EntryUgedage.SON;
113 nextUgedag = NextUgedag.MANDAG;
114 break;
115 default:
116 throw new IOException("Ukendt ugedag:" + nextUgedag);
117 }
118
119
120 lineCount++;
121
122 return entry;
123 }
124
125 @Override
126 public String getDistributor() {
127 return "NS";
128 }
129
130 }

  ViewVC Help
Powered by ViewVC 1.1.20