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

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

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20