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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3042 - (show annotations) (download)
Wed Jun 8 14:14:28 2016 UTC (7 years, 11 months ago) by torben
File size: 3527 byte(s)
Fjern specialregel om litra Z ved blank litra
1 package dk.daoas.adressevedligehold.coveragefileupload;
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.coveragefileupload.AddressSourceEntry.EntryType;
12
13 public class AddressSourceNS extends AbstractAddressSource {
14
15 enum NextUgedag {
16 MANDAG,TIRSDAG,ONSDAG,TORSDAG,FREDAG,LORDAG,SONDAG
17 }
18
19 final static char SEPARATOR = ';';
20 final static int NUM_FIELDS = 16;
21
22
23 final Splitter splitter = Splitter.on(SEPARATOR)
24 .trimResults( CharMatcher.is('"') );
25
26 List<String> parts;
27
28
29 NextUgedag nextUgedag = NextUgedag.MANDAG;
30
31 public AddressSourceNS(FileItem file) throws Exception {
32 super(file);
33 }
34
35
36 @Override
37 public void validate() throws IOException {
38 super.validatNoHeaderLine(NUM_FIELDS, SEPARATOR);
39 }
40
41
42 @Override
43 public AddressSourceEntry getNextEntry() throws IOException {
44 if (nextUgedag == NextUgedag.MANDAG) {
45 String line = br.readLine();
46 if (line == null) // end of file
47 return null;
48
49 if (line.trim().equals(""))
50 return null;
51 parts = splitter.splitToList(line);
52
53 if (parts.size() != NUM_FIELDS) {
54 throw new IOException("Not enough fields in line " + line);
55 }
56 }
57
58
59
60
61 AddressSourceEntry entry = new AddressSourceEntry( EntryType.TypeAddressRange );
62 entry.distributor = "NS";
63
64
65 entry.gadeid = Integer.parseInt( parts.get(0) );
66 entry.vejnavn = parts.get(1);
67 entry.postnr = Short.parseShort( parts.get(2) );
68 entry.rute = parts.get(3);
69 entry.husnr = Short.parseShort( parts.get(4) );
70 entry.litra = parts.get(5);
71 entry.tilHusnr = Short.parseShort( parts.get(6) );
72 entry.tilLitra = parts.get(7);
73
74 //inspektorkode = parts.get(8)
75
76 /* gælder ikke længere efter NS/Dimaps migreringen.
77 * if (entry.tilLitra.equals("")) {
78 entry.tilLitra = "Z"; // hvis der ikke er angivet en slut litra, så dækker de alle litra kombinationer
79 }*/
80
81 switch (nextUgedag) {
82 case MANDAG:
83 entry.koreliste = parts.get(9);
84 entry.ugedage = EntryUgedage.MAN;
85 nextUgedag = NextUgedag.TIRSDAG;
86 break;
87 case TIRSDAG:
88 entry.koreliste = parts.get(10);
89 entry.ugedage = EntryUgedage.TIR;
90 nextUgedag = NextUgedag.ONSDAG;
91 break;
92 case ONSDAG:
93 entry.koreliste = parts.get(11);
94 entry.ugedage = EntryUgedage.ONS;
95 nextUgedag = NextUgedag.TORSDAG;
96 break;
97 case TORSDAG:
98 entry.koreliste = parts.get(12);
99 entry.ugedage = EntryUgedage.TOR;
100 nextUgedag = NextUgedag.FREDAG;
101 break;
102 case FREDAG:
103 entry.koreliste = parts.get(13);
104 entry.ugedage = EntryUgedage.FRE;
105 nextUgedag = NextUgedag.LORDAG;
106 break;
107 case LORDAG:
108 entry.koreliste = parts.get(14);
109 entry.ugedage = EntryUgedage.LOR;
110 nextUgedag = NextUgedag.SONDAG;
111 break;
112 case SONDAG:
113 entry.koreliste = parts.get(15);
114 entry.ugedage = EntryUgedage.SON;
115 nextUgedag = NextUgedag.MANDAG;
116 break;
117 default:
118 throw new IOException("Ukendt ugedag:" + nextUgedag);
119 }
120
121 entry.rute = dirigeringsCache.getInstance(entry.rute);
122 entry.koreliste = dirigeringsCache.getInstance(entry.koreliste);
123
124
125 lineCount++;
126
127 return entry;
128 }
129
130 @Override
131 public String getDistributor() {
132 return "NS";
133 }
134
135 @Override
136 public boolean calculateDistances() {
137 return false; //NS skal IKKE beregne afstande
138 }
139
140 }

  ViewVC Help
Powered by ViewVC 1.1.20