/[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

revision 2845 by torben, Tue Jan 26 08:21:22 2016 UTC revision 2862 by torben, Thu Jan 28 11:07:07 2016 UTC
# Line 2  package dk.daoas.adressevedligehold; Line 2  package dk.daoas.adressevedligehold;
2    
3  import java.sql.SQLException;  import java.sql.SQLException;
4  import java.util.ArrayList;  import java.util.ArrayList;
5    import java.util.Arrays;
6  import java.util.Collections;  import java.util.Collections;
7  import java.util.List;  import java.util.List;
8  import java.util.Map;  import java.util.Map;
# Line 15  import dk.daoas.adressevedligehold.beans Line 16  import dk.daoas.adressevedligehold.beans
16  import dk.daoas.adressevedligehold.beans.Address.AddressState;  import dk.daoas.adressevedligehold.beans.Address.AddressState;
17  import dk.daoas.adressevedligehold.db.DatabaseLayerImplementation;  import dk.daoas.adressevedligehold.db.DatabaseLayerImplementation;
18  import dk.daoas.adressevedligehold.util.DeduplicateHelper;  import dk.daoas.adressevedligehold.util.DeduplicateHelper;
19    import dk.daoas.adressevedligehold.util.MiscUtils;
20  import dk.daoas.adressevedligehold.util.TimingHelper;  import dk.daoas.adressevedligehold.util.TimingHelper;
21    
22  /*  /*
23   * TODO: håndtering af entry dupletter ! (+ rapportering af dem)   * TODO: håndtering af entry dupletter ! (+ rapportering af dem)
24   * TODO: ajourføring af DBKbane  
 DAO:  
 UPDATE fulddaekning.adressetabel  
 SET dbkbane = case  
         when substr(korelisteMa,1,2) IN ('07','10','11','12','14','15','16','18','19','20') then 205 #DAO-BRA  
     when substr(korelisteMa,1,2) BETWEEN 24 and 30 then 201 #DAO-Ovrige  
     else 202 #dao syd (52-99=  
 END  
 WHERE distributor='DAO'  
 AND ruteMa is not null;  
   
 FD: Altid 200  
 NS: Altid 204  
 BK: 195,196,197,198  
25    
26    
27   */   */
# Line 44  public class AddressManager { Line 33  public class AddressManager {
33                    
34          Map<Integer, TreeMap<Short, ArrayList<Address>> > searchStructure;          Map<Integer, TreeMap<Short, ArrayList<Address>> > searchStructure;
35                    
36          ArrayList<AddressSourceEntry> afvisteEntries = new ArrayList<AddressSourceEntry>();          ArrayList<AddressSourceEntry> afvisteEntries = new ArrayList<AddressSourceEntry>();
37            
38            Map<Short,Short> dbkBaneMap = new TreeMap<Short,Short>();
39                    
40          public AddressManager() throws SQLException {          public AddressManager() throws SQLException {
41                  DatabaseLayerImplementation db = new DatabaseLayerImplementation();                  DatabaseLayerImplementation db = new DatabaseLayerImplementation();
# Line 65  public class AddressManager { Line 56  public class AddressManager {
56                          Short husnr = shortHelper.getInstance( a.husnr );                          Short husnr = shortHelper.getInstance( a.husnr );
57                          TreeMap<Short, ArrayList<Address>> gade = searchStructure.get( gadeid );                          TreeMap<Short, ArrayList<Address>> gade = searchStructure.get( gadeid );
58                                                    
59                            if (a.dbkBane > 0 && a.postnr<=4999) {
60                                    Short bane = dbkBaneMap.get(a.postnr);
61                                    if (bane == null) {
62                                            dbkBaneMap.put(a.postnr, a.dbkBane);
63                                    }
64                            }
65                            
66                          if (gade == null) {                          if (gade == null) {
67                                  gade = new TreeMap<Short,ArrayList<Address>>();                                  gade = new TreeMap<Short,ArrayList<Address>>();
68                                  searchStructure.put(gadeid, gade);                                  searchStructure.put(gadeid, gade);
# Line 177  public class AddressManager { Line 175  public class AddressManager {
175                                  continue;                                  continue;
176                          }*/                          }*/
177                                                    
178                          if (addr.stateMan != AddressState.OPENED ) {                          if (addr.stateMan != AddressState.MODIFIED ) {
179                                  continue;                                  continue;
180                          }                          }
181                                                    
182                          System.out.println(addr.state + ": " + addr.toStringExtended() );                          System.out.println(addr.state + ": " + addr.toStringExtended() );
183                          System.out.println(addr.getRuteString() );                          System.out.println(addr.getRuteString() );
184                                                    
185                          if (count++ > 15)                          if (count++ > 50)
186                                  return;                                  return;
187                  }                  }
188          }          }
# Line 297  public class AddressManager { Line 295  public class AddressManager {
295    
296                                    
297                  if (entry.ugedage.mandag) {                  if (entry.ugedage.mandag) {
298                          addr.visitedMan = true;                          if (addr.visitedMan == false) {
299                          if (addr.ruteMandag == null) {                                  addr.visitedMan = true;
300                                  addr.stateMan = AddressState.OPENED;                                  if (addr.ruteMandag == null) {
301                                  addr.ruteMandag = entry.rute;                                          addr.stateMan = AddressState.OPENED;
                                 addr.korelisteMandag = entry.koreliste;  
                         } else {  
                                   
                                 if (StringUtils.equals(addr.ruteMandag, entry.rute) == false || StringUtils.equals(addr.korelisteMandag, entry.koreliste) == false) {  
                                         addr.stateMan = AddressState.MODIFIED;  
302                                          addr.ruteMandag = entry.rute;                                          addr.ruteMandag = entry.rute;
303                                          addr.korelisteMandag = entry.koreliste;                                                                          addr.korelisteMandag = entry.koreliste;
304                                  }                                  } else {
305                                            
306                                            if (StringUtils.equals(addr.ruteMandag, entry.rute) == false || StringUtils.equals(addr.korelisteMandag, entry.koreliste) == false) {
307                                                    addr.stateMan = AddressState.MODIFIED;
308                                                    addr.ruteMandag = entry.rute;
309                                                    addr.korelisteMandag = entry.koreliste;                                
310                                            }
311                                    }                              
312                            } else {
313                                    System.out.println( "Double visit monday " + addr);
314                          }                          }
315    
316                  }                  }
317                                    
318                                    
319                  if (entry.ugedage.tirsdag) {                  if (entry.ugedage.tirsdag) {
320                          addr.visitedTir = true;                          if (addr.visitedTir == false) {
321                          if (addr.ruteTirsdag == null) {                                  addr.visitedTir = true;
322                                  addr.stateTir = AddressState.OPENED;                                  if (addr.ruteTirsdag == null) {
323                                  addr.ruteTirsdag = entry.rute;                                          addr.stateTir = AddressState.OPENED;
                                 addr.korelisteTirsdag = entry.koreliste;  
                         } else {  
                                   
                                 if (StringUtils.equals(addr.ruteTirsdag, entry.rute) == false || StringUtils.equals(addr.korelisteTirsdag, entry.koreliste) == false) {  
                                         addr.stateTir = AddressState.MODIFIED;  
324                                          addr.ruteTirsdag = entry.rute;                                          addr.ruteTirsdag = entry.rute;
325                                          addr.korelisteTirsdag = entry.koreliste;                                                                                  addr.korelisteTirsdag = entry.koreliste;
326                                    } else {
327                                            
328                                            if (StringUtils.equals(addr.ruteTirsdag, entry.rute) == false || StringUtils.equals(addr.korelisteTirsdag, entry.koreliste) == false) {
329                                                    addr.stateTir = AddressState.MODIFIED;
330                                                    addr.ruteTirsdag = entry.rute;
331                                                    addr.korelisteTirsdag = entry.koreliste;                                        
332                                            }
333                                  }                                  }
334                          }                          } else {
335                                    System.out.println( "Double visit tuesday " + addr);
336                            }                              
337                  }                  }
338    
339                  if (entry.ugedage.onsdag) {                  if (entry.ugedage.onsdag) {
340                          addr.visitedOns = true;                          if (addr.visitedOns == false) {
341                          if (addr.ruteOnsdag == null) {                                  addr.visitedOns = true;
342                                  addr.stateOns = AddressState.OPENED;                                  if (addr.ruteOnsdag == null) {
343                                  addr.ruteOnsdag = entry.rute;                                          addr.stateOns = AddressState.OPENED;
                                 addr.korelisteOnsdag = entry.koreliste;  
                         } else {  
                                   
                                 if (StringUtils.equals(addr.ruteOnsdag, entry.rute) == false || StringUtils.equals(addr.korelisteOnsdag, entry.koreliste) == false) {  
                                         addr.stateOns = AddressState.MODIFIED;  
344                                          addr.ruteOnsdag = entry.rute;                                          addr.ruteOnsdag = entry.rute;
345                                          addr.korelisteOnsdag = entry.koreliste;                                                                          addr.korelisteOnsdag = entry.koreliste;
346                                    } else {
347                                            
348                                            if (StringUtils.equals(addr.ruteOnsdag, entry.rute) == false || StringUtils.equals(addr.korelisteOnsdag, entry.koreliste) == false) {
349                                                    addr.stateOns = AddressState.MODIFIED;
350                                                    addr.ruteOnsdag = entry.rute;
351                                                    addr.korelisteOnsdag = entry.koreliste;                                
352                                            }
353                                  }                                  }
354                          }                          } else {
355                                    System.out.println( "Double visit wednesday " + addr);
356                            }              
357                  }                  }
358    
359                                    
360                  if (entry.ugedage.torsdag) {                  if (entry.ugedage.torsdag) {
361                          addr.visitedTor = true;                          if (addr.visitedTor == false) {
362                          if (addr.ruteTorsdag == null) {                                  addr.visitedTor = true;
363                                  addr.stateTor = AddressState.OPENED;                                  if (addr.ruteTorsdag == null) {
364                                  addr.ruteTorsdag = entry.rute;                                          addr.stateTor = AddressState.OPENED;
                                 addr.korelisteTorsdag = entry.koreliste;  
                         } else {  
                                   
                                   
                                 if (StringUtils.equals(addr.ruteTorsdag, entry.rute) == false || StringUtils.equals(addr.korelisteTorsdag, entry.koreliste) == false) {  
                                         addr.stateTor = AddressState.MODIFIED;  
365                                          addr.ruteTorsdag = entry.rute;                                          addr.ruteTorsdag = entry.rute;
366                                          addr.korelisteTorsdag = entry.koreliste;                                                                                  addr.korelisteTorsdag = entry.koreliste;
367                                    } else {
368                                            
369                                            
370                                            if (StringUtils.equals(addr.ruteTorsdag, entry.rute) == false || StringUtils.equals(addr.korelisteTorsdag, entry.koreliste) == false) {
371                                                    addr.stateTor = AddressState.MODIFIED;
372                                                    addr.ruteTorsdag = entry.rute;
373                                                    addr.korelisteTorsdag = entry.koreliste;                                        
374                                            }
375                                  }                                  }
376                          }                          } else {
377                                    System.out.println( "Double visit thursday " + addr);
378                            }                                      
379                  }                  }
380    
381                                    
382                  if (entry.ugedage.fredag) {                  if (entry.ugedage.fredag) {
383                          addr.visitedFre = true;                          if (addr.visitedFre == false) {
384                          if (addr.ruteFredag == null) {                                  addr.visitedFre = true;
385                                  addr.stateFre = AddressState.OPENED;                                  if (addr.ruteFredag == null) {
386                                  addr.ruteFredag = entry.rute;                                          addr.stateFre = AddressState.OPENED;
                                 addr.korelisteFredag = entry.koreliste;  
                         } else {  
                                   
                                 if (StringUtils.equals(addr.ruteFredag, entry.rute) == false || StringUtils.equals(addr.korelisteFredag, entry.koreliste) == false) {  
                                         addr.stateFre = AddressState.MODIFIED;  
387                                          addr.ruteFredag = entry.rute;                                          addr.ruteFredag = entry.rute;
388                                          addr.korelisteFredag = entry.koreliste;                                                                          addr.korelisteFredag = entry.koreliste;
389                                    } else {
390                                            
391                                            if (StringUtils.equals(addr.ruteFredag, entry.rute) == false || StringUtils.equals(addr.korelisteFredag, entry.koreliste) == false) {
392                                                    addr.stateFre = AddressState.MODIFIED;
393                                                    addr.ruteFredag = entry.rute;
394                                                    addr.korelisteFredag = entry.koreliste;                                
395                                            }
396                                  }                                  }
397                          }                          } else {
398                                    System.out.println( "Double visit friday " + addr);
399                            }      
400                  }                  }
401    
402                                    
403                  if (entry.ugedage.lordag) {                  if (entry.ugedage.lordag) {
404                          addr.visitedLor = true;                          if (addr.visitedLor == false) {
405                          if (addr.ruteLordag == null) {                                  addr.visitedLor = true;
406                                  addr.stateLor = AddressState.OPENED;                                  if (addr.ruteLordag == null) {
407                                  addr.ruteLordag = entry.rute;                                          addr.stateLor = AddressState.OPENED;
                                 addr.korelisteLordag = entry.koreliste;  
                         } else {  
                                   
                                   
                                 if (StringUtils.equals(addr.ruteLordag, entry.rute) == false || StringUtils.equals(addr.korelisteLordag, entry.koreliste) == false) {  
                                         addr.stateLor = AddressState.MODIFIED;  
408                                          addr.ruteLordag = entry.rute;                                          addr.ruteLordag = entry.rute;
409                                          addr.korelisteLordag = entry.koreliste;                                                                          addr.korelisteLordag = entry.koreliste;
410                                    } else {
411                                            
412                                            
413                                            if (StringUtils.equals(addr.ruteLordag, entry.rute) == false || StringUtils.equals(addr.korelisteLordag, entry.koreliste) == false) {
414                                                    addr.stateLor = AddressState.MODIFIED;
415                                                    addr.ruteLordag = entry.rute;
416                                                    addr.korelisteLordag = entry.koreliste;                                
417                                            }
418                                  }                                  }
419                          }                          } else {
420                                    System.out.println( "Double visit saturday " + addr);
421                            }                                      
422                  }                  }
423    
424                                    
425                  if (entry.ugedage.sondag) {                  if (entry.ugedage.sondag) {
426                          addr.visitedSon = true;                          if (addr.visitedSon == false) {
427                          if (addr.ruteSondag == null) {                                  addr.visitedSon = true;
428                                  addr.stateSon = AddressState.OPENED;                                  if (addr.ruteSondag == null) {
429                                  addr.ruteSondag = entry.rute;                                          addr.stateSon = AddressState.OPENED;
                                 addr.korelisteSondag = entry.koreliste;  
                         } else {  
                                   
                                 if (StringUtils.equals(addr.ruteSondag, entry.rute) == false || StringUtils.equals(addr.korelisteSondag, entry.koreliste) == false) {  
                                         addr.stateSon = AddressState.MODIFIED;  
430                                          addr.ruteSondag = entry.rute;                                          addr.ruteSondag = entry.rute;
431                                          addr.korelisteSondag = entry.koreliste;                                                                          addr.korelisteSondag = entry.koreliste;
432                                    } else {
433                                            
434                                            if (StringUtils.equals(addr.ruteSondag, entry.rute) == false || StringUtils.equals(addr.korelisteSondag, entry.koreliste) == false) {
435                                                    addr.stateSon = AddressState.MODIFIED;
436                                                    addr.ruteSondag = entry.rute;
437                                                    addr.korelisteSondag = entry.koreliste;                                
438                                            }
439                                  }                                  }
440                          }                          } else {
441                                    System.out.println( "Double visit sunday " + addr);
442                            }                                      
443                  }                  }
444                                    
445                                    
446                                    
447                  addr.visited = true;                  //addr.visited = true;
448                  if (addr.state == AddressState.NOT_CHANGED) {                  if (addr.state == AddressState.NOT_CHANGED) {
449                          if (addr.distributor == null) {                          if (addr.distributor == null) {
450                                  addr.state = AddressState.OPENED;                                  addr.state = AddressState.OPENED;
# Line 432  public class AddressManager { Line 459  public class AddressManager {
459                          }                          }
460                  }                                }              
461                                    
462                    updateDbkBane(addr);
463                                    
464          }          }
465                    
466                    
467                    
468          private void createFromEntry(AddressSourceEntry entry) {          private void createFromEntry(AddressSourceEntry entry) {
469                    if (entry.husnr == 999) {
470                            return;
471                    }
472                    if (entry.kommunekode == 0 || entry.vejkode == 0) {
473                            return;
474                    }
475                    if (entry.kommunekode < 100) {
476                            return;
477                    }
478                    if (Short.parseShort(Integer.toString(entry.gadeid).substring(0, 4)) != entry.postnr) {
479                            return; //gadeid / postnr mismatch
480                    }
481                    
482                    
483                    
484                  System.out.println("Opretter adresse ud fra " + entry);                  System.out.println("Opretter adresse ud fra " + entry);
485                                    
486                  Address a = new Address();                  Address a = new Address();
# Line 451  public class AddressManager { Line 494  public class AddressManager {
494                  a.husnr = entry.husnr;                  a.husnr = entry.husnr;
495                  a.husnrbogstav = entry.litra;                  a.husnrbogstav = entry.litra;
496                  a.postnr = entry.postnr;                  a.postnr = entry.postnr;
497                  a.visited = true;                  //a.visited = true;
498                                    
499                  if (entry.ugedage.mandag) {                  if (entry.ugedage.mandag) {
500                          a.ruteMandag = entry.rute;                          a.ruteMandag = entry.rute;
# Line 482  public class AddressManager { Line 525  public class AddressManager {
525                          a.korelisteLordag = entry.koreliste;                          a.korelisteLordag = entry.koreliste;
526                  }                                }              
527                                    
528                    updateDbkBane(a);
529                    
530                  // Nu er det nye adresse object oprettet - nu skal det gemmes i søge strukturen og totallisten                  // Nu er det nye adresse object oprettet - nu skal det gemmes i søge strukturen og totallisten
531                                    
532    
# Line 503  public class AddressManager { Line 548  public class AddressManager {
548                                                                    
549          }          }
550                    
551            
552            
553             /*
554             DAO:
555             UPDATE fulddaekning.adressetabel
556             SET dbkbane = case
557                    when substr(korelisteMa,1,2) IN ('07','10','11','12','14','15','16','18','19','20') then 205 #DAO-BRA
558                 when substr(korelisteMa,1,2) BETWEEN 24 and 30 then 201 #DAO-Ovrige
559                 else 202 #dao syd (52-99=
560             END
561             WHERE distributor='DAO'
562             AND ruteMa is not null;
563    
564             FD: Altid 200
565             NS: Altid 204
566             BK: 195,196,197,198
567             */
568            
569            private void updateDbkBane(Address a) {
570                    List<Short> daoBane205 = Arrays.asList( new Short[] {7,10,11,12,12,14,15,16,18,19,20} );
571                    
572                    
573                    Short bane = null;
574                    
575                    switch (a.distributor) {
576                    case "BK":                      
577                            bane = dbkBaneMap.get(a.postnr);
578                            break;
579                    case "DAO":
580                            String koreliste = MiscUtils.firstNonNull(a.korelisteMandag,a.korelisteLordag, a.korelisteSondag); //DAO har kun 3 dækningstyper
581                            short first2 = Short.parseShort( koreliste.substring(0,2) );
582                            if ( daoBane205.contains(first2) ) {
583                                    bane = 205;
584                            } else if (first2 >= 24 && first2<=30) {
585                                    bane = 201;
586                            } else {
587                                    bane = 202;
588                            }
589                                    
590                            break;                  
591                    case "FD":
592                            bane = 200;
593                            break;
594                    case "NS":
595                            bane = 204;
596                            break;                  
597                    }
598                    
599                    if (bane == null) {
600                            throw new RuntimeException("Ukendt bane for postnr" + a.postnr);
601                    }
602                    
603                    if (a.dbkBane != bane) {
604                            a.dbkBane = bane;
605                            if (a.state ==AddressState.NOT_CHANGED) {
606                                    a.state = AddressState.MODIFIED;
607                            }
608                    }              
609            }
610            
611          public List<Address> getAddressList() {          public List<Address> getAddressList() {
612                  return Collections.unmodifiableList(addressList);                  return Collections.unmodifiableList(addressList);
613          }          }
614                    
615            
616            
617          public int getAfvistAntal() {          public int getAfvistAntal() {
618                  return afvisteEntries.size();                  return afvisteEntries.size();
619          }          }

Legend:
Removed from v.2845  
changed lines
  Added in v.2862

  ViewVC Help
Powered by ViewVC 1.1.20