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

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

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

dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/AddressSourceNS.java revision 2851 by torben, Tue Jan 26 21:34:15 2016 UTC dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/fileupload/AddressSourceNS.java revision 2947 by torben, Sat Feb 13 15:45:02 2016 UTC
# Line 1  Line 1 
1  package dk.daoas.adressevedligehold;  package dk.daoas.adressevedligehold.fileupload;
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 dk.daoas.adressevedligehold.util.DeduplicateHelper;  import com.google.common.base.Splitter;
 import dk.daoas.adressevedligehold.util.SafeParsers;  
10    
11  public class AddressSourceNS implements AddressSource {  import dk.daoas.adressevedligehold.fileupload.AddressSourceEntry.EntryType;
12    
13    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                    
20          DeduplicateHelper<String> dirigeringsCache = new DeduplicateHelper<String>();          final Splitter splitter = Splitter.on(',')
21                                                                            .trimResults( CharMatcher.is('"') );
         FileItem file;  
           
         InputStream is;  
         InputStreamReader isr;  
         BufferedReader br;  
22                    
23          String parts[];          List<String> parts;
24                    
         int lineCount = 0;  
25                    
26          NextUgedag nextUgedag = NextUgedag.MANDAG;          NextUgedag nextUgedag = NextUgedag.MANDAG;
27                                    
28          public AddressSourceNS(FileItem file) throws Exception {          public AddressSourceNS(FileItem file) throws Exception {
29                  this.file = file;                  super(file);
30          }          }
31    
         @Override  
         public String getFilename() {  
                 return file.getName();  
         }  
32                    
33          @Override          @Override
34          public void validate() throws IOException {          public void validate() throws IOException {
35                  try (                            super.validatNoHeaderLine(22, ',');
                                 InputStream is1 = file.getInputStream();  
                                 InputStreamReader isr1 = new InputStreamReader(is1, Charset.forName("ISO-8859-1") );  
                                 BufferedReader br1 = new BufferedReader(isr1)  
                         ) {  
                         String line = br1.readLine();  
                         String[] parts = line.split(",");  
                         int numFields = parts.length;  
                         if (numFields != 22) {  
                                 throw new IOException("Not enough fields in CSV file. Found " + numFields + ", expected 22");  
                         }  
                 }  
   
                   
                 is = file.getInputStream();  
                 isr = new InputStreamReader(is, Charset.forName("ISO-8859-1") );  
                 br = new BufferedReader(isr);  
36          }          }
37    
38          //TODO: Skal csv parsning klares med Apache Commons CSV ?          //TODO: Skal csv parsning klares med Apache Commons CSV ?
# Line 73  public class AddressSourceNS implements Line 46  public class AddressSourceNS implements
46                                                    
47                          if (line.trim().equals(""))                          if (line.trim().equals(""))
48                                  return null;                                  return null;
49                          parts = line.split(",");                          parts = splitter.splitToList(line);
50                                                    
51                          if (parts.length != 22) {                          if (parts.size() != 22) {
                                 System.out.println( line );  
52                                  throw new IOException("Not enough fields in line " + line);                                  throw new IOException("Not enough fields in line " + line);
53                          }                          }
54                  }                  }
# Line 88  public class AddressSourceNS implements Line 60  public class AddressSourceNS implements
60                  entry.distributor = "NS";                  entry.distributor = "NS";
61                                    
62                                    
63                  entry.gadeid = Integer.parseInt( parts[0] );                  entry.gadeid = Integer.parseInt( parts.get(0) );
64                  entry.vejnavn = parts[1].replace("\"", "");                  entry.vejnavn = parts.get(1);
65                  //stednavn = parts[2];                  //stednavn = parts.get(2);
66                  //ukendtt = parts[3];                  //ukendtt = parts.get(3);
67                  entry.postnr = Short.parseShort( parts[4] );                  entry.postnr = Short.parseShort( parts.get(4) );
68                  entry.rute = dirigeringsCache.getInstance( parts[5].replace("\"", "") );                  entry.rute = parts.get(5);
69                  entry.husnr = Short.parseShort( parts[6] );                  entry.husnr = Short.parseShort( parts.get(6) );
70                  entry.litra = parts[7].replace("\"", "");                  entry.litra = parts.get(7);
71                  entry.tilHusnr = Short.parseShort( parts[8] );                  entry.tilHusnr = Short.parseShort( parts.get(8) );
72                  entry.tilLitra = parts[9].replace("\"", "");                  entry.tilLitra = parts.get(9);
73                  //sekvens = parts[10]                  //sekvens = parts.get(10)
74                  //fradato = parts[11]                  //fradato = parts.get(11)
75                  //tildato = parts[12]                  //tildato = parts.get(12)
76                  //distributor = parts[13]                  //distributor = parts.get(13)
77                  //inspektorkode = parts[21]                  //inspektorkode = parts.get(21)
78                    
79                    if (entry.tilLitra.equals("")) {
80                            entry.tilLitra = "Z"; // hvis der ikke er angivet en slut litra, så dækker de alle litra kombinationer
81                    }
82                                    
83                  switch (nextUgedag) {                            switch (nextUgedag) {          
84                  case MANDAG:                  case MANDAG:
85                          entry.koreliste = dirigeringsCache.getInstance( parts[14] );                          entry.koreliste = parts.get(14);
86                          entry.ugedage = EntryUgedage.MAN;                          entry.ugedage = EntryUgedage.MAN;
87                          nextUgedag = NextUgedag.TIRSDAG;                          nextUgedag = NextUgedag.TIRSDAG;
88                          break;                          break;
89                  case TIRSDAG:                  case TIRSDAG:
90                          entry.koreliste = dirigeringsCache.getInstance( parts[15] );                          entry.koreliste = parts.get(15);
91                          entry.ugedage = EntryUgedage.TIR;                          entry.ugedage = EntryUgedage.TIR;
92                          nextUgedag = NextUgedag.ONSDAG;                          nextUgedag = NextUgedag.ONSDAG;
93                          break;                          break;
94                  case ONSDAG:                  case ONSDAG:
95                          entry.koreliste = dirigeringsCache.getInstance( parts[16] );                          entry.koreliste = parts.get(16);
96                          entry.ugedage = EntryUgedage.ONS;                          entry.ugedage = EntryUgedage.ONS;
97                          nextUgedag = NextUgedag.TORSDAG;                          nextUgedag = NextUgedag.TORSDAG;
98                          break;                          break;
99                  case TORSDAG:                  case TORSDAG:
100                          entry.koreliste = dirigeringsCache.getInstance( parts[17] );                          entry.koreliste = parts.get(17);
101                          entry.ugedage = EntryUgedage.TOR;                          entry.ugedage = EntryUgedage.TOR;
102                          nextUgedag = NextUgedag.FREDAG;                          nextUgedag = NextUgedag.FREDAG;
103                          break;                          break;
104                  case FREDAG:                  case FREDAG:
105                          entry.koreliste = dirigeringsCache.getInstance( parts[18] );                          entry.koreliste = parts.get(18);
106                          entry.ugedage = EntryUgedage.FRE;                          entry.ugedage = EntryUgedage.FRE;
107                          nextUgedag = NextUgedag.LORDAG;                          nextUgedag = NextUgedag.LORDAG;
108                          break;                          break;
109                  case LORDAG:                  case LORDAG:
110                          entry.koreliste = dirigeringsCache.getInstance( parts[19] );                          entry.koreliste = parts.get(19);
111                          entry.ugedage = EntryUgedage.LOR;                          entry.ugedage = EntryUgedage.LOR;
112                          nextUgedag = NextUgedag.SONDAG;                          nextUgedag = NextUgedag.SONDAG;
113                          break;                          break;
114                  case SONDAG:                  case SONDAG:
115                          entry.koreliste = dirigeringsCache.getInstance( parts[20] );                          entry.koreliste = parts.get(20);
116                          entry.ugedage = EntryUgedage.SON;                          entry.ugedage = EntryUgedage.SON;
117                          nextUgedag = NextUgedag.MANDAG;                          nextUgedag = NextUgedag.MANDAG;
118                          break;                          break;
119                  default:                  default:
120                          throw new IOException("Ukendt ugedag:" + nextUgedag);                          throw new IOException("Ukendt ugedag:" + nextUgedag);
121                  }                  }
122                    
123                    entry.rute = dirigeringsCache.getInstance(entry.rute);
124                    entry.koreliste = dirigeringsCache.getInstance(entry.koreliste);
125    
126                                    
127                  lineCount++;                  lineCount++;
# Line 155  public class AddressSourceNS implements Line 134  public class AddressSourceNS implements
134                  return "NS";                  return "NS";
135          }          }
136    
         @Override //AutoCloseable  
         public void close() throws Exception {  
                 System.out.println("Closing NS after lines " + lineCount);  
                 try {  
                         br.close();  
                         isr.close();  
                         is.close();  
   
                         file.delete();  
                           
                 } catch (Exception e) {  
                         System.out.println("Error on closing " + e.getMessage() );  
                 }  
                   
                   
         }  
   
137  }  }

Legend:
Removed from v.2851  
changed lines
  Added in v.2947

  ViewVC Help
Powered by ViewVC 1.1.20