/[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 2844 by torben, Mon Jan 25 21:43:59 2016 UTC revision 2850 by torben, Tue Jan 26 16:50:22 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    
25    
26    
27   */   */
28    
29  public class AddressManager {  public class AddressManager {
# Line 28  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 49  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 157  public class AddressManager { Line 171  public class AddressManager {
171                          if (addr.state == AddressState.NOT_CHANGED) {                          if (addr.state == AddressState.NOT_CHANGED) {
172                                  continue;                                  continue;
173                          }                          }
174                          if (addr.stateMan == AddressState.NOT_CHANGED || addr.stateMan == AddressState.CREATED) {                          /*if (addr.stateMan == AddressState.NOT_CHANGED || addr.stateMan == AddressState.CREATED) {
175                                  continue;                                  continue;
176                          }                          }*/
177                                                    
178                          if (addr.stateMan != AddressState.MODIFIED ) {                          if (addr.stateMan != AddressState.MODIFIED ) {
179                                  continue;                                  continue;
# Line 168  public class AddressManager { Line 182  public class AddressManager {
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 190  public class AddressManager { Line 204  public class AddressManager {
204                  }                  }
205                                    
206                  DatabaseLayerImplementation db = new DatabaseLayerImplementation();                  DatabaseLayerImplementation db = new DatabaseLayerImplementation();
207                    
208                  db.updateAddresses(updates);                  db.updateAddresses(updates);
209    
210                    
211                                    
212                  System.out.println("Writeback done: elapsed " + timer.getElapsed() + "ms.");                  System.out.println("Writeback done: elapsed " + timer.getElapsed() + "ms.");
213          }          }
# Line 275  public class AddressManager { Line 292  public class AddressManager {
292                          return;                          return;
293                  }                  }
294                                    
295                  addr.visited = true;  
                 if (addr.state == AddressState.NOT_CHANGED) {  
                         if (addr.distributor == null) {  
                                 addr.state = AddressState.OPENED;  
                                 addr.distributor = entry.distributor;  
                         } else {  
                                 addr.state = AddressState.MODIFIED;  
                         }  
                 }  
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;
448                    if (addr.state == AddressState.NOT_CHANGED) {
449                            if (addr.distributor == null) {
450                                    addr.state = AddressState.OPENED;
451                                    addr.distributor = entry.distributor;
452                            } else {
453                                    if (addr.stateMan != AddressState.NOT_CHANGED || addr.stateTir != AddressState.NOT_CHANGED
454                                                    || addr.stateOns != AddressState.NOT_CHANGED || addr.stateTor != AddressState.NOT_CHANGED
455                                                    || addr.stateFre != AddressState.NOT_CHANGED || addr.stateLor != AddressState.NOT_CHANGED || addr.stateSon != AddressState.NOT_CHANGED ){
456                                            
457                                            addr.state = AddressState.MODIFIED;    
458                                    }
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                    
476                    
477                  System.out.println("Opretter adresse ud fra " + entry);                  System.out.println("Opretter adresse ud fra " + entry);
478                                    
479                  Address a = new Address();                  Address a = new Address();
# Line 455  public class AddressManager { Line 518  public class AddressManager {
518                          a.korelisteLordag = entry.koreliste;                          a.korelisteLordag = entry.koreliste;
519                  }                                }              
520                                    
521                    updateDbkBane(a);
522                    
523                  // 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
524                                    
525    
# Line 476  public class AddressManager { Line 541  public class AddressManager {
541                                                                    
542          }          }
543                    
544            
545            
546             /*
547             DAO:
548             UPDATE fulddaekning.adressetabel
549             SET dbkbane = case
550                    when substr(korelisteMa,1,2) IN ('07','10','11','12','14','15','16','18','19','20') then 205 #DAO-BRA
551                 when substr(korelisteMa,1,2) BETWEEN 24 and 30 then 201 #DAO-Ovrige
552                 else 202 #dao syd (52-99=
553             END
554             WHERE distributor='DAO'
555             AND ruteMa is not null;
556    
557             FD: Altid 200
558             NS: Altid 204
559             BK: 195,196,197,198
560             */
561            
562            private void updateDbkBane(Address a) {
563                    List<Short> daoBane205 = Arrays.asList( new Short[] {7,10,11,12,12,14,15,16,18,19,20} );
564                    
565                    
566                    Short bane = null;
567                    
568                    switch (a.distributor) {
569                    case "BK":                      
570                            bane = dbkBaneMap.get(a.postnr);
571                            break;
572                    case "DAO":
573                            String koreliste = MiscUtils.firstNonNull(a.korelisteMandag,a.korelisteLordag, a.korelisteSondag); //DAO har kun 3 dækningstyper
574                            short first2 = Short.parseShort( koreliste.substring(0,2) );
575                            if ( daoBane205.contains(first2) ) {
576                                    bane = 205;
577                            } else if (first2 >= 24 && first2<=30) {
578                                    bane = 201;
579                            } else {
580                                    bane = 202;
581                            }
582                                    
583                            break;                  
584                    case "FD":
585                            bane = 200;
586                            break;
587                    case "NS":
588                            bane = 204;
589                            break;                  
590                    }
591                    
592                    if (bane == null) {
593                            throw new RuntimeException("Ukendt bane for postnr" + a.postnr);
594                    }
595                    
596                    if (a.dbkBane != bane) {
597                            a.dbkBane = bane;
598                            if (a.state ==AddressState.NOT_CHANGED) {
599                                    a.state = AddressState.MODIFIED;
600                            }
601                    }              
602            }
603            
604          public List<Address> getAddressList() {          public List<Address> getAddressList() {
605                  return Collections.unmodifiableList(addressList);                  return Collections.unmodifiableList(addressList);
606          }          }
607                    
608            
609            
610          public int getAfvistAntal() {          public int getAfvistAntal() {
611                  return afvisteEntries.size();                  return afvisteEntries.size();
612          }          }

Legend:
Removed from v.2844  
changed lines
  Added in v.2850

  ViewVC Help
Powered by ViewVC 1.1.20