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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2954 - (show annotations) (download)
Tue Feb 16 13:15:25 2016 UTC (8 years, 3 months ago) by torben
File size: 3522 byte(s)
When done - schedule a incremental distance calculation
1 package dk.daoas.adressevedligehold.fileupload;
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.fileupload.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
39 @Override
40 public AddressSourceEntry getNextEntry() throws IOException {
41 if (nextUgedag == NextUgedag.MANDAG) {
42 String line = br.readLine();
43 if (line == null) // end of file
44 return null;
45
46 if (line.trim().equals(""))
47 return null;
48 parts = splitter.splitToList(line);
49
50 if (parts.size() != 22) {
51 throw new IOException("Not enough fields in line " + line);
52 }
53 }
54
55
56
57
58 AddressSourceEntry entry = new AddressSourceEntry( EntryType.TypeAddressRange );
59 entry.distributor = "NS";
60
61
62 entry.gadeid = Integer.parseInt( parts.get(0) );
63 entry.vejnavn = parts.get(1);
64 //stednavn = parts.get(2);
65 //ukendtt = parts.get(3);
66 entry.postnr = Short.parseShort( parts.get(4) );
67 entry.rute = parts.get(5);
68 entry.husnr = Short.parseShort( parts.get(6) );
69 entry.litra = parts.get(7);
70 entry.tilHusnr = Short.parseShort( parts.get(8) );
71 entry.tilLitra = parts.get(9);
72 //sekvens = parts.get(10)
73 //fradato = parts.get(11)
74 //tildato = parts.get(12)
75 //distributor = parts.get(13)
76 //inspektorkode = parts.get(21)
77
78 if (entry.tilLitra.equals("")) {
79 entry.tilLitra = "Z"; // hvis der ikke er angivet en slut litra, så dækker de alle litra kombinationer
80 }
81
82 switch (nextUgedag) {
83 case MANDAG:
84 entry.koreliste = parts.get(14);
85 entry.ugedage = EntryUgedage.MAN;
86 nextUgedag = NextUgedag.TIRSDAG;
87 break;
88 case TIRSDAG:
89 entry.koreliste = parts.get(15);
90 entry.ugedage = EntryUgedage.TIR;
91 nextUgedag = NextUgedag.ONSDAG;
92 break;
93 case ONSDAG:
94 entry.koreliste = parts.get(16);
95 entry.ugedage = EntryUgedage.ONS;
96 nextUgedag = NextUgedag.TORSDAG;
97 break;
98 case TORSDAG:
99 entry.koreliste = parts.get(17);
100 entry.ugedage = EntryUgedage.TOR;
101 nextUgedag = NextUgedag.FREDAG;
102 break;
103 case FREDAG:
104 entry.koreliste = parts.get(18);
105 entry.ugedage = EntryUgedage.FRE;
106 nextUgedag = NextUgedag.LORDAG;
107 break;
108 case LORDAG:
109 entry.koreliste = parts.get(19);
110 entry.ugedage = EntryUgedage.LOR;
111 nextUgedag = NextUgedag.SONDAG;
112 break;
113 case SONDAG:
114 entry.koreliste = parts.get(20);
115 entry.ugedage = EntryUgedage.SON;
116 nextUgedag = NextUgedag.MANDAG;
117 break;
118 default:
119 throw new IOException("Ukendt ugedag:" + nextUgedag);
120 }
121
122 entry.rute = dirigeringsCache.getInstance(entry.rute);
123 entry.koreliste = dirigeringsCache.getInstance(entry.koreliste);
124
125
126 lineCount++;
127
128 return entry;
129 }
130
131 @Override
132 public String getDistributor() {
133 return "NS";
134 }
135
136 @Override
137 public boolean calculateDistances() {
138 return false; //NS skal IKKE beregne afstande
139 }
140
141 }

  ViewVC Help
Powered by ViewVC 1.1.20