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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2851 - (hide annotations) (download)
Tue Jan 26 21:34:15 2016 UTC (8 years, 4 months ago) by torben
Original Path: dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/AddressSourceNS.java
File size: 4598 byte(s)
Implement NS
1 torben 2851 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 AddressSourceNS implements AddressSource {
16    
17     enum NextUgedag {
18     MANDAG,TIRSDAG,ONSDAG,TORSDAG,FREDAG,LORDAG,SONDAG
19     }
20    
21     DeduplicateHelper<String> dirigeringsCache = new DeduplicateHelper<String>();
22    
23     FileItem file;
24    
25     InputStream is;
26     InputStreamReader isr;
27     BufferedReader br;
28    
29     String parts[];
30    
31     int lineCount = 0;
32    
33     NextUgedag nextUgedag = NextUgedag.MANDAG;
34    
35     public AddressSourceNS(FileItem file) throws Exception {
36     this.file = file;
37     }
38    
39     @Override
40     public String getFilename() {
41     return file.getName();
42     }
43    
44     @Override
45     public void validate() throws IOException {
46     try (
47     InputStream is1 = file.getInputStream();
48     InputStreamReader isr1 = new InputStreamReader(is1, Charset.forName("ISO-8859-1") );
49     BufferedReader br1 = new BufferedReader(isr1)
50     ) {
51     String line = br1.readLine();
52     String[] parts = line.split(",");
53     int numFields = parts.length;
54     if (numFields != 22) {
55     throw new IOException("Not enough fields in CSV file. Found " + numFields + ", expected 22");
56     }
57     }
58    
59    
60     is = file.getInputStream();
61     isr = new InputStreamReader(is, Charset.forName("ISO-8859-1") );
62     br = new BufferedReader(isr);
63     }
64    
65     //TODO: Skal csv parsning klares med Apache Commons CSV ?
66    
67     @Override
68     public AddressSourceEntry getNextEntry() throws IOException {
69     if (nextUgedag == NextUgedag.MANDAG) {
70     String line = br.readLine();
71     if (line == null) // end of file
72     return null;
73    
74     if (line.trim().equals(""))
75     return null;
76     parts = line.split(",");
77    
78     if (parts.length != 22) {
79     System.out.println( line );
80     throw new IOException("Not enough fields in line " + line);
81     }
82     }
83    
84    
85    
86    
87     AddressSourceEntry entry = new AddressSourceEntry( EntryType.TypeAddressRange );
88     entry.distributor = "NS";
89    
90    
91     entry.gadeid = Integer.parseInt( parts[0] );
92     entry.vejnavn = parts[1].replace("\"", "");
93     //stednavn = parts[2];
94     //ukendtt = parts[3];
95     entry.postnr = Short.parseShort( parts[4] );
96     entry.rute = dirigeringsCache.getInstance( parts[5].replace("\"", "") );
97     entry.husnr = Short.parseShort( parts[6] );
98     entry.litra = parts[7].replace("\"", "");
99     entry.tilHusnr = Short.parseShort( parts[8] );
100     entry.tilLitra = parts[9].replace("\"", "");
101     //sekvens = parts[10]
102     //fradato = parts[11]
103     //tildato = parts[12]
104     //distributor = parts[13]
105     //inspektorkode = parts[21]
106    
107     switch (nextUgedag) {
108     case MANDAG:
109     entry.koreliste = dirigeringsCache.getInstance( parts[14] );
110     entry.ugedage = EntryUgedage.MAN;
111     nextUgedag = NextUgedag.TIRSDAG;
112     break;
113     case TIRSDAG:
114     entry.koreliste = dirigeringsCache.getInstance( parts[15] );
115     entry.ugedage = EntryUgedage.TIR;
116     nextUgedag = NextUgedag.ONSDAG;
117     break;
118     case ONSDAG:
119     entry.koreliste = dirigeringsCache.getInstance( parts[16] );
120     entry.ugedage = EntryUgedage.ONS;
121     nextUgedag = NextUgedag.TORSDAG;
122     break;
123     case TORSDAG:
124     entry.koreliste = dirigeringsCache.getInstance( parts[17] );
125     entry.ugedage = EntryUgedage.TOR;
126     nextUgedag = NextUgedag.FREDAG;
127     break;
128     case FREDAG:
129     entry.koreliste = dirigeringsCache.getInstance( parts[18] );
130     entry.ugedage = EntryUgedage.FRE;
131     nextUgedag = NextUgedag.LORDAG;
132     break;
133     case LORDAG:
134     entry.koreliste = dirigeringsCache.getInstance( parts[19] );
135     entry.ugedage = EntryUgedage.LOR;
136     nextUgedag = NextUgedag.SONDAG;
137     break;
138     case SONDAG:
139     entry.koreliste = dirigeringsCache.getInstance( parts[20] );
140     entry.ugedage = EntryUgedage.SON;
141     nextUgedag = NextUgedag.MANDAG;
142     break;
143     default:
144     throw new IOException("Ukendt ugedag:" + nextUgedag);
145     }
146    
147    
148     lineCount++;
149    
150     return entry;
151     }
152    
153     @Override
154     public String getDistributor() {
155     return "NS";
156     }
157    
158     @Override //AutoCloseable
159     public void close() throws Exception {
160     System.out.println("Closing NS after lines " + lineCount);
161     try {
162     br.close();
163     isr.close();
164     is.close();
165    
166     file.delete();
167    
168     } catch (Exception e) {
169     System.out.println("Error on closing " + e.getMessage() );
170     }
171    
172    
173     }
174    
175     }

  ViewVC Help
Powered by ViewVC 1.1.20