--- dao/DaoAdresseService/src/dk/daoas/daoadresseservice/AdressSearch.java 2015/02/13 14:40:22 2280 +++ dao/DaoAdresseService/src/dk/daoas/daoadresseservice/AdressSearch.java 2015/02/13 15:58:36 2285 @@ -7,7 +7,11 @@ import java.util.concurrent.ConcurrentHashMap; import dk.daoas.daoadresseservice.AddressUtils.SplitResult; -import dk.daoas.daoadresseservice.SearchResult.Status; +import dk.daoas.daoadresseservice.beans.Address; +import dk.daoas.daoadresseservice.beans.ExtendedBean; +import dk.daoas.daoadresseservice.beans.HundredePctBean; +import dk.daoas.daoadresseservice.beans.SearchResult; +import dk.daoas.daoadresseservice.beans.SearchResult.Status; import dk.daoas.daoadresseservice.db.DatabaseLayer; public class AdressSearch { @@ -17,9 +21,6 @@ List
alleAdresser; - /* Mapper mellem db Row ID og adresse noden */ - Map idAddressMap; - Map hundredePct; @@ -76,12 +77,14 @@ public void buildSearchStructures() throws SQLException{ searchPostnrVejnavnGadeid = new HashMap>(); searchGadeidentAdresser = new HashMap>(); - idAddressMap = new HashMap(); - + System.out.println("Build -- stage 1"); alleAdresser = DatabaseLayer.getAllAdresses(); + /* Mapper mellem db Row ID og adresse noden */ + Map idAddressMap = new HashMap( alleAdresser.size() ); + for (Address a : alleAdresser) { idAddressMap.put(a.id, a); @@ -92,9 +95,10 @@ searchPostnrVejnavnGadeid.put(a.postnr, postnrVeje); } - Long gadeident = postnrVeje.get(a.vasketVejnavn); + String vasketVejnavn = AddressUtils.vaskVejnavn(a.vejnavn); + Long gadeident = postnrVeje.get(vasketVejnavn); if (gadeident == null) { - postnrVeje.put(a.vasketVejnavn, a.gadeid); + postnrVeje.put(vasketVejnavn, a.gadeid); } Map gade = searchGadeidentAdresser.get(a.gadeid); @@ -132,11 +136,25 @@ orgAddress.extTarget = targetAddress; orgAddress.extAfstand = eb.afstand; - orgAddress.rute = calculateExtendedRoute(eb,orgAddress,targetAddress); + boolean covered = false; + if (targetAddress.distributor.equals("DAO")) { + orgAddress.rute = calculateExtendedDaoRoute(eb,orgAddress,targetAddress); + if (orgAddress.rute != null) { + orgAddress.koreliste = targetAddress.koreliste; + covered = true; + } + } - if (orgAddress.rute != null) { + if (targetAddress.distributor.equals("BK")) { + orgAddress.koreliste = calculateExtendedBkKoreliste(eb,orgAddress,targetAddress); + if (orgAddress.koreliste != null) { + orgAddress.rute = targetAddress.rute; + covered = true; + } + } + + if (covered) { //Kopier resten af felterne orgAddress.daekningsType = DaekningsType.DAEKNING_UDVIDET; - orgAddress.koreliste = targetAddress.koreliste; orgAddress.dbkBane = targetAddress.dbkBane; /* Sådan gør den gamle service */ @@ -174,63 +192,62 @@ addr.distributor = bean.distributor; } + System.out.println("Build Completed"); + } - private String calculateExtendedRoute(ExtendedBean eb, Address orgAddress, Address targetAddress) { - switch (targetAddress.distributor) { - case "DAO": - // /////////////////////////////////////////////////////////////////// - switch( eb.transport) { - case "cykel": - if (eb.afstand < 0.151) { - return "." + targetAddress.rute; - } else if (eb.afstand < 0.501) { - return ".." + targetAddress.rute; - } else if (eb.afstand < 0.701) { - return "..." + targetAddress.rute; - } else if (eb.afstand < 0.501) { - return "...." + targetAddress.rute; - } - break; - case "scooter": - if (eb.afstand < 0.151) { - return "." + targetAddress.rute; - } else if (eb.afstand < 0.801) { - return ".." + targetAddress.rute; - } else if (eb.afstand < 1.201) { - return "..." + targetAddress.rute; - } else if (eb.afstand < 2.101) { - return "...." + targetAddress.rute; - } - break; - case "bil": - if (eb.afstand < 0.151) { - return "." + targetAddress.rute; - } else if (eb.afstand < 1.001) { - return ".." + targetAddress.rute; - } else if (eb.afstand < 1.601) { - return "..." + targetAddress.rute; - } else if (eb.afstand < 2.601) { - return "...." + targetAddress.rute; - } - break; + private String calculateExtendedDaoRoute(ExtendedBean eb, Address orgAddress, Address targetAddress) { + + // /////////////////////////////////////////////////////////////////// + switch( eb.transport) { + case "cykel": + if (eb.afstand < 0.151) { + return "." + targetAddress.rute; + } else if (eb.afstand < 0.501) { + return ".." + targetAddress.rute; + } else if (eb.afstand < 0.701) { + return "..." + targetAddress.rute; + } else if (eb.afstand < 0.501) { + return "...." + targetAddress.rute; + } + break; + case "scooter": + if (eb.afstand < 0.151) { + return "." + targetAddress.rute; + } else if (eb.afstand < 0.801) { + return ".." + targetAddress.rute; + } else if (eb.afstand < 1.201) { + return "..." + targetAddress.rute; + } else if (eb.afstand < 2.101) { + return "...." + targetAddress.rute; + } + break; + case "bil": + if (eb.afstand < 0.151) { + return "." + targetAddress.rute; + } else if (eb.afstand < 1.001) { + return ".." + targetAddress.rute; + } else if (eb.afstand < 1.601) { + return "..." + targetAddress.rute; + } else if (eb.afstand < 2.601) { + return "...." + targetAddress.rute; } break; - - /////////////////////////////////////////////////////////// - - case "BK": - String inject; - if (eb.afstand <= 0.500) { - inject = "."; - } else { - inject = ".."; - } - return AddressUtils.injectIntoBk(targetAddress.rute, inject); - } + } return null; } + /////////////////////////////////////////////////////////// + private String calculateExtendedBkKoreliste(ExtendedBean eb, Address orgAddress, Address targetAddress) { + String inject; + if (eb.afstand <= 0.500) { + inject = "."; + } else { + inject = ".."; + } + return AddressUtils.injectIntoBk(targetAddress.koreliste, inject); + } + }