--- dao/FuldDaekningWorker/src/dk/daoas/fulddaekning/Lookup.java 2014/09/11 08:14:40 2200 +++ dao/FuldDaekningWorker/src/dk/daoas/fulddaekning/Lookup.java 2014/09/12 14:05:10 2217 @@ -2,14 +2,14 @@ import java.io.File; import java.io.FileReader; -import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.Properties; import java.util.Queue; import java.util.concurrent.ConcurrentHashMap; +import java.util.logging.FileHandler; import java.util.logging.Level; import java.util.logging.Logger; +import java.util.logging.SimpleFormatter; import dk.daoas.fulddaekning.BoundingBox.BoundingBoxException; @@ -29,7 +29,7 @@ int postnr; Database db; - ArrayList daekkedeAdresser; + Adresse daekkedeAdresser[]; Queue queue; Map workers = new ConcurrentHashMap(); @@ -88,7 +88,7 @@ queue = db.hentIkkedaekkedeAdresser(postnr); stat.postnr = postnr; - stat.antalDaekkede = daekkedeAdresser.size(); + stat.antalDaekkede = daekkedeAdresser.length; stat.antalIkkeDaekkede = queue.size(); saveStatistics(stat); @@ -128,7 +128,12 @@ public void shutdownWorker(int workerid) { logger.info("Shutting down worker: " + workerid); - workers.remove(workerid); + LookupWorker key = workers.remove(workerid); + + if (key == null) { + System.out.println("Error removing worker from set"); + System.exit(0); + } } // Getters and setters @@ -140,7 +145,7 @@ - public ArrayList getDaekkedeAdresser() { + public Adresse[] getDaekkedeAdresser() { return daekkedeAdresser; } @@ -161,6 +166,16 @@ public static void main(String[] args) throws Exception { + //Setup j.u.l Logger + Logger root = Logger.getLogger(""); + FileHandler fhandler = new FileHandler("fulddaekning.log"); // Ingen max størrelse, ingen rotation og ingen append + fhandler.setFormatter( new SimpleFormatter() ); + root.addHandler( fhandler ); + + + + + File confFile = new File( CONFIG_FILENAME ); if (! confFile.exists() ) { logger.warning("Config file not found: " + CONFIG_FILENAME); @@ -186,7 +201,7 @@ Database db = new Database(conf); - db.resetResultTable(); + @@ -197,6 +212,17 @@ logger.info("Finder postnumre"); List postnumre = db.hentPostnumre(); + // Først validerer vi BBox på alle postnummre, for at undgå fuldt stop midt i beregningen + for(Integer postnr : postnumre) { // + logger.info("Validerer BBox for " + postnr); + BoundingBox bbox = db.getBoundingbox(postnr); + bbox.validateBbox(); + } + + + //pre-check er ok - reset tmp tabel og start søgningen + db.resetResultTable(); + for(Integer postnr : postnumre) { Lookup lookup = new Lookup(postnr, db); lookup.doLookup(); @@ -209,15 +235,30 @@ } long now = System.currentTimeMillis(); + long elapsed = now - start ; logger.info("Flest Ikke-dækkede, " + flestIkkeDaekkede); logger.info("Flest Dækkede, " + flestDaekkede); - logger.info("Fuld load done : " + (now-start) ); + logger.info("Fuld load done : " + formatMilliSeconds(elapsed) ); + /* + /// Test + db.resetResultTable(); + Lookup lookup = new Lookup(2750, db); + lookup.doLookup(); + long now = System.currentTimeMillis(); + long elapsed = now - start ; + logger.info("Fuld load done : " + formatMilliSeconds(elapsed) );*/ + } + + static String formatMilliSeconds(long milliseconds) { + int mseconds = (int) milliseconds % 1000; + int seconds = (int) (milliseconds / 1000) % 60 ; + int minutes = (int) ((milliseconds / (1000*60)) % 60); + int hours = (int) ((milliseconds / (1000*60*60)) % 24); - //Lookup lookup = new Lookup(7400, db); - //lookup.doLookup(); + return String.format("%02d:%02d:%02d.%03d", hours, minutes, seconds, mseconds); } }