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

Contents of /dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/AddressSourceBK.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: 3249 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 import dk.daoas.adressevedligehold.util.SafeParsers;
13
14 public class AddressSourceBK extends AbstractAddressSource {
15
16
17 public AddressSourceBK(FileItem file) throws Exception {
18 super(file);
19 }
20
21
22 @Override
23 public void validate() throws IOException {
24 try (
25 InputStream is1 = file.getInputStream();
26 InputStreamReader isr1 = new InputStreamReader(is1, Charset.forName("ISO-8859-1") );
27 BufferedReader br1 = new BufferedReader(isr1)
28 ) {
29 String line = br1.readLine();
30
31 if (line == null) {
32 throw new IOException("Can't read 1st line - is file empty?");
33 }
34
35 String[] parts = line.split(";");
36
37 if (parts.length != 13) {
38 throw new IOException("Not enough fields in CSV file. Found " + parts.length + ", expected 13");
39 }
40 }
41
42
43 is = file.getInputStream();
44 isr = new InputStreamReader(is, Charset.forName("ISO-8859-1") );
45 br = new BufferedReader(isr);
46 }
47
48 //TODO: Skal csv parsning klares med Apache Commons CSV ?
49
50 @Override
51 public AddressSourceEntry getNextEntry() throws IOException {
52 String line = br.readLine();
53 if (line == null) // end of file
54 return null;
55
56 if (line.trim().equals(""))
57 return null;
58
59 //System.out.println(line);
60
61 AddressSourceEntry entry = new AddressSourceEntry( EntryType.TypeSingleAddress);
62 entry.distributor = "BK";
63
64 String[] parts = line.split(";");
65
66 if (parts.length != 13) {
67 throw new IOException("Not enough fields in CSV file. Found " + parts.length + ", expected 13");
68 }
69
70 entry.postnr = Short.parseShort( parts[0]);
71 entry.vejnavn = parts[1].replace("\"", "");
72 entry.husnr = Short.parseShort( parts[2] );
73 entry.litra = parts[3].replace("\"", "");
74 entry.vejkode = SafeParsers.parseShort( parts[4] );
75 entry.kommunekode = SafeParsers.parseShort( parts[5] );
76 entry.gadeid = Integer.parseInt( parts[6] );
77
78 String ugedage = parts[7].replace("\"", "");
79
80 String laesnr = parts[8].replace("\"", "");
81
82 //String distnr = parts[9].replace("\"", ""); //Bruges ikke
83 String foede = parts[10].replace("\"", "");
84 String jobnr = parts[11].replace("\"", "");
85 String tklaes = parts[12].replace("\"", "");
86
87 entry.rute = laesnr;
88 entry.koreliste = "/" + foede + "/" + tklaes + "/" + jobnr;
89
90 entry.rute = dirigeringsCache.getInstance(entry.rute);
91 entry.koreliste = dirigeringsCache.getInstance(entry.koreliste);
92
93 switch (ugedage) {
94 case "1234000":
95 entry.ugedage = EntryUgedage.MAN_TOR;
96 break;
97 case "0000500":
98 entry.ugedage = EntryUgedage.FRE;
99 break;
100 case "0000060":
101 entry.ugedage = EntryUgedage.LOR;
102 break;
103 case "0000007":
104 entry.ugedage = EntryUgedage.SON;
105 break;
106 default:
107 throw new IOException("Ukendt ugedag:" + ugedage);
108 }
109
110
111 lineCount++;
112
113 return entry;
114 }
115
116 @Override
117 public String getDistributor() {
118 return "BK";
119 }
120
121 }

  ViewVC Help
Powered by ViewVC 1.1.20