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

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

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

revision 2846 by torben, Tue Jan 26 08:21:22 2016 UTC revision 2847 by torben, Tue Jan 26 11:48:37 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                                    
# Line 432  public class AddressManager { Line 459  public class AddressManager {
459                          }                          }
460                  }                                }              
461                                    
462                    updateDbkBane(addr);
463                                    
464          }          }
465                    
# Line 482  public class AddressManager { Line 510  public class AddressManager {
510                          a.korelisteLordag = entry.koreliste;                          a.korelisteLordag = entry.koreliste;
511                  }                                }              
512                                    
513                    updateDbkBane(a);
514                    
515                  // 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
516                                    
517    
# Line 503  public class AddressManager { Line 533  public class AddressManager {
533                                                                    
534          }          }
535                    
536            
537            
538             /*
539             DAO:
540             UPDATE fulddaekning.adressetabel
541             SET dbkbane = case
542                    when substr(korelisteMa,1,2) IN ('07','10','11','12','14','15','16','18','19','20') then 205 #DAO-BRA
543                 when substr(korelisteMa,1,2) BETWEEN 24 and 30 then 201 #DAO-Ovrige
544                 else 202 #dao syd (52-99=
545             END
546             WHERE distributor='DAO'
547             AND ruteMa is not null;
548    
549             FD: Altid 200
550             NS: Altid 204
551             BK: 195,196,197,198
552             */
553            
554            private void updateDbkBane(Address a) {
555                    List<Short> daoBane205 = Arrays.asList( new Short[] {7,10,11,12,12,14,15,16,18,19,20} );
556                    
557                    
558                    Short bane = null;
559                    
560                    switch (a.distributor) {
561                    case "BK":                      
562                            bane = dbkBaneMap.get(a.postnr);
563                            break;
564                    case "DAO":
565                            String koreliste = MiscUtils.firstNonNull(a.korelisteMandag,a.korelisteLordag, a.korelisteSondag); //DAO har kun 3 dækningstyper
566                            short first2 = Short.parseShort( koreliste.substring(0,2) );
567                            if ( daoBane205.contains(first2) ) {
568                                    bane = 205;
569                            } else if (first2 >= 24 && first2<=30) {
570                                    bane = 201;
571                            } else {
572                                    bane = 202;
573                            }
574                                    
575                            break;                  
576                    case "FD":
577                            bane = 200;
578                            break;
579                    case "NS":
580                            bane = 204;
581                            break;                  
582                    }
583                    
584                    if (bane == null) {
585                            throw new RuntimeException("Ukendt bane for postnr" + a.postnr);
586                    }
587                    
588                    if (a.dbkBane != bane) {
589                            a.dbkBane = bane;
590                            if (a.state ==AddressState.NOT_CHANGED) {
591                                    a.state = AddressState.MODIFIED;
592                            }
593                    }              
594            }
595            
596          public List<Address> getAddressList() {          public List<Address> getAddressList() {
597                  return Collections.unmodifiableList(addressList);                  return Collections.unmodifiableList(addressList);
598          }          }
599                    
600            
601            
602          public int getAfvistAntal() {          public int getAfvistAntal() {
603                  return afvisteEntries.size();                  return afvisteEntries.size();
604          }          }

Legend:
Removed from v.2846  
changed lines
  Added in v.2847

  ViewVC Help
Powered by ViewVC 1.1.20