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

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

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

dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/AddressManager.java revision 2894 by torben, Mon Feb 1 07:15:15 2016 UTC dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/fileupload/AddressManager.java revision 2949 by torben, Tue Feb 16 09:38:13 2016 UTC
# Line 1  Line 1 
1  package dk.daoas.adressevedligehold;  package dk.daoas.adressevedligehold.fileupload;
2    
3  import java.sql.SQLException;  import java.sql.SQLException;
4  import java.util.ArrayList;  import java.util.ArrayList;
# Line 11  import java.util.TreeMap; Line 11  import java.util.TreeMap;
11    
12  import org.apache.commons.lang3.StringUtils;  import org.apache.commons.lang3.StringUtils;
13    
 import dk.daoas.adressevedligehold.AddressSourceEntry.EntryType;  
14  import dk.daoas.adressevedligehold.beans.Address;  import dk.daoas.adressevedligehold.beans.Address;
15  import dk.daoas.adressevedligehold.beans.Address.AddressState;  import dk.daoas.adressevedligehold.beans.Address.AddressState;
16  import dk.daoas.adressevedligehold.db.DatabaseLayerImplementation;  import dk.daoas.adressevedligehold.db.DatabaseCoverageUpdate;
17    import dk.daoas.adressevedligehold.fileupload.AddressSourceEntry.EntryType;
18    import dk.daoas.adressevedligehold.tasks.TaskLogger;
19  import dk.daoas.adressevedligehold.util.DeduplicateHelper;  import dk.daoas.adressevedligehold.util.DeduplicateHelper;
20  import dk.daoas.adressevedligehold.util.MiscUtils;  import dk.daoas.adressevedligehold.util.MiscUtils;
21  import dk.daoas.adressevedligehold.util.TimingHelper;  import dk.daoas.adressevedligehold.util.TimingHelper;
22    
23  /*  /*
24   * TODO: håndtering af entry dupletter ! (+ rapportering af dem)   *  
   
   
   
25   */   */
26    
27  public class AddressManager {  public class AddressManager {
28                    
29            private TaskLogger logger = TaskLogger.getInstance();
30            
31            private int duplicateCount;
32                    
33          List<Address> addressList;          List<Address> addressList;
34                    
# Line 40  public class AddressManager { Line 41  public class AddressManager {
41          Map<Short,Short> dbkBaneMap = new TreeMap<Short,Short>();          Map<Short,Short> dbkBaneMap = new TreeMap<Short,Short>();
42                    
43          public AddressManager() throws SQLException {          public AddressManager() throws SQLException {
44                  DatabaseLayerImplementation db = new DatabaseLayerImplementation();                  DatabaseCoverageUpdate db = new DatabaseCoverageUpdate();
45                                    
46                  searchStructure = new TreeMap<Integer, TreeMap<Short, ArrayList<Address>> >();                  searchStructure = new TreeMap<Integer, TreeMap<Short, ArrayList<Address>> >();
47                                    
# Line 84  public class AddressManager { Line 85  public class AddressManager {
85                          list.trimToSize();                          list.trimToSize();
86                  }                  }
87                                    
88                  System.out.println("AddressManager ready, elapsed " + timer.getElapsed() + "ms");                  logger.info("AddressManager ready, elapsed " + timer.getElapsed() + "ms");
89                                    
90                                    
91          }          }
92            
93            @SuppressWarnings("PMD.CollapsibleIfStatements")        
94          public void closeUnvisitedAddresses(String distributor, EntryUgedage ugedage) {          public void closeUnvisitedAddresses(String distributor, EntryUgedage ugedage) {
95                  for (Address addr : addressList) {                  for (Address addr : addressList) {
96                          if (addr.distributor == null)                          if (addr.distributor == null)
# Line 181  public class AddressManager { Line 183  public class AddressManager {
183                                  continue;                                  continue;
184                          }                          }
185                                                    
186                          System.out.println(addr.state + ": " + addr.toStringExtended() );                          logger.info(addr.state + ": " + addr.toStringExtended() );
187                          System.out.println(addr.getRuteString() );                          logger.info(addr.getRuteString() );
188                                                    
189                          if (count++ > 50)                          if (count++ > 50)
190                                  return;                                  return;
# Line 190  public class AddressManager { Line 192  public class AddressManager {
192          }          }
193                    
194          public void writeBackChanges() {          public void writeBackChanges() {
195                  System.out.println("Writing back changes");                  logger.info("Writing back changes");
196                  TimingHelper timer = new TimingHelper();                  TimingHelper timer = new TimingHelper();
197                                    
198                  List<Address> updates = new ArrayList<Address>(1024*1024);                  List<Address> updates = new ArrayList<Address>(1024*1024);
# Line 205  public class AddressManager { Line 207  public class AddressManager {
207                          }                          }
208                  }                  }
209                                    
210                  DatabaseLayerImplementation db = new DatabaseLayerImplementation();                  DatabaseCoverageUpdate db = new DatabaseCoverageUpdate();
211                                    
212                  db.updateAddresses(updates);                  db.updateAddresses(updates);
213                  db.saveNewAddresses(inserts);                  db.saveNewAddresses(inserts);
214    
215                                    
216                                    
217                  System.out.println("Writeback done: elapsed " + timer.getElapsed() + "ms.");                  logger.info("Writeback done: elapsed " + timer.getElapsed() + "ms.");
218          }          }
219                    
220                    
# Line 253  public class AddressManager { Line 255  public class AddressManager {
255                  }                  }
256          }          }
257                    
258            @SuppressWarnings("PMD.CollapsibleIfStatements")        
259          private void visitRange(AddressSourceEntry entry) {          private void visitRange(AddressSourceEntry entry) {
260                                    
261                  TreeMap<Short, ArrayList<Address>> gade = searchStructure.get( entry.gadeid );                  TreeMap<Short, ArrayList<Address>> gade = searchStructure.get( entry.gadeid );
# Line 261  public class AddressManager { Line 264  public class AddressManager {
264                                  unknownStreets.put(entry.gadeid, entry.vejnavn);                                                                  unknownStreets.put(entry.gadeid, entry.vejnavn);                                
265                          }                          }
266                                                    
267                          System.out.println("[Range] Ukendt gadeID " + entry);                          logger.info("[Range] Ukendt gadeID " + entry);
268                          return;                          return;
269                  }                  }
270                                    
# Line 301  public class AddressManager { Line 304  public class AddressManager {
304          private void updateAddress(Address addr, AddressSourceEntry entry) {          private void updateAddress(Address addr, AddressSourceEntry entry) {
305                  if ( addr.distributor != null && addr.distributor.equals(entry.distributor) == false) {                  if ( addr.distributor != null && addr.distributor.equals(entry.distributor) == false) {
306                          rejectedEntries.add(entry);                          rejectedEntries.add(entry);
307                          System.out.println("Afviser " + entry);                          logger.info("Afviser " + entry);
308                          return;                          return;
309                  }                  }
310                                    
# Line 323  public class AddressManager { Line 326  public class AddressManager {
326                                          }                                          }
327                                  }                                                                }                              
328                          } else {                          } else {
329                                  System.out.println( "Double visit monday " + addr);                                  duplicateCount++;
330                                    logger.info( "Double visit monday " + addr);
331                                    return; // if the entry is duplicate on one day that it covers - then it will be as well on all the othters
332                          }                          }
333    
334                  }                  }
# Line 345  public class AddressManager { Line 350  public class AddressManager {
350                                          }                                          }
351                                  }                                  }
352                          } else {                          } else {
353                                  System.out.println( "Double visit tuesday " + addr);                                  duplicateCount++;
354                                    logger.info( "Double visit tuesday " + addr);
355                                    return; // if the entry is duplicate on one day that it covers - then it will be as well on all the othters
356                          }                                                        }                              
357                  }                  }
358    
# Line 365  public class AddressManager { Line 372  public class AddressManager {
372                                          }                                          }
373                                  }                                  }
374                          } else {                          } else {
375                                  System.out.println( "Double visit wednesday " + addr);                                  duplicateCount++;
376                                    logger.info( "Double visit wednesday " + addr);
377                                    return; // if the entry is duplicate on one day that it covers - then it will be as well on all the othters
378                          }                                        }              
379                  }                  }
380    
# Line 387  public class AddressManager { Line 396  public class AddressManager {
396                                          }                                          }
397                                  }                                  }
398                          } else {                          } else {
399                                  System.out.println( "Double visit thursday " + addr);                                  duplicateCount++;
400                                    logger.info( "Double visit thursday " + addr);
401                                    return; // if the entry is duplicate on one day that it covers - then it will be as well on all the othters
402                          }                                                                }                                      
403                  }                  }
404    
# Line 408  public class AddressManager { Line 419  public class AddressManager {
419                                          }                                          }
420                                  }                                  }
421                          } else {                          } else {
422                                  System.out.println( "Double visit friday " + addr);                                  duplicateCount++;
423                                    logger.info( "Double visit friday " + addr);
424                                    return; // if the entry is duplicate on one day that it covers - then it will be as well on all the othters
425                          }                                }      
426                  }                  }
427    
# Line 430  public class AddressManager { Line 443  public class AddressManager {
443                                          }                                          }
444                                  }                                  }
445                          } else {                          } else {
446                                  System.out.println( "Double visit saturday " + addr);                                  duplicateCount++;
447                                    logger.info( "Double visit saturday " + addr);
448                                    return; // if the entry is duplicate on one day that it covers - then it will be as well on all the othters
449                          }                                                                }                                      
450                  }                  }
451    
# Line 451  public class AddressManager { Line 466  public class AddressManager {
466                                          }                                          }
467                                  }                                  }
468                          } else {                          } else {
469                                  System.out.println( "Double visit sunday " + addr);                                  duplicateCount++;
470                                    logger.info( "Double visit sunday " + addr);
471                                    return; // if the entry is duplicate on one day that it covers - then it will be as well on all the othters
472                          }                                                                }                                      
473                  }                  }
474                                    
# Line 479  public class AddressManager { Line 496  public class AddressManager {
496                    
497                    
498          private void createFromEntry(AddressSourceEntry entry) {          private void createFromEntry(AddressSourceEntry entry) {
499                    if (entry.husnr >= 1000) { //husnumre i DK må kun være på 3 cifre
500                            return;
501                    }
502                    
503                  if (entry.husnr == 999) {                  if (entry.husnr == 999) {
504                          return;                          return;
505                  }                  }
506                    
507                    if (entry.litra.length() > 1) { //litra må kun være på 1 tegn
508                            return;
509                    }
510                    if (entry.litra.length() == 1) {
511                            char litra = entry.litra.charAt(0);
512                            if ( Character.isLetter(litra) == false ) {
513                                    return;
514                            }
515                            
516                    }
517                    
518                  if (entry.kommunekode == 0 || entry.vejkode == 0) {                  if (entry.kommunekode == 0 || entry.vejkode == 0) {
519                          return;                          return;
520                  }                  }
# Line 492  public class AddressManager { Line 525  public class AddressManager {
525                  if (entry.gadeid == 0) {                  if (entry.gadeid == 0) {
526                          return;                          return;
527                  }                  }
528                                                    
529                  String gadeidStr = Integer.toString(entry.gadeid);                  String gadeidStr = Integer.toString(entry.gadeid);
530                  if (gadeidStr.length() != 9) {                  if (gadeidStr.length() != 9) {
531                          return;                          return;
# Line 503  public class AddressManager { Line 536  public class AddressManager {
536                                    
537                                    
538                                    
539                  System.out.println("Opretter adresse ud fra " + entry);                  logger.info("Opretter adresse ud fra " + entry);
540                                    
541                  Address a = new Address();                  Address addr = new Address();
542                  a.state = AddressState.CREATED;                  addr.state = AddressState.CREATED;
543                                    
544                  a.distributor = entry.distributor;                  addr.distributor = entry.distributor;
545                  a.gadeid = entry.gadeid;                  addr.gadeid = entry.gadeid;
546                  a.kommunekode = entry.kommunekode;                  addr.kommunekode = entry.kommunekode;
547                  a.vejkode = entry.vejkode;                  addr.vejkode = entry.vejkode;
548                  a.vejnavn = entry.vejnavn;                  addr.vejnavn = entry.vejnavn;
549                  a.husnr = entry.husnr;                  addr.husnr = entry.husnr;
550                  a.husnrbogstav = entry.litra;                  addr.husnrbogstav = entry.litra;
551                  a.postnr = entry.postnr;                  addr.postnr = entry.postnr;
                 //a.visited = true;  
552                                    
                 if (entry.ugedage.mandag) {  
                         a.ruteMandag = entry.rute;  
                         a.korelisteMandag = entry.koreliste;  
                 }  
                 if (entry.ugedage.tirsdag) {  
                         a.ruteTirsdag = entry.rute;  
                         a.korelisteTirsdag = entry.koreliste;  
                 }  
                 if (entry.ugedage.onsdag) {  
                         a.ruteOnsdag = entry.rute;  
                         a.korelisteOnsdag = entry.koreliste;  
                 }                
                 if (entry.ugedage.torsdag) {  
                         a.ruteTorsdag = entry.rute;  
                         a.korelisteTorsdag = entry.koreliste;  
                 }                
                 if (entry.ugedage.fredag) {  
                         a.ruteFredag = entry.rute;  
                         a.korelisteFredag = entry.koreliste;  
                 }                
                 if (entry.ugedage.lordag) {  
                         a.ruteLordag = entry.rute;  
                         a.korelisteLordag = entry.koreliste;  
                 }                
                 if (entry.ugedage.sondag) {  
                         a.ruteSondag = entry.rute;  
                         a.korelisteLordag = entry.koreliste;  
                 }                
                   
                 updateDbkBane(a);  
                   
                 // Nu er det nye adresse object oprettet - nu skal det gemmes i søge strukturen og totallisten  
553                                    
554                    updateAddress(addr, entry);
555    
556                  TreeMap<Short, ArrayList<Address>> gade = searchStructure.get( a.gadeid );                  
557                    // Nu er det nye adresse object oprettet - nu skal det gemmes i søge strukturen og totallisten        
558                    TreeMap<Short, ArrayList<Address>> gade = searchStructure.get( addr.gadeid );
559                                    
560                  if (gade == null) {                  if (gade == null) {
561                          gade = new TreeMap<Short,ArrayList<Address>>();                          gade = new TreeMap<Short,ArrayList<Address>>();
562                          searchStructure.put(a.gadeid, gade);                          searchStructure.put(addr.gadeid, gade);
563                  }                  }
564                                    
565                  ArrayList<Address> litraList = gade.get(a.husnr);                  ArrayList<Address> litraList = gade.get(addr.husnr);
566                  if (litraList == null) {                  if (litraList == null) {
567                          litraList = new ArrayList<Address>();                          litraList = new ArrayList<Address>();
568                          gade.put(a.husnr, litraList);                          gade.put(addr.husnr, litraList);
569                  }                  }
570                                    
571                  litraList.add(a);                  litraList.add(addr);
572                  addressList.add(a);                  addressList.add(addr);
573                                                                    
574          }          }
575                    
# Line 617  public class AddressManager { Line 620  public class AddressManager {
620                          bane = 204;                          bane = 204;
621                          break;                          break;
622                  default:                  default:
623                          throw new RuntimeException("Ukendt distributor" + a.distributor); //Silence findBugs                          throw new RuntimeException("Ukendt distributor: " + a.distributor); //Silence findBugs
624                  }                  }
625                                    
626                  if (bane == null) {                  if (bane == null) {
627                          throw new RuntimeException("Ukendt bane for postnr" + a.postnr);                          throw new RuntimeException("Ukendt bane for postnr: " + a.postnr);
628                  }                  }
629                                    
630                  if (a.dbkBane != bane) {                  if (a.dbkBane != bane) {
# Line 640  public class AddressManager { Line 643  public class AddressManager {
643                  return Collections.unmodifiableMap( unknownStreets );                  return Collections.unmodifiableMap( unknownStreets );
644          }          }
645                    
646                    public int getDuplicateCount() {
647                    return duplicateCount;
648            }
649                    
650          public int getRejectedCount() {          public int getRejectedCount() {
651                  return rejectedEntries.size();                  return rejectedEntries.size();

Legend:
Removed from v.2894  
changed lines
  Added in v.2949

  ViewVC Help
Powered by ViewVC 1.1.20