--- dao/FuldDaekningWorker/src/dk/daoas/fulddaekning/Lookup.java 2014/04/30 14:18:43 2149 +++ dao/FuldDaekningWorker/src/dk/daoas/fulddaekning/Lookup.java 2014/05/07 07:39:26 2150 @@ -2,8 +2,15 @@ import java.io.File; import java.io.FileReader; +import java.io.IOException; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; +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.Level; import java.util.logging.Logger; @@ -17,30 +24,48 @@ static Properties conf; static Logger logger = Logger.getLogger( Lookup.class.toString() ); - + int postnr; Database db; - WorkSet workset; + + ArrayList daekkedeAdresser; + Queue queue; Map workers = new ConcurrentHashMap(); - public Lookup(WorkSet workset, Database db) { + public Lookup(int postnr, Database db) { + this.postnr = postnr; this.db = db; - this.workset = workset; } public void doLookup() throws BoundingBoxException { - logger.info("Starting for postnr=" + workset.postnr); + logger.info("Starting for postnr=" + postnr); + + int queueSize=-1; long start1 = System.currentTimeMillis(); long start2 = 0; try { - - logger.info("Starter beregning for " + workset.postnr); + BoundingBox bbox = db.getBoundingbox(postnr); + bbox.validateBbox(); + + logger.info("Bbox=" + bbox); + bbox.adjustToMargin(); + logger.info("Bbox Adjusted=" + bbox); + + logger.info("Henter daekkede adresser i " + postnr); + daekkedeAdresser = db.hentDaekkedeAdresser(bbox); + + logger.info("Henter _ikke_ daekkede adresser i " + postnr); + queue = db.hentIkkedaekkedeAdresser(postnr); + queueSize = queue.size(); + + + logger.info("Starter beregning for " + postnr); start2 = System.currentTimeMillis(); for (int i =0; i getDaekkedeAdresser() { + return daekkedeAdresser; } + public Queue getQueue() { + return queue; + } + + + + + ///////////////////////////// // Static functions @@ -113,49 +148,25 @@ verbose = Boolean.parseBoolean( conf.getProperty("VERBOSE") ); logger.info("Starting with VERBOSE:" + verbose); - Database db = new Database(conf); - db.resetResultTable(); + Connection conn = getConnection(); + Database db = new Database(conn); - InputWorker inputWorker = new InputWorker(db); - Thread inputThread = new Thread(inputWorker); - inputThread.start(); - long start = System.currentTimeMillis(); - boolean doContinue = true; - - while (inputWorker.queue.isEmpty() == true) { - Thread.sleep(3); //Vent indtil at første arbejds sæt er på plads - } + long start = System.currentTimeMillis(); - while ( doContinue == true ) { - WorkSet set = inputWorker.queue.poll(); - - if (set != null) { - Lookup lookup = new Lookup(set, db); - lookup.doLookup(); - } else { - System.out.println("Buffer underrun"); - Thread.sleep(100); - } - - if ( inputWorker.isDone == true && inputWorker.queue.isEmpty() == true) - doContinue = false; - } - - /*logger.info("Finder postnumre"); + logger.info("Finder postnumre"); List postnumre = db.hentPostnumre(); for(Integer postnr : postnumre) { Lookup lookup = new Lookup(postnr, db); lookup.doLookup(); - }*/ + } long now = System.currentTimeMillis(); - logger.info("Largest workset: " + inputWorker.largestWorkSetPostnr + "=" + inputWorker.largestWorkSetCount); logger.info("Fuld load done : " + (now-start) ); @@ -163,6 +174,27 @@ //lookup.doLookup(); } + public static Connection getConnection() throws SQLException, IOException { + + String db_host = conf.getProperty("DB_HOST"); + String db_user = conf.getProperty("DB_USER"); + String db_pass = conf.getProperty("DB_PASS"); + + + + Connection conn = null; + Properties connectionProps = new Properties(); + connectionProps.put("user", db_user); + connectionProps.put("password", db_pass); + + conn = DriverManager.getConnection( + "jdbc:mysql://" + + db_host + + ":3306/", + connectionProps); + logger.info("Connected to database"); + return conn; + } }