--- dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/afstandandenrute/AfstandAndenRuteTask.java 2016/02/12 22:30:30 2937 +++ dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/afstandandenrute/AfstandAndenRuteTask.java 2016/03/08 09:41:53 2972 @@ -23,17 +23,21 @@ public class AfstandAndenRuteTask extends Task { + private TaskLogger logger = TaskLogger.getInstance(); final static boolean VERBOSE = false;// + + public final static String INCREMENTAL = "INCREMENTAL"; + public final static String FULL = "FULL"; static boolean test_mode; String distributor; - int antalIkkeDaekkede = -1; + int antalIkkeDaekkede = 0; AtomicInteger antalBeregnet = new AtomicInteger(); @@ -49,10 +53,10 @@ type = type.toUpperCase(); switch(type) { - case "FULL": + case FULL: isIncremental = false; break; - case "INCREMENTAL": + case INCREMENTAL: isIncremental = true; break; default: @@ -87,124 +91,135 @@ - try (Connection conn = DBConnection.getConnection() ) { - Database db = new Database(conn, isIncremental); - - db.prepareIncrementalSearch(); - - Queue
ikkeDaekkede = db.hentAlleIkkedaekkedeAdresser(consts.getMinPostnr(), consts.getMaxPostnr() ); - antalIkkeDaekkede = ikkeDaekkede.size(); - logger.info("Antal ikke-daekkede: " + antalIkkeDaekkede ); - - - boolean testRun= false; - - AtomicInteger antalFundne = new AtomicInteger(0); - - long beregnStart =0; - long start = System.currentTimeMillis(); - int antalDaekkedeAdresser = -1; - - if (testRun == false) { - - logger.info("Finder postnumre"); - Set postnumre = db.hentPostnumreCache(); - - // Først validerer vi BBox på alle postnummre, for at undgå fuldt stop midt i beregningen - for(short postnr : postnumre) { // - logger.info("Validerer BBox for " + postnr); - BoundingBox bbox = db.getBoundingbox(postnr); - bbox.validateBbox(); - } - - - logger.info("Henter alle daekkede adresser"); - antalDaekkedeAdresser = db.hentAlleDaekkedeAdresser(distributor); - logger.info( "AlleDaekkedeAdresser.length=" + antalDaekkedeAdresser ); - - Map> addrHoList = db.getDaekkedeAdresserHO(); - - Map> hoTrees = new HashMap>(); + - for ( Map.Entry> entry : addrHoList.entrySet() ) { - short ho = entry.getKey(); - List
geopoints = entry.getValue(); - logger.info("Opbygger KDTree for " + ho + " - antal=" + geopoints.size() ); - int bucketSize = 96*12; + AtomicInteger antalFundne = new AtomicInteger(0); - KdTree
addressTree = new KdTree
( 3, bucketSize ); - for(Address a: geopoints) { - addressTree.addPoint(a.xyz, a); - } + long start = System.currentTimeMillis(); + AtomicInteger antalDaekkedeAdresser = new AtomicInteger(-1); - hoTrees.put(ho, addressTree); - } - db.resetResultTable(); + // MAIN RUN START - beregnStart = System.currentTimeMillis(); - logger.info("Starter beregning"); + logger.info("======================================================================"); + + mainRun(consts, isIncremental, "ruteMa", max_workers, antalFundne, antalDaekkedeAdresser); + + logger.info("======================================================================"); + + mainRun(consts, true, "ruteLo", max_workers, antalFundne, antalDaekkedeAdresser); + + logger.info("======================================================================"); + + mainRun(consts, true, "ruteSo", max_workers, antalFundne, antalDaekkedeAdresser); + + logger.info("======================================================================"); - //pre-check er ok - reset tmp tabel og start søgningen + // END OF MAIN run + + threadPool.shutdown(); //Calc is done now + - CyclicBarrier barrier = new CyclicBarrier(max_workers + 1); - for (int i=0; i postnumre = db.hentPostnumreCache(); + + // Først validerer vi BBox på alle postnummre, for at undgå fuldt stop midt i beregningen + for(short postnr : postnumre) { // + logger.info("Validerer BBox for " + postnr); + BoundingBox bbox = db.getBoundingbox(postnr); + bbox.validateBbox(); + } + + + logger.info("Henter alle daekkede adresser"); + int tmpAntalDaekkede = db.hentAlleDaekkedeAdresser(distributor); + antalDaekkedeAdresser.set(tmpAntalDaekkede); + logger.info( "AlleDaekkedeAdresser.length=" + antalDaekkedeAdresser ); + + Map> addrHoList = db.getDaekkedeAdresserHO(); + + Map> hoTrees = new HashMap>(); + + for ( Map.Entry> entry : addrHoList.entrySet() ) { + short ho = entry.getKey(); + List
geopoints = entry.getValue(); + + logger.info("Opbygger KDTree for " + ho + " - antal=" + geopoints.size() ); + + int bucketSize = 96*12; + + KdTree
addressTree = new KdTree
( 3, bucketSize ); + for(Address a: geopoints) { + addressTree.addPoint(a.xyz, a); } + + hoTrees.put(ho, addressTree); + } + + db.resetResultTable(); + - - - } /*else { - /// Test + logger.info("Starter beregning"); + + //pre-check er ok - reset tmp tabel og start søgningen + + CyclicBarrier barrier = new CyclicBarrier(max_workers + 1); + + for (int i=0; i