310 |
searchGadeidentAdresser = new HashMap<Integer, Map<Short, Map<String,Address>>>(); |
searchGadeidentAdresser = new HashMap<Integer, Map<Short, Map<String,Address>>>(); |
311 |
helperCache = new ConcurrentHashMap<String,Integer>(); |
helperCache = new ConcurrentHashMap<String,Integer>(); |
312 |
|
|
313 |
|
// ////////////////////// |
314 |
|
// Start stage1 |
315 |
|
|
316 |
long start1 = System.currentTimeMillis(); |
long start1 = System.currentTimeMillis(); |
317 |
System.out.println("Build -- stage 1"); |
System.out.println("Build -- stage 1"); |
318 |
|
|
319 |
alleAdresser = db.getAllAdresses(); |
alleAdresser = db.getAllAdresses(); |
320 |
|
|
321 |
|
|
322 |
/* Mapper mellem db Row ID og adresse noden */ |
/* Mapper mellem db Row ID og adresse noden - skal bruges i stage3*/ |
323 |
Map<Integer,Address> idAddressMap = new HashMap<Integer,Address>( alleAdresser.size() ); |
Map<Integer,Address> idAddressMap = new HashMap<Integer,Address>( alleAdresser.size() ); |
324 |
DeduplicateHelper<String> aliasHelper = new DeduplicateHelper<String>(400000); // Indeholder pt 379664 entries |
|
325 |
|
|
326 |
DeduplicateHelper<Short> shortHelper = new DeduplicateHelper<Short>(); |
DeduplicateHelper<Short> shortHelper = new DeduplicateHelper<Short>(); |
327 |
DeduplicateHelper<Integer> intHelper = new DeduplicateHelper<Integer>(); |
DeduplicateHelper<Integer> intHelper = new DeduplicateHelper<Integer>(); |
350 |
gadeident = intHelper.getInstance( a.gadeid ); |
gadeident = intHelper.getInstance( a.gadeid ); |
351 |
|
|
352 |
Set<String> aliaser = aliasGenerator.findVejAliaser(a.vejnavn); |
Set<String> aliaser = aliasGenerator.findVejAliaser(a.vejnavn); |
353 |
for(String alias : aliaser) { |
for(String alias : aliaser) { |
354 |
String vasketAlias = AddressUtils.vaskVejnavn(alias); |
postnrVeje.put(alias, gadeident); |
|
vasketAlias = aliasHelper.getInstance(vasketAlias); |
|
|
|
|
|
postnrVeje.put(vasketAlias, gadeident); |
|
355 |
} |
} |
356 |
|
|
357 |
} |
} |
372 |
litraList.put(a.husnrbogstav, a); |
litraList.put(a.husnrbogstav, a); |
373 |
} |
} |
374 |
|
|
375 |
aliasHelper = null; //frigiv hukommelse inden stage2 |
|
376 |
|
aliasGenerator.clear(); //frigiv hukommelse inden stage2 |
377 |
aliasGenerator = null; |
aliasGenerator = null; |
378 |
|
shortHelper.clear(); |
379 |
|
shortHelper = null; |
380 |
|
intHelper.clear(); |
381 |
|
intHelper = null; |
382 |
|
|
383 |
|
|
384 |
//////////////////////////////////////////////////////////////////////////////////////// |
//////////////////////////////////////////////////////////////////////////////////////// |
415 |
} |
} |
416 |
System.out.println("Anvendte " + vaskCount + " aliaser fra databasen"); |
System.out.println("Anvendte " + vaskCount + " aliaser fra databasen"); |
417 |
|
|
418 |
|
aliasList.clear();//cleanup inden stage3 |
419 |
|
|
420 |
|
|
421 |
//////////////////////////////////////////////////////////////////////////////////////// |
//////////////////////////////////////////////////////////////////////////////////////// |
422 |
long start3 = System.currentTimeMillis(); |
long start3 = System.currentTimeMillis(); |
459 |
|
|
460 |
boolean covered = false; |
boolean covered = false; |
461 |
if (targetAddress.distributor.equals("DAO")) { |
if (targetAddress.distributor.equals("DAO")) { |
462 |
orgAddress.rute = calculateExtendedDaoRoute(eb,orgAddress,targetAddress); |
orgAddress.ruteMandag = calculateExtendedDaoRoute(eb,orgAddress,targetAddress); |
463 |
orgAddress.rute = ruteHelper.getInstance(orgAddress.rute); |
orgAddress.ruteMandag = ruteHelper.getInstance(orgAddress.ruteMandag); |
464 |
|
|
465 |
if (orgAddress.rute != null) { |
if (orgAddress.ruteMandag != null) { |
466 |
orgAddress.koreliste = targetAddress.koreliste; |
orgAddress.korelisteMandag = targetAddress.korelisteMandag; |
467 |
covered = true; |
covered = true; |
468 |
} |
} |
469 |
} |
} |
470 |
|
|
471 |
if (targetAddress.distributor.equals("BK")) { |
if (targetAddress.distributor.equals("BK")) { |
472 |
orgAddress.koreliste = calculateExtendedBkKoreliste(eb,orgAddress,targetAddress); |
orgAddress.korelisteMandag = calculateExtendedBkKoreliste(eb,orgAddress,targetAddress); |
473 |
orgAddress.koreliste = korelisteHelper.getInstance(orgAddress.koreliste); |
orgAddress.korelisteMandag = korelisteHelper.getInstance(orgAddress.korelisteMandag); |
474 |
|
|
475 |
if (orgAddress.koreliste != null) { |
if (orgAddress.korelisteMandag != null) { |
476 |
orgAddress.rute = targetAddress.rute; |
orgAddress.ruteMandag = targetAddress.ruteMandag; |
477 |
covered = true; |
covered = true; |
478 |
} |
} |
479 |
} |
} |
492 |
} |
} |
493 |
} |
} |
494 |
|
|
495 |
// nu skal vi ikke bruge idAddressMap længere |
// cleanup inden stage 4 |
496 |
idAddressMap = null; |
idAddressMap = null; |
497 |
|
ruteHelper = null; |
498 |
|
korelisteHelper = null; |
499 |
|
|
500 |
////////////////////////////////////////////////////////////////////////////////////// |
////////////////////////////////////////////////////////////////////////////////////// |
501 |
long start4 = System.currentTimeMillis(); |
long start4 = System.currentTimeMillis(); |
519 |
} |
} |
520 |
|
|
521 |
addr.daekningsType = DaekningsType.DAEKNING_100PCT; |
addr.daekningsType = DaekningsType.DAEKNING_100PCT; |
522 |
addr.rute = bean.rute; |
addr.ruteMandag = bean.rute; |
523 |
addr.koreliste = bean.koreliste; |
addr.korelisteMandag = bean.koreliste; |
524 |
addr.dbkBane = bean.dbkBane; |
addr.dbkBane = bean.dbkBane; |
525 |
addr.distributor = bean.distributor; |
addr.distributor = bean.distributor; |
526 |
} |
} |
579 |
|
|
580 |
|
|
581 |
private String calculateExtendedDaoRoute(ExtendedBean eb, Address orgAddress, Address targetAddress) { |
private String calculateExtendedDaoRoute(ExtendedBean eb, Address orgAddress, Address targetAddress) { |
582 |
if (targetAddress.rute == null) { //hvis targetAdress.rute er null så er adressen ikke dækket alligevel |
if (targetAddress.ruteMandag == null) { //hvis targetAdress.rute er null så er adressen ikke dækket alligevel |
583 |
return null; |
return null; |
584 |
} |
} |
585 |
|
|
587 |
switch( eb.transport) { |
switch( eb.transport) { |
588 |
case "cykel": |
case "cykel": |
589 |
if (eb.afstand < 0.151) { |
if (eb.afstand < 0.151) { |
590 |
return "." + targetAddress.rute; |
return "." + targetAddress.ruteMandag; |
591 |
} else if (eb.afstand < 0.501) { |
} else if (eb.afstand < 0.501) { |
592 |
return ".." + targetAddress.rute; |
return ".." + targetAddress.ruteMandag; |
593 |
} else if (eb.afstand < 0.701) { |
} else if (eb.afstand < 0.701) { |
594 |
return "..." + targetAddress.rute; |
return "..." + targetAddress.ruteMandag; |
595 |
} else if (eb.afstand < 1.001) { |
} else if (eb.afstand < 1.001) { |
596 |
return "...." + targetAddress.rute; |
return "...." + targetAddress.ruteMandag; |
597 |
} |
} |
598 |
break; |
break; |
599 |
case "scooter": |
case "scooter": |
600 |
if (eb.afstand < 0.151) { |
if (eb.afstand < 0.151) { |
601 |
return "." + targetAddress.rute; |
return "." + targetAddress.ruteMandag; |
602 |
} else if (eb.afstand < 0.801) { |
} else if (eb.afstand < 0.801) { |
603 |
return ".." + targetAddress.rute; |
return ".." + targetAddress.ruteMandag; |
604 |
} else if (eb.afstand < 1.201) { |
} else if (eb.afstand < 1.201) { |
605 |
return "..." + targetAddress.rute; |
return "..." + targetAddress.ruteMandag; |
606 |
} else if (eb.afstand < 2.101) { |
} else if (eb.afstand < 2.101) { |
607 |
return "...." + targetAddress.rute; |
return "...." + targetAddress.ruteMandag; |
608 |
} |
} |
609 |
break; |
break; |
610 |
case "bil": |
case "bil": |
611 |
if (eb.afstand < 0.151) { |
if (eb.afstand < 0.151) { |
612 |
return "." + targetAddress.rute; |
return "." + targetAddress.ruteMandag; |
613 |
} else if (eb.afstand < 1.001) { |
} else if (eb.afstand < 1.001) { |
614 |
return ".." + targetAddress.rute; |
return ".." + targetAddress.ruteMandag; |
615 |
} else if (eb.afstand < 1.601) { |
} else if (eb.afstand < 1.601) { |
616 |
return "..." + targetAddress.rute; |
return "..." + targetAddress.ruteMandag; |
617 |
} else if (eb.afstand < 2.601) { |
} else if (eb.afstand < 2.601) { |
618 |
return "...." + targetAddress.rute; |
return "...." + targetAddress.ruteMandag; |
619 |
} |
} |
620 |
break; |
break; |
621 |
default: |
default: |
654 |
} else { |
} else { |
655 |
inject = ".."; |
inject = ".."; |
656 |
} |
} |
657 |
return AddressUtils.injectIntoBk(targetAddress.koreliste, inject); |
return AddressUtils.injectIntoBk(targetAddress.korelisteMandag, inject); |
658 |
} |
} |
659 |
|
|
660 |
|
|