--- dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/AddressManager.java 2016/01/28 22:20:23 2877
+++ dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/fileupload/AddressManager.java 2016/02/16 11:28:27 2952
@@ -1,4 +1,4 @@
-package dk.daoas.adressevedligehold;
+package dk.daoas.adressevedligehold.fileupload;
import java.sql.SQLException;
import java.util.ArrayList;
@@ -11,23 +11,24 @@
import org.apache.commons.lang3.StringUtils;
-import dk.daoas.adressevedligehold.AddressSourceEntry.EntryType;
import dk.daoas.adressevedligehold.beans.Address;
import dk.daoas.adressevedligehold.beans.Address.AddressState;
-import dk.daoas.adressevedligehold.db.DatabaseLayerImplementation;
+import dk.daoas.adressevedligehold.db.DatabaseCoverageUpdate;
+import dk.daoas.adressevedligehold.fileupload.AddressSourceEntry.EntryType;
+import dk.daoas.adressevedligehold.tasks.TaskLogger;
import dk.daoas.adressevedligehold.util.DeduplicateHelper;
import dk.daoas.adressevedligehold.util.MiscUtils;
import dk.daoas.adressevedligehold.util.TimingHelper;
/*
- * TODO: håndtering af entry dupletter ! (+ rapportering af dem)
-
-
-
+ *
*/
public class AddressManager {
+ private TaskLogger logger = TaskLogger.getInstance();
+
+ private int duplicateCount;
List
addressList;
@@ -40,7 +41,7 @@
Map dbkBaneMap = new TreeMap();
public AddressManager() throws SQLException {
- DatabaseLayerImplementation db = new DatabaseLayerImplementation();
+ DatabaseCoverageUpdate db = new DatabaseCoverageUpdate();
searchStructure = new TreeMap> >();
@@ -84,11 +85,12 @@
list.trimToSize();
}
- System.out.println("AddressManager ready, elapsed " + timer.getElapsed() + "ms");
+ logger.info("AddressManager ready, elapsed " + timer.getElapsed() + "ms");
}
-
+
+ @SuppressWarnings("PMD.CollapsibleIfStatements")
public void closeUnvisitedAddresses(String distributor, EntryUgedage ugedage) {
for (Address addr : addressList) {
if (addr.distributor == null)
@@ -181,8 +183,8 @@
continue;
}
- System.out.println(addr.state + ": " + addr.toStringExtended() );
- System.out.println(addr.getRuteString() );
+ logger.info(addr.state + ": " + addr.toStringExtended() );
+ logger.info(addr.getRuteString() );
if (count++ > 50)
return;
@@ -190,7 +192,7 @@
}
public void writeBackChanges() {
- System.out.println("Writing back changes");
+ logger.info("Writing back changes");
TimingHelper timer = new TimingHelper();
List updates = new ArrayList(1024*1024);
@@ -205,14 +207,14 @@
}
}
- DatabaseLayerImplementation db = new DatabaseLayerImplementation();
+ DatabaseCoverageUpdate db = new DatabaseCoverageUpdate();
db.updateAddresses(updates);
db.saveNewAddresses(inserts);
- System.out.println("Writeback done: elapsed " + timer.getElapsed() + "ms.");
+ logger.info("Writeback done: elapsed " + timer.getElapsed() + "ms.");
}
@@ -253,6 +255,7 @@
}
}
+ @SuppressWarnings("PMD.CollapsibleIfStatements")
private void visitRange(AddressSourceEntry entry) {
TreeMap> gade = searchStructure.get( entry.gadeid );
@@ -261,7 +264,7 @@
unknownStreets.put(entry.gadeid, entry.vejnavn);
}
- System.out.println("[Range] Ukendt gadeID " + entry);
+ logger.info("[Range] Ukendt gadeID " + entry);
return;
}
@@ -301,7 +304,7 @@
private void updateAddress(Address addr, AddressSourceEntry entry) {
if ( addr.distributor != null && addr.distributor.equals(entry.distributor) == false) {
rejectedEntries.add(entry);
- System.out.println("Afviser " + entry);
+ logger.info("Afviser " + entry);
return;
}
@@ -323,7 +326,9 @@
}
}
} else {
- System.out.println( "Double visit monday " + addr);
+ duplicateCount++;
+ logger.info( "Double visit monday " + addr);
+ return; // if the entry is duplicate on one day that it covers - then it will be as well on all the othters
}
}
@@ -345,7 +350,9 @@
}
}
} else {
- System.out.println( "Double visit tuesday " + addr);
+ duplicateCount++;
+ logger.info( "Double visit tuesday " + addr);
+ return; // if the entry is duplicate on one day that it covers - then it will be as well on all the othters
}
}
@@ -365,7 +372,9 @@
}
}
} else {
- System.out.println( "Double visit wednesday " + addr);
+ duplicateCount++;
+ logger.info( "Double visit wednesday " + addr);
+ return; // if the entry is duplicate on one day that it covers - then it will be as well on all the othters
}
}
@@ -387,7 +396,9 @@
}
}
} else {
- System.out.println( "Double visit thursday " + addr);
+ duplicateCount++;
+ logger.info( "Double visit thursday " + addr);
+ return; // if the entry is duplicate on one day that it covers - then it will be as well on all the othters
}
}
@@ -408,7 +419,9 @@
}
}
} else {
- System.out.println( "Double visit friday " + addr);
+ duplicateCount++;
+ logger.info( "Double visit friday " + addr);
+ return; // if the entry is duplicate on one day that it covers - then it will be as well on all the othters
}
}
@@ -430,7 +443,9 @@
}
}
} else {
- System.out.println( "Double visit saturday " + addr);
+ duplicateCount++;
+ logger.info( "Double visit saturday " + addr);
+ return; // if the entry is duplicate on one day that it covers - then it will be as well on all the othters
}
}
@@ -451,7 +466,9 @@
}
}
} else {
- System.out.println( "Double visit sunday " + addr);
+ duplicateCount++;
+ logger.info( "Double visit sunday " + addr);
+ return; // if the entry is duplicate on one day that it covers - then it will be as well on all the othters
}
}
@@ -479,9 +496,25 @@
private void createFromEntry(AddressSourceEntry entry) {
- if (entry.husnr == 999) {
+ if (entry.husnr >= 1000) { //husnumre i DK må kun være på 3 cifre
+ return;
+ }
+
+ if (entry.husnr == 999 || entry.husnr == 998) { //frasorter de to højest gyldige husnr - det er typisk special adresser
+ return;
+ }
+
+ if (entry.litra.length() > 1) { //litra må kun være på 1 tegn
return;
}
+ if (entry.litra.length() == 1) {
+ char litra = entry.litra.charAt(0);
+ if ( Character.isLetter(litra) == false ) {
+ return;
+ }
+
+ }
+
if (entry.kommunekode == 0 || entry.vejkode == 0) {
return;
}
@@ -489,6 +522,14 @@
return;
}
+ if (entry.vejkode > 9999) {
+ return;
+ }
+
+ if (entry.gadeid == 0) {
+ return;
+ }
+
String gadeidStr = Integer.toString(entry.gadeid);
if (gadeidStr.length() != 9) {
return;
@@ -499,70 +540,40 @@
- System.out.println("Opretter adresse ud fra " + entry);
-
- Address a = new Address();
- a.state = AddressState.CREATED;
-
- a.distributor = entry.distributor;
- a.gadeid = entry.gadeid;
- a.kommunekode = entry.kommunekode;
- a.vejkode = entry.vejkode;
- a.vejnavn = entry.vejnavn;
- a.husnr = entry.husnr;
- a.husnrbogstav = entry.litra;
- a.postnr = entry.postnr;
- //a.visited = true;
+ logger.info("Opretter adresse ud fra " + entry);
- if (entry.ugedage.mandag) {
- a.ruteMandag = entry.rute;
- a.korelisteMandag = entry.koreliste;
- }
- if (entry.ugedage.tirsdag) {
- a.ruteTirsdag = entry.rute;
- a.korelisteTirsdag = entry.koreliste;
- }
- if (entry.ugedage.onsdag) {
- a.ruteOnsdag = entry.rute;
- a.korelisteOnsdag = entry.koreliste;
- }
- if (entry.ugedage.torsdag) {
- a.ruteTorsdag = entry.rute;
- a.korelisteTorsdag = entry.koreliste;
- }
- if (entry.ugedage.fredag) {
- a.ruteFredag = entry.rute;
- a.korelisteFredag = entry.koreliste;
- }
- if (entry.ugedage.lordag) {
- a.ruteLordag = entry.rute;
- a.korelisteLordag = entry.koreliste;
- }
- if (entry.ugedage.sondag) {
- a.ruteSondag = entry.rute;
- a.korelisteLordag = entry.koreliste;
- }
+ Address addr = new Address();
+ addr.state = AddressState.CREATED;
- updateDbkBane(a);
+ addr.distributor = entry.distributor;
+ addr.gadeid = entry.gadeid;
+ addr.kommunekode = entry.kommunekode;
+ addr.vejkode = entry.vejkode;
+ addr.vejnavn = entry.vejnavn;
+ addr.husnr = entry.husnr;
+ addr.husnrbogstav = entry.litra;
+ addr.postnr = entry.postnr;
- // Nu er det nye adresse object oprettet - nu skal det gemmes i søge strukturen og totallisten
+ updateAddress(addr, entry);
- TreeMap> gade = searchStructure.get( a.gadeid );
+
+ // Nu er det nye adresse object oprettet - nu skal det gemmes i søge strukturen og totallisten
+ TreeMap> gade = searchStructure.get( addr.gadeid );
if (gade == null) {
gade = new TreeMap>();
- searchStructure.put(a.gadeid, gade);
+ searchStructure.put(addr.gadeid, gade);
}
- ArrayList litraList = gade.get(a.husnr);
+ ArrayList litraList = gade.get(addr.husnr);
if (litraList == null) {
litraList = new ArrayList();
- gade.put(a.husnr, litraList);
+ gade.put(addr.husnr, litraList);
}
- litraList.add(a);
- addressList.add(a);
+ litraList.add(addr);
+ addressList.add(addr);
}
@@ -613,11 +624,11 @@
bane = 204;
break;
default:
- throw new RuntimeException("Ukendt distributor" + a.distributor); //Silence findBugs
+ throw new RuntimeException("Ukendt distributor: " + a.distributor); //Silence findBugs
}
if (bane == null) {
- throw new RuntimeException("Ukendt bane for postnr" + a.postnr);
+ throw new RuntimeException("Ukendt bane for postnr: " + a.postnr);
}
if (a.dbkBane != bane) {
@@ -636,7 +647,9 @@
return Collections.unmodifiableMap( unknownStreets );
}
-
+ public int getDuplicateCount() {
+ return duplicateCount;
+ }
public int getRejectedCount() {
return rejectedEntries.size();