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

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

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

dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/AddressSourceBK.java revision 2838 by torben, Sun Jan 24 21:48:55 2016 UTC dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/fileupload/AddressSourceBK.java revision 3016 by torben, Mon Apr 25 07:52:53 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;
10    
11    import dk.daoas.adressevedligehold.fileupload.AddressSourceEntry.EntryType;
12  import dk.daoas.adressevedligehold.util.SafeParsers;  import dk.daoas.adressevedligehold.util.SafeParsers;
13    
14  public class AddressSourceBK implements AddressSource {  public class AddressSourceBK extends AbstractAddressSource {
           
         DeduplicateHelper<String> dirigeringsCache = new DeduplicateHelper<String>();  
           
         FileItem file;  
15                    
16          InputStream is;          Splitter splitter = Splitter.on(';').trimResults( CharMatcher.is('"') );
         InputStreamReader isr;  
         BufferedReader br;  
           
         int lineCount = 0;  
17                                    
18          public AddressSourceBK(FileItem file) throws Exception {          public AddressSourceBK(FileItem file) throws Exception {
19                  this.file = file;                  super(file);
   
   
                 is = file.getInputStream();  
                 isr = new InputStreamReader(is, Charset.forName("ISO-8859-1") );  
                 br = new BufferedReader(isr);  
                                   
20          }          }
21    
22            
23          @Override          @Override
24          public String getFilename() {          public void validate() throws IOException {
25                  return file.getName();                  super.validatNoHeaderLine(15, ';');
26          }          }
27            
         //TODO: Skal csv parsning klares med Apache Commons CSV ?  
28    
29          @Override          @Override
30          public AddressSourceEntry getNextEntry() throws IOException {          public AddressSourceEntry getNextEntry() throws IOException {
# Line 50  public class AddressSourceBK implements Line 35  public class AddressSourceBK implements
35                  if (line.trim().equals(""))                  if (line.trim().equals(""))
36                          return null;                          return null;
37                                    
                 //System.out.println(line);  
38                                    
39                  AddressSourceEntry entry = new AddressSourceEntry( EntryType.TypeSingleAddress);                  AddressSourceEntry entry = new AddressSourceEntry( EntryType.TypeSingleAddress);
40                  entry.distributor = "BK";                  entry.distributor = "BK";
41                                    
42                  String[] parts = line.split(";");                  List<String> parts = splitter.splitToList(line);
                 entry.postnr = Short.parseShort( parts[0]);  
                 entry.vejnavn = parts[1].replace("\"", "");  
                 entry.husnr = Short.parseShort( parts[2] );  
                 entry.litra = parts[3].replace("\"", "");  
                 entry.vejkode = SafeParsers.parseShort( parts[4] );  
                 entry.kommunekode = SafeParsers.parseShort( parts[5] );  
                 entry.gadeid = Integer.parseInt( parts[6] );  
                   
                 String ugedage = parts[7].replace("\"", "");  
                   
                 String laesnr = parts[8].replace("\"", "");  
                   
                 @SuppressWarnings("unused") String distnr = parts[9].replace("\"", "");  
                 String foede = parts[10].replace("\"", "");  
                 String jobnr = parts[11].replace("\"", "");  
                 String tklaes = parts[12].replace("\"", "");  
43                                    
44                  entry.rute = laesnr;                  if (parts.size() != 15) {
45                  entry.koreliste = "/" + foede + "/" + tklaes + "/" + jobnr;                          throw new IOException("Wrong number of fields in CSV file. Found " + parts.size() + ", expected 15");
46                    }
47                    
48                    entry.postnr = Short.parseShort( parts.get(0) );
49                    entry.vejnavn = parts.get( 1 );
50                    entry.husnr = Short.parseShort( parts.get( 2 ) );
51                    entry.litra = parts.get( 3 );
52                    entry.vejkode = SafeParsers.parseShort( parts.get( 4)  );
53                    entry.kommunekode = SafeParsers.parseShort( parts.get( 5)  );
54                    entry.gadeid = Integer.parseInt( parts.get( 6 ) );
55                    
56                    String ugedage = parts.get( 7 );
57                    
58                    String laesnr = parts.get( 8 );
59                    
60                    //String distnr = parts.get( 9 ); //Bruges ikke
61                    String foede = parts.get( 10 );
62                    String jobnr = parts.get( 11 );
63                    String tklaes = parts.get( 12 );
64                    //String pris = parts.get( 13 );//bruges ikke
65                    //String blank = parts.get(14); //Bruges slet ikke - bk afslutter deres linier med en ;
66                    
67                    entry.rute = jobnr;
68                    entry.koreliste = laesnr + "/" + tklaes + "/" + foede ; // isv<nr>/tk<nr>/<lokale>
69                                    
70                  entry.rute = dirigeringsCache.getInstance(entry.rute);                  entry.rute = dirigeringsCache.getInstance(entry.rute);
71                  entry.koreliste = dirigeringsCache.getInstance(entry.koreliste);                  entry.koreliste = dirigeringsCache.getInstance(entry.koreliste);
# Line 107  public class AddressSourceBK implements Line 98  public class AddressSourceBK implements
98                  return "BK";                  return "BK";
99          }          }
100    
101          @Override //AutoCloseable  
102          public void close() throws Exception {          @Override
103                  System.out.println("Closing BK after lines " + lineCount);          public boolean calculateDistances() {
104                  try {                  return true; //BK skal beregne afstande
                         br.close();  
                         isr.close();  
                         is.close();  
   
                         file.delete();  
                           
                 } catch (Exception e) {  
                         System.out.println("Error on closing " + e.getMessage() );  
                 }  
                   
                   
105          }          }
106    
107  }  }

Legend:
Removed from v.2838  
changed lines
  Added in v.3016

  ViewVC Help
Powered by ViewVC 1.1.20