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

  ViewVC Help
Powered by ViewVC 1.1.20