--- dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/dawa/DawaTask.java 2016/04/19 12:56:57 3005
+++ dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/dawa/DawaTask.java 2016/04/19 15:49:14 3006
@@ -2,6 +2,7 @@
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
@@ -13,6 +14,7 @@
import dk.daoas.adressevedligehold.tasks.Task;
import dk.daoas.adressevedligehold.tasks.TaskLogger;
import dk.daoas.adressevedligehold.util.DeduplicateHelper;
+import dk.daoas.adressevedligehold.util.TimingHelper;
/*
* Alle regioner: http://dawa.aws.dk/regioner/
@@ -43,21 +45,18 @@
@Override
protected void taskRun() throws Exception {
-
- int kommunekode = 779;
- String kommunenavn = "Skive";
-
- // stage 1 - hent alle data
+ TimingHelper timer = new TimingHelper();
+
DawaWebservice dawa = new DawaWebservice();
- List
dawaListe = dawa.lookup(kommunekode);
+ TreeMap search = new TreeMap<>();
+ // stage 1 - hent alle data
List adresser = db.getAllAdresses();
-
// stage 2 opbyg søge struktur
logger.info("Building search structure");
- TreeMap search = new TreeMap<>();
+
for (Address addr : adresser) {
String dav = getDAVid(addr);
@@ -71,77 +70,114 @@
}
logger.info("Build search structure done");
- // stage 3 søg
- Set ukendteDAV = new TreeSet<>();
- Set dobbeltGadeidDAV = new TreeSet<>();
- List nyeAdresser = new ArrayList<>();
+ Map kommuner = dawa.kommunerIRegion(regionCode);
- for (Address dawaAddr : dawaListe) {
- String dav = getDAVid(dawaAddr);
- DawaGade gade = search.get(dav);
- if (gade == null) {
- ukendteDAV.add(dav + " " + dawaAddr.vejnavn);
- continue;
+ String subject = "DAWA indlæsning done";
+
+ StringBuilder headerSB = new StringBuilder();
+ headerSB.append("Indlæsnings rapport for " + regionName + " / " + regionCode + "
");
+
+ int totalAntalNye = 0;
+ int totalAntalFejl = 0;
+ int totalAntalUkendt = 0;
+ int totalAntalDobbelt = 0;
+
+
+ StringBuilder sb = new StringBuilder();
+
+ for (Map.Entry entry : kommuner.entrySet()) {
+ int kommunekode = entry.getValue();
+ String kommunenavn = entry.getKey();
+
+ logger.info("Behandler: " + kommunekode + " " + kommunenavn);
+
+
+ List dawaListe = dawa.adresserIKommune(kommunekode);
+ // stage 3 søg
+ Set ukendteDAV = new TreeSet<>();
+ Set dobbeltGadeidDAV = new TreeSet<>();
+ List nyeAdresser = new ArrayList<>();
+
+ for (Address dawaAddr : dawaListe) {
+ String dav = getDAVid(dawaAddr);
+ DawaGade gade = search.get(dav);
+ if (gade == null) {
+ ukendteDAV.add(dav + " " + dawaAddr.vejnavn);
+ continue;
+ }
+
+ if (gade.gadeids.size() != 1) {
+ dobbeltGadeidDAV.add(dav + " " + dawaAddr.vejnavn);
+ }
+
+ boolean fundet = false;
+ for (Address target : gade.adresser) {
+ if ( target.husnr == dawaAddr.husnr && target.husnrbogstav.equals(dawaAddr.husnrbogstav) ) {
+ fundet = true;
+ break;
+ }
+ }
+
+ if (fundet == false) {
+ dawaAddr.gadeid = gade.gadeids.iterator().next();
+ dawaAddr.state = AddressState.CREATED;
+ dawaAddr.kommentar = kommentarTemplate;
+ nyeAdresser.add(dawaAddr);
+ }
}
+ logger.info("Address Search done - starting save to DB");
- if (gade.gadeids.size() != 1) {
- dobbeltGadeidDAV.add(dav + " " + dawaAddr.vejnavn);
+ db.saveNewAddresses(nyeAdresser);
+
+ logger.info("Save to db done - sending report mail");
+
+ List saveOK = new ArrayList<>();
+ List saveFail = new ArrayList<>();
+ for (Address a : nyeAdresser) {
+ if (a.state == AddressState.CREATE_FAIL) {
+ saveFail.add(a);
+ } else {
+ saveOK.add(a);
+ }
}
- boolean fundet = false;
- for (Address target : gade.adresser) {
- if ( target.husnr == dawaAddr.husnr && target.husnrbogstav.equals(dawaAddr.husnrbogstav) ) {
- fundet = true;
- break;
- }
+ totalAntalNye += saveOK.size();
+ totalAntalFejl += saveFail.size();
+ totalAntalUkendt += ukendteDAV.size();
+ totalAntalDobbelt += dobbeltGadeidDAV.size();
+
+
+ sb.append("Kommune: " + kommunenavn + " / " + kommunekode + "
\n");
+ sb.append("Antal Inserts: " + saveOK.size() + "
\n");
+ sb.append("Antal insert fails: " + saveFail.size() + "
\n");
+ sb.append("Antal ukendte dav: " + ukendteDAV.size() + "
\n");
+ sb.append("Antal dobbelt gadeid dav: " + dobbeltGadeidDAV.size() + "
\n");
+
+ sb.append("Adresser ok:
\n");
+ addressTable(sb, saveOK);
+
+ sb.append("SQL INSERT fejl:
\n");
+ addressTable(sb, saveFail);
+
+ sb.append("Ukendte DAV:
\n");
+ for (String dav : ukendteDAV) {
+ sb.append(dav + "
\n");
}
- if (fundet == false) {
- dawaAddr.gadeid = gade.gadeids.iterator().next();
- dawaAddr.state = AddressState.CREATED;
- dawaAddr.kommentar = kommentarTemplate;
- nyeAdresser.add(dawaAddr);
- }
- }
- logger.info("Address Search done - starting save to DB");
-
- db.saveNewAddresses(nyeAdresser);
-
- logger.info("Save to db done - sending report mail");
-
- List saveOK = new ArrayList<>();
- List saveFail = new ArrayList<>();
- for (Address a : nyeAdresser) {
- if (a.state == AddressState.CREATE_FAIL) {
- saveFail.add(a);
- } else {
- saveOK.add(a);
+ sb.append("Dobbelt gadeid DAV:
\n");
+ for (String dav : dobbeltGadeidDAV) {
+ sb.append(dav + "
\n");
}
+
}
- String subject = "DAWA indlæsning done";
-
- StringBuilder sb = new StringBuilder();
- sb.append("Indlæsnings rapport for " + regionName + " / " + regionCode + "
");
-
- sb.append("Kommune: " + kommunenavn + " / " + kommunekode + "
\n");
- sb.append("Adresser ok:
\n");
- addressTable(sb, saveOK);
-
- sb.append("SQL INSERT fejl:
\n");
- addressTable(sb, saveFail);
-
- sb.append("Ukendte DAV:
\n");
- for (String dav : ukendteDAV) {
- sb.append(dav + "
\n");
- }
-
- sb.append("Dobbelt gadeid DAV:
\n");
- for (String dav : dobbeltGadeidDAV) {
- sb.append(dav + "
\n");
- }
+ headerSB.append("Antal Inserts: " + totalAntalNye + "
\n");
+ headerSB.append("Antal insert fails: " + totalAntalFejl + "
\n");
+ headerSB.append("Antal ukendte dav: " + totalAntalUkendt + "
\n");
+ headerSB.append("Antal dobbelt gadeid dav: " + totalAntalDobbelt + "
\n");
+ headerSB.append("Elapsed: " + timer.getElapsed() + " ms.
\n");
- MailSender.sendMail(subject, sb.toString() );
+ MailSender.sendMail(subject, headerSB.toString() + sb.toString() );
}