--- dao/DaoAdresseService/src/dk/daoas/daoadresseservice/AdressSearch.java 2015/02/13 15:45:24 2283
+++ dao/DaoAdresseService/src/dk/daoas/daoadresseservice/AdressSearch.java 2015/02/14 08:43:45 2289
@@ -21,14 +21,13 @@
List
alleAdresser;
- /* Mapper mellem db Row ID og adresse noden */
- Map idAddressMap;
-
Map hundredePct;
public SearchResult search(String postnrStr, String adresse) {
+//long start1 = System.currentTimeMillis();
+
int postnr=0;
try {
@@ -36,6 +35,7 @@
} catch (Exception E) {
return new SearchResult(Status.ERROR_UNKNOWN_POSTAL);
}
+//long start2 = System.currentTimeMillis();
Map postnrVeje = searchPostnrVejnavnGadeid.get(postnr);
@@ -43,23 +43,29 @@
return new SearchResult(Status.ERROR_UNKNOWN_POSTAL);
}
+//long start3 = System.currentTimeMillis();
+
SplitResult split = AddressUtils.splitAdresse(adresse);
- String vasketVejnavn = AddressUtils.vaskVejnavn( split.vej );
+ String vasketVejnavn = AddressUtils.vaskVejnavn( split.vej );
if (split.husnr.length() == 0) {
return new SearchResult(Status.ERROR_MISSING_HOUSENUMBER);
}
+//long start4 = System.currentTimeMillis();
Long gadeident = postnrVeje.get(vasketVejnavn);
if (gadeident == null) {
return new SearchResult(Status.ERROR_UNKNOWN_STREETNAME);
- }
+ }
+//long start5 = System.currentTimeMillis();
Map gade = searchGadeidentAdresser.get(gadeident); //Denne søgning må ikke fejle
+//long start6 = System.currentTimeMillis();
String husnrSearch = "" + split.husnr + split.litra;
Address addr = gade.get(husnrSearch);
+//long start7 = System.currentTimeMillis();
if (addr == null) {
return new SearchResult(Status.ERROR_UNKNOWN_ADDRESSPOINT);
}
@@ -71,6 +77,16 @@
if (addr.distributor.equals("LUKKET")) {
return new SearchResult(Status.STATUS_NOT_COVERED); //Skal vi have en special status til Lukkede adresser ?
}
+
+/*
+System.out.println("Search2: " + (start2-start1) );
+System.out.println("Search3: " + (start3-start1) );
+System.out.println("Search4: " + (start4-start1) );
+System.out.println("Search5: " + (start5-start1) );
+System.out.println("Search6: " + (start6-start1) );
+System.out.println("Search7: " + (start7-start1) );
+*/
+
return new SearchResult(addr);
@@ -80,12 +96,15 @@
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);
@@ -108,7 +127,7 @@
searchGadeidentAdresser.put(a.gadeid, gade);
}
String husnrSearch = "" + a.husnr + a.husnrbogstav;
- gade.put(husnrSearch, a);
+ gade.put(husnrSearch, a);
}
@@ -164,15 +183,17 @@
orgAddress.distributor = targetAddress.distributor;
}
-
-
}
+
+ // nu skal vi ikke bruge idAddressMap længere
+ idAddressMap = null;
+
//////////////////////////////////////////////////////////////////////////////////////
System.out.println("Build -- stage 3 - 100pct");
hundredePct = DatabaseLayer.get100PctList();
for (Address addr : alleAdresser) {
- if (addr.daekningsType != DaekningsType.DAEKNING_IKKEDAEKKET) {
+ if (addr.daekningsType != DaekningsType.DAEKNING_IKKEDAEKKET) {
continue;
}
@@ -193,6 +214,35 @@
addr.distributor = bean.distributor;
}
+ ////////////////////////////////////////////////////////////////////////////////////
+ System.out.println("Build -- Gathering statistics");
+
+ int direkteCount = 0;
+ int extendedCount = 0;
+ int hundredePctCount = 0;
+ int ikkeDaekketCount = 0;
+
+ for (Address addr : alleAdresser) {
+ switch (addr.daekningsType) {
+ case DAEKNING_DIREKTE:
+ direkteCount++;
+ break;
+ case DAEKNING_UDVIDET:
+ extendedCount++;
+ break;
+ case DAEKNING_100PCT:
+ hundredePctCount++;
+ break;
+ default:
+ ikkeDaekketCount++;
+ }
+ }
+
+ System.out.println("Build: direkteCount: " + direkteCount);
+ System.out.println("Build: extendedCount: " + extendedCount);
+ System.out.println("Build: hundredePctCount: " + hundredePctCount);
+ System.out.println("Build: ikkeDaekketCount: " + ikkeDaekketCount);
+
System.out.println("Build Completed");
}