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

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/AddressSourceNS.java revision 2868 by torben, Thu Jan 28 16:12:28 2016 UTC dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/coveragefileupload/AddressSourceNS.java revision 3042 by torben, Wed Jun 8 14:14:28 2016 UTC
# Line 1  Line 1 
1  package dk.daoas.adressevedligehold;  package dk.daoas.adressevedligehold.coveragefileupload;
2    
 import java.io.BufferedReader;  
3  import java.io.IOException;  import java.io.IOException;
4  import java.io.InputStream;  import java.util.List;
 import java.io.InputStreamReader;  
 import java.nio.charset.Charset;  
5    
6  import org.apache.commons.fileupload.FileItem;  import org.apache.commons.fileupload.FileItem;
7    
8  import dk.daoas.adressevedligehold.AddressSourceEntry.EntryType;  import com.google.common.base.CharMatcher;
9    import com.google.common.base.Splitter;
10    
11    import dk.daoas.adressevedligehold.coveragefileupload.AddressSourceEntry.EntryType;
12    
13  public class AddressSourceNS extends AbstractAddressSource {  public class AddressSourceNS extends AbstractAddressSource {
14                    
15          enum NextUgedag {          enum NextUgedag {
16                  MANDAG,TIRSDAG,ONSDAG,TORSDAG,FREDAG,LORDAG,SONDAG                  MANDAG,TIRSDAG,ONSDAG,TORSDAG,FREDAG,LORDAG,SONDAG
17          }          }
18            
19            final static char SEPARATOR = ';';
20            final static int NUM_FIELDS = 16;
21                                    
22          String parts[];          
23            final Splitter splitter = Splitter.on(SEPARATOR)
24                                                                    .trimResults( CharMatcher.is('"') );
25            
26            List<String> parts;
27                    
28                    
29          NextUgedag nextUgedag = NextUgedag.MANDAG;          NextUgedag nextUgedag = NextUgedag.MANDAG;
# Line 28  public class AddressSourceNS extends Abs Line 35  public class AddressSourceNS extends Abs
35                    
36          @Override          @Override
37          public void validate() throws IOException {          public void validate() throws IOException {
38                  try (                            super.validatNoHeaderLine(NUM_FIELDS, SEPARATOR);
                                 InputStream is1 = file.getInputStream();  
                                 InputStreamReader isr1 = new InputStreamReader(is1, Charset.forName("ISO-8859-1") );  
                                 BufferedReader br1 = new BufferedReader(isr1)  
                         ) {  
                         String line = br1.readLine();  
                           
                         if (line == null) {  
                                 throw new IOException("Can't read 1st line - is file empty?");  
                         }        
                           
                         String[] parts = line.split(",");  
                         if (parts.length != 22) {  
                                 throw new IOException("Not enough fields in CSV file. Found " + parts.length + ", expected 22");  
                         }  
                 }  
   
                   
                 is = file.getInputStream();  
                 isr = new InputStreamReader(is, Charset.forName("ISO-8859-1") );  
                 br = new BufferedReader(isr);  
39          }          }
40    
         //TODO: Skal csv parsning klares med Apache Commons CSV ?  
41    
42          @Override          @Override
43          public AddressSourceEntry getNextEntry() throws IOException {          public AddressSourceEntry getNextEntry() throws IOException {
# Line 62  public class AddressSourceNS extends Abs Line 48  public class AddressSourceNS extends Abs
48                                                    
49                          if (line.trim().equals(""))                          if (line.trim().equals(""))
50                                  return null;                                  return null;
51                          parts = line.split(",");                          parts = splitter.splitToList(line);
52                                                    
53                          if (parts.length != 22) {                          if (parts.size() != NUM_FIELDS) {
                                 System.out.println( line );  
54                                  throw new IOException("Not enough fields in line " + line);                                  throw new IOException("Not enough fields in line " + line);
55                          }                          }
56                  }                  }
# Line 77  public class AddressSourceNS extends Abs Line 62  public class AddressSourceNS extends Abs
62                  entry.distributor = "NS";                  entry.distributor = "NS";
63                                    
64                                    
65                  entry.gadeid = Integer.parseInt( parts[0] );                  entry.gadeid = Integer.parseInt( parts.get(0) );
66                  entry.vejnavn = parts[1].replace("\"", "");                  entry.vejnavn = parts.get(1);
67                  //stednavn = parts[2];                  entry.postnr = Short.parseShort( parts.get(2) );
68                  //ukendtt = parts[3];                  entry.rute = parts.get(3);
69                  entry.postnr = Short.parseShort( parts[4] );                  entry.husnr = Short.parseShort( parts.get(4) );
70                  entry.rute = dirigeringsCache.getInstance( parts[5].replace("\"", "") );                  entry.litra = parts.get(5);
71                  entry.husnr = Short.parseShort( parts[6] );                  entry.tilHusnr = Short.parseShort( parts.get(6) );
72                  entry.litra = parts[7].replace("\"", "");                  entry.tilLitra = parts.get(7);
73                  entry.tilHusnr = Short.parseShort( parts[8] );                  
74                  entry.tilLitra = parts[9].replace("\"", "");                  //inspektorkode = parts.get(8)
75                  //sekvens = parts[10]                  
76                  //fradato = parts[11]                  /* gælder ikke længere efter NS/Dimaps migreringen.
77                  //tildato = parts[12]                   * if (entry.tilLitra.equals("")) {
78                  //distributor = parts[13]                          entry.tilLitra = "Z"; // hvis der ikke er angivet en slut litra, så dækker de alle litra kombinationer
79                  //inspektorkode = parts[21]                  }*/
80                                    
81                  switch (nextUgedag) {                            switch (nextUgedag) {          
82                  case MANDAG:                  case MANDAG:
83                          entry.koreliste = dirigeringsCache.getInstance( parts[14] );                          entry.koreliste = parts.get(9);
84                          entry.ugedage = EntryUgedage.MAN;                          entry.ugedage = EntryUgedage.MAN;
85                          nextUgedag = NextUgedag.TIRSDAG;                          nextUgedag = NextUgedag.TIRSDAG;
86                          break;                          break;
87                  case TIRSDAG:                  case TIRSDAG:
88                          entry.koreliste = dirigeringsCache.getInstance( parts[15] );                          entry.koreliste = parts.get(10);
89                          entry.ugedage = EntryUgedage.TIR;                          entry.ugedage = EntryUgedage.TIR;
90                          nextUgedag = NextUgedag.ONSDAG;                          nextUgedag = NextUgedag.ONSDAG;
91                          break;                          break;
92                  case ONSDAG:                  case ONSDAG:
93                          entry.koreliste = dirigeringsCache.getInstance( parts[16] );                          entry.koreliste = parts.get(11);
94                          entry.ugedage = EntryUgedage.ONS;                          entry.ugedage = EntryUgedage.ONS;
95                          nextUgedag = NextUgedag.TORSDAG;                          nextUgedag = NextUgedag.TORSDAG;
96                          break;                          break;
97                  case TORSDAG:                  case TORSDAG:
98                          entry.koreliste = dirigeringsCache.getInstance( parts[17] );                          entry.koreliste = parts.get(12);
99                          entry.ugedage = EntryUgedage.TOR;                          entry.ugedage = EntryUgedage.TOR;
100                          nextUgedag = NextUgedag.FREDAG;                          nextUgedag = NextUgedag.FREDAG;
101                          break;                          break;
102                  case FREDAG:                  case FREDAG:
103                          entry.koreliste = dirigeringsCache.getInstance( parts[18] );                          entry.koreliste = parts.get(13);
104                          entry.ugedage = EntryUgedage.FRE;                          entry.ugedage = EntryUgedage.FRE;
105                          nextUgedag = NextUgedag.LORDAG;                          nextUgedag = NextUgedag.LORDAG;
106                          break;                          break;
107                  case LORDAG:                  case LORDAG:
108                          entry.koreliste = dirigeringsCache.getInstance( parts[19] );                          entry.koreliste = parts.get(14);
109                          entry.ugedage = EntryUgedage.LOR;                          entry.ugedage = EntryUgedage.LOR;
110                          nextUgedag = NextUgedag.SONDAG;                          nextUgedag = NextUgedag.SONDAG;
111                          break;                          break;
112                  case SONDAG:                  case SONDAG:
113                          entry.koreliste = dirigeringsCache.getInstance( parts[20] );                          entry.koreliste = parts.get(15);
114                          entry.ugedage = EntryUgedage.SON;                          entry.ugedage = EntryUgedage.SON;
115                          nextUgedag = NextUgedag.MANDAG;                          nextUgedag = NextUgedag.MANDAG;
116                          break;                          break;
117                  default:                  default:
118                          throw new IOException("Ukendt ugedag:" + nextUgedag);                          throw new IOException("Ukendt ugedag:" + nextUgedag);
119                  }                  }
120                    
121                    entry.rute = dirigeringsCache.getInstance(entry.rute);
122                    entry.koreliste = dirigeringsCache.getInstance(entry.koreliste);
123    
124                                    
125                  lineCount++;                  lineCount++;
# Line 143  public class AddressSourceNS extends Abs Line 131  public class AddressSourceNS extends Abs
131          public String getDistributor() {          public String getDistributor() {
132                  return "NS";                  return "NS";
133          }          }
134            
135            @Override
136            public boolean calculateDistances() {
137                    return false; //NS skal IKKE beregne afstande
138            }
139    
140  }  }

Legend:
Removed from v.2868  
changed lines
  Added in v.3042

  ViewVC Help
Powered by ViewVC 1.1.20