/[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 3041 - (show annotations) (download)
Wed Jun 8 12:44:59 2016 UTC (7 years, 11 months ago) by torben
File size: 3465 byte(s)
Adjust to new NS file layout
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 if (entry.tilLitra.equals("")) {
77 entry.tilLitra = "Z"; // hvis der ikke er angivet en slut litra, så dækker de alle litra kombinationer
78 }
79
80 switch (nextUgedag) {
81 case MANDAG:
82 entry.koreliste = parts.get(9);
83 entry.ugedage = EntryUgedage.MAN;
84 nextUgedag = NextUgedag.TIRSDAG;
85 break;
86 case TIRSDAG:
87 entry.koreliste = parts.get(10);
88 entry.ugedage = EntryUgedage.TIR;
89 nextUgedag = NextUgedag.ONSDAG;
90 break;
91 case ONSDAG:
92 entry.koreliste = parts.get(11);
93 entry.ugedage = EntryUgedage.ONS;
94 nextUgedag = NextUgedag.TORSDAG;
95 break;
96 case TORSDAG:
97 entry.koreliste = parts.get(12);
98 entry.ugedage = EntryUgedage.TOR;
99 nextUgedag = NextUgedag.FREDAG;
100 break;
101 case FREDAG:
102 entry.koreliste = parts.get(13);
103 entry.ugedage = EntryUgedage.FRE;
104 nextUgedag = NextUgedag.LORDAG;
105 break;
106 case LORDAG:
107 entry.koreliste = parts.get(14);
108 entry.ugedage = EntryUgedage.LOR;
109 nextUgedag = NextUgedag.SONDAG;
110 break;
111 case SONDAG:
112 entry.koreliste = parts.get(15);
113 entry.ugedage = EntryUgedage.SON;
114 nextUgedag = NextUgedag.MANDAG;
115 break;
116 default:
117 throw new IOException("Ukendt ugedag:" + nextUgedag);
118 }
119
120 entry.rute = dirigeringsCache.getInstance(entry.rute);
121 entry.koreliste = dirigeringsCache.getInstance(entry.koreliste);
122
123
124 lineCount++;
125
126 return entry;
127 }
128
129 @Override
130 public String getDistributor() {
131 return "NS";
132 }
133
134 @Override
135 public boolean calculateDistances() {
136 return false; //NS skal IKKE beregne afstande
137 }
138
139 }

  ViewVC Help
Powered by ViewVC 1.1.20