--- 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(); + } + }