--- dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/AddressManager.java 2016/01/24 21:48:55 2838
+++ dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/AddressManager.java 2016/01/26 08:21:22 2845
@@ -5,6 +5,7 @@
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.Map.Entry;
import java.util.TreeMap;
import org.apache.commons.lang3.StringUtils;
@@ -16,9 +17,28 @@
import dk.daoas.adressevedligehold.util.DeduplicateHelper;
import dk.daoas.adressevedligehold.util.TimingHelper;
+/*
+ * TODO: håndtering af entry dupletter ! (+ rapportering af dem)
+ * TODO: ajourføring af DBKbane
+DAO:
+UPDATE fulddaekning.adressetabel
+SET dbkbane = case
+ when substr(korelisteMa,1,2) IN ('07','10','11','12','14','15','16','18','19','20') then 205 #DAO-BRA
+ when substr(korelisteMa,1,2) BETWEEN 24 and 30 then 201 #DAO-Ovrige
+ else 202 #dao syd (52-99=
+END
+WHERE distributor='DAO'
+AND ruteMa is not null;
+
+FD: Altid 200
+NS: Altid 204
+BK: 195,196,197,198
+
+
+ */
+
public class AddressManager {
-
List
addressList;
@@ -153,11 +173,11 @@
if (addr.state == AddressState.NOT_CHANGED) {
continue;
}
- if (addr.stateMan == AddressState.NOT_CHANGED || addr.stateMan == AddressState.CREATED) {
+ /*if (addr.stateMan == AddressState.NOT_CHANGED || addr.stateMan == AddressState.CREATED) {
continue;
- }
+ }*/
- if (addr.stateMan != AddressState.MODIFIED ) {
+ if (addr.stateMan != AddressState.OPENED ) {
continue;
}
@@ -186,7 +206,10 @@
}
DatabaseLayerImplementation db = new DatabaseLayerImplementation();
+
db.updateAddresses(updates);
+
+
System.out.println("Writeback done: elapsed " + timer.getElapsed() + "ms.");
}
@@ -225,7 +248,41 @@
private void visitRange(AddressSourceEntry entry) {
- throw new UnsupportedOperationException("Not implemented yet");
+ TreeMap> gade = searchStructure.get( entry.gadeid );
+ if (gade == null) {
+ System.out.println("[Range] Ukendt gadeID " + entry);
+ return;
+ }
+
+ for (Entry> husnrEntry: gade.entrySet()) {
+
+ short husnummer = husnrEntry.getKey();
+
+ if ( (entry.husnr % 2) != (husnummer%2) ){ //lige/ulige skal passe sammen
+ continue;
+ }
+
+ if ( husnummer < entry.husnr || husnummer > entry.tilHusnr) {
+ continue;
+ }
+
+ ArrayList litraList = husnrEntry.getValue();
+
+ /* a=adressetabel u=input
+ * and (a.husnr>u.FraHusNr OR (a.husnr=u.FraHusNr AND a.HusnrBogstav >= u.FraBog))
+ * AND (a.husnr entry.husnr || (addr.husnr == entry.husnr && addr.husnrbogstav.compareTo(entry.litra) >= 0 )) {
+ //Using nested IF instead of &&
+ if (addr.husnr < entry.tilHusnr || (addr.husnr == entry.tilHusnr && addr.husnrbogstav.compareTo(entry.tilLitra) <= 0 )) {
+ updateAddress(addr, entry);
+ }
+ }
+ }
+ }
}
@@ -237,15 +294,7 @@
return;
}
- addr.visited = true;
- if (addr.state == AddressState.NOT_CHANGED) {
- if (addr.distributor == null) {
- addr.state = AddressState.OPENED;
- addr.distributor = entry.distributor;
- } else {
- addr.state = AddressState.MODIFIED;
- }
- }
+
if (entry.ugedage.mandag) {
addr.visitedMan = true;
@@ -365,7 +414,23 @@
}
}
}
-
+
+
+
+ addr.visited = true;
+ if (addr.state == AddressState.NOT_CHANGED) {
+ if (addr.distributor == null) {
+ addr.state = AddressState.OPENED;
+ addr.distributor = entry.distributor;
+ } else {
+ if (addr.stateMan != AddressState.NOT_CHANGED || addr.stateTir != AddressState.NOT_CHANGED
+ || addr.stateOns != AddressState.NOT_CHANGED || addr.stateTor != AddressState.NOT_CHANGED
+ || addr.stateFre != AddressState.NOT_CHANGED || addr.stateLor != AddressState.NOT_CHANGED || addr.stateSon != AddressState.NOT_CHANGED ){
+
+ addr.state = AddressState.MODIFIED;
+ }
+ }
+ }
}
@@ -442,4 +507,8 @@
return Collections.unmodifiableList(addressList);
}
+ public int getAfvistAntal() {
+ return afvisteEntries.size();
+ }
+
}