--- dao/DaoAdresseService/src/main/java/dk/daoas/daoadresseservice/AddressSearch.java 2016/01/15 08:11:58 2817 +++ dao/DaoAdresseService/src/main/java/dk/daoas/daoadresseservice/AddressSearch.java 2016/01/19 17:27:57 2832 @@ -36,8 +36,8 @@ private Map> searchPostnrVejnavnGadeid; private Map>> searchGadeidentAdresser; // Gadeident -> husnrumre -> litra - - private List
alleAdresser; + private List
ikkeDaekkedeAdresser = new ArrayList
(60000); + private List
hundredePctAdresser = new ArrayList
(120000); private Map helperCache; @@ -316,7 +316,7 @@ long start1 = System.currentTimeMillis(); System.out.println("Build -- stage 1"); - alleAdresser = db.getAllAdresses(); + List
alleAdresser = db.getAllAdresses(); /* Mapper mellem db Row ID og adresse noden - skal bruges i stage3*/ @@ -415,6 +415,8 @@ } System.out.println("Anvendte " + vaskCount + " aliaser fra databasen"); + aliasList.clear();//cleanup inden stage3 + //////////////////////////////////////////////////////////////////////////////////////// long start3 = System.currentTimeMillis(); @@ -457,21 +459,21 @@ boolean covered = false; if (targetAddress.distributor.equals("DAO")) { - orgAddress.rute = calculateExtendedDaoRoute(eb,orgAddress,targetAddress); - orgAddress.rute = ruteHelper.getInstance(orgAddress.rute); + orgAddress.ruteMandag = calculateExtendedDaoRoute(eb,orgAddress,targetAddress); + orgAddress.ruteMandag = ruteHelper.getInstance(orgAddress.ruteMandag); - if (orgAddress.rute != null) { - orgAddress.koreliste = targetAddress.koreliste; + if (orgAddress.ruteMandag != null) { + orgAddress.korelisteMandag = targetAddress.korelisteMandag; covered = true; } } if (targetAddress.distributor.equals("BK")) { - orgAddress.koreliste = calculateExtendedBkKoreliste(eb,orgAddress,targetAddress); - orgAddress.koreliste = korelisteHelper.getInstance(orgAddress.koreliste); + orgAddress.korelisteMandag = calculateExtendedBkKoreliste(eb,orgAddress,targetAddress); + orgAddress.korelisteMandag = korelisteHelper.getInstance(orgAddress.korelisteMandag); - if (orgAddress.koreliste != null) { - orgAddress.rute = targetAddress.rute; + if (orgAddress.korelisteMandag != null) { + orgAddress.ruteMandag = targetAddress.ruteMandag; covered = true; } } @@ -490,8 +492,10 @@ } } - // nu skal vi ikke bruge idAddressMap længere + // cleanup inden stage 4 idAddressMap = null; + ruteHelper = null; + korelisteHelper = null; ////////////////////////////////////////////////////////////////////////////////////// long start4 = System.currentTimeMillis(); @@ -515,8 +519,8 @@ } addr.daekningsType = DaekningsType.DAEKNING_100PCT; - addr.rute = bean.rute; - addr.koreliste = bean.koreliste; + addr.ruteMandag = bean.rute; + addr.korelisteMandag = bean.koreliste; addr.dbkBane = bean.dbkBane; addr.distributor = bean.distributor; } @@ -535,14 +539,19 @@ stats.extendedCount++; break; case DAEKNING_100PCT: + hundredePctAdresser.add(addr); stats.hundredePctCount++; break; default: + ikkeDaekkedeAdresser.add(addr); stats.ikkeDaekketCount++; } } stats.totalCount = alleAdresser.size(); + Collections.sort( ikkeDaekkedeAdresser ); //Bruger Comparable interfacet + Collections.sort( hundredePctAdresser ); + stats.elapsed = stop-start1; stats.buildTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format( new Date() ); @@ -569,13 +578,12 @@ public void clear() { searchPostnrVejnavnGadeid.clear(); searchGadeidentAdresser.clear(); - alleAdresser.clear(); helperCache.clear(); } private String calculateExtendedDaoRoute(ExtendedBean eb, Address orgAddress, Address targetAddress) { - 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 return null; } @@ -583,35 +591,35 @@ switch( eb.transport) { case "cykel": if (eb.afstand < 0.151) { - return "." + targetAddress.rute; + return "." + targetAddress.ruteMandag; } else if (eb.afstand < 0.501) { - return ".." + targetAddress.rute; + return ".." + targetAddress.ruteMandag; } else if (eb.afstand < 0.701) { - return "..." + targetAddress.rute; + return "..." + targetAddress.ruteMandag; } else if (eb.afstand < 1.001) { - return "...." + targetAddress.rute; + return "...." + targetAddress.ruteMandag; } break; case "scooter": if (eb.afstand < 0.151) { - return "." + targetAddress.rute; + return "." + targetAddress.ruteMandag; } else if (eb.afstand < 0.801) { - return ".." + targetAddress.rute; + return ".." + targetAddress.ruteMandag; } else if (eb.afstand < 1.201) { - return "..." + targetAddress.rute; + return "..." + targetAddress.ruteMandag; } else if (eb.afstand < 2.101) { - return "...." + targetAddress.rute; + return "...." + targetAddress.ruteMandag; } break; case "bil": if (eb.afstand < 0.151) { - return "." + targetAddress.rute; + return "." + targetAddress.ruteMandag; } else if (eb.afstand < 1.001) { - return ".." + targetAddress.rute; + return ".." + targetAddress.ruteMandag; } else if (eb.afstand < 1.601) { - return "..." + targetAddress.rute; + return "..." + targetAddress.ruteMandag; } else if (eb.afstand < 2.601) { - return "...." + targetAddress.rute; + return "...." + targetAddress.ruteMandag; } break; default: @@ -621,25 +629,11 @@ } public List
getNonCoveredAddresses() { - List
result = new ArrayList
(60000); - for (Address a : alleAdresser) { - if ( a.daekningsType == DaekningsType.DAEKNING_IKKEDAEKKET) { - result.add(a); - } - } - Collections.sort(result ); - return result; + return ikkeDaekkedeAdresser; } public List
get100PctAddresses() { - List
result = new ArrayList
(120000); - for (Address a : alleAdresser) { - if ( a.daekningsType == DaekningsType.DAEKNING_100PCT) { - result.add(a); - } - } - Collections.sort(result ); - return result; + return hundredePctAdresser; } /////////////////////////////////////////////////////////// @@ -650,7 +644,7 @@ } else { inject = ".."; } - return AddressUtils.injectIntoBk(targetAddress.koreliste, inject); + return AddressUtils.injectIntoBk(targetAddress.korelisteMandag, inject); }