/[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 2857 - (show annotations) (download)
Thu Jan 28 10:30:01 2016 UTC (8 years, 3 months ago) by torben
File size: 3822 byte(s)
Validate number of fields after split
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.DeduplicateHelper;
13 import dk.daoas.adressevedligehold.util.SafeParsers;
14
15 public class AddressSourceBK implements AddressSource {
16
17 DeduplicateHelper<String> dirigeringsCache = new DeduplicateHelper<String>();
18
19 FileItem file;
20
21 InputStream is;
22 InputStreamReader isr;
23 BufferedReader br;
24
25 int lineCount = 0;
26
27 public AddressSourceBK(FileItem file) throws Exception {
28 this.file = file;
29
30
31
32 }
33
34 @Override
35 public String getFilename() {
36 return file.getName();
37 }
38
39 @Override
40 public void validate() throws IOException {
41 try (
42 InputStream is1 = file.getInputStream();
43 InputStreamReader isr1 = new InputStreamReader(is1, Charset.forName("ISO-8859-1") );
44 BufferedReader br1 = new BufferedReader(isr1)
45 ) {
46 String line = br1.readLine();
47 String[] parts = line.split(";");
48 int numFields = parts.length;
49 if (numFields != 13) {
50 throw new IOException("Not enough fields in CSV file. Found " + numFields + ", expected 13");
51 }
52 }
53
54
55 is = file.getInputStream();
56 isr = new InputStreamReader(is, Charset.forName("ISO-8859-1") );
57 br = new BufferedReader(isr);
58 }
59
60 //TODO: Skal csv parsning klares med Apache Commons CSV ?
61
62 @Override
63 public AddressSourceEntry getNextEntry() throws IOException {
64 String line = br.readLine();
65 if (line == null) // end of file
66 return null;
67
68 if (line.trim().equals(""))
69 return null;
70
71 //System.out.println(line);
72
73 AddressSourceEntry entry = new AddressSourceEntry( EntryType.TypeSingleAddress);
74 entry.distributor = "BK";
75
76 String[] parts = line.split(";");
77
78 if (parts.length != 13) {
79 throw new IOException("Not enough fields in CSV file. Found " + parts.length + ", expected 13");
80 }
81
82 entry.postnr = Short.parseShort( parts[0]);
83 entry.vejnavn = parts[1].replace("\"", "");
84 entry.husnr = Short.parseShort( parts[2] );
85 entry.litra = parts[3].replace("\"", "");
86 entry.vejkode = SafeParsers.parseShort( parts[4] );
87 entry.kommunekode = SafeParsers.parseShort( parts[5] );
88 entry.gadeid = Integer.parseInt( parts[6] );
89
90 String ugedage = parts[7].replace("\"", "");
91
92 String laesnr = parts[8].replace("\"", "");
93
94 //String distnr = parts[9].replace("\"", ""); //Bruges ikke
95 String foede = parts[10].replace("\"", "");
96 String jobnr = parts[11].replace("\"", "");
97 String tklaes = parts[12].replace("\"", "");
98
99 entry.rute = laesnr;
100 entry.koreliste = "/" + foede + "/" + tklaes + "/" + jobnr;
101
102 entry.rute = dirigeringsCache.getInstance(entry.rute);
103 entry.koreliste = dirigeringsCache.getInstance(entry.koreliste);
104
105 switch (ugedage) {
106 case "1234000":
107 entry.ugedage = EntryUgedage.MAN_TOR;
108 break;
109 case "0000500":
110 entry.ugedage = EntryUgedage.FRE;
111 break;
112 case "0000060":
113 entry.ugedage = EntryUgedage.LOR;
114 break;
115 case "0000007":
116 entry.ugedage = EntryUgedage.SON;
117 break;
118 default:
119 throw new IOException("Ukendt ugedag:" + ugedage);
120 }
121
122
123 lineCount++;
124
125 return entry;
126 }
127
128 @Override
129 public String getDistributor() {
130 return "BK";
131 }
132
133 @Override //AutoCloseable
134 public void close() throws Exception {
135 System.out.println("Closing BK after lines " + lineCount);
136 try {
137 br.close();
138 isr.close();
139 is.close();
140
141 file.delete();
142
143 } catch (Exception e) {
144 System.out.println("Error on closing " + e.getMessage() );
145 }
146
147
148 }
149
150 }

  ViewVC Help
Powered by ViewVC 1.1.20