--- dao/FuldDaekningWorker/src/dk/daoas/fulddaekning/Lookup.java 2014/04/30 09:02:39 2146 +++ dao/FuldDaekningWorker/src/dk/daoas/fulddaekning/Lookup.java 2014/04/30 12:53:01 2147 @@ -2,15 +2,8 @@ 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; @@ -24,48 +17,30 @@ static Properties conf; static Logger logger = Logger.getLogger( Lookup.class.toString() ); - int postnr; + Database db; - - ArrayList daekkedeAdresser; - Queue queue; + WorkSet workset; Map workers = new ConcurrentHashMap(); - public Lookup(int postnr, Database db) { - this.postnr = postnr; + public Lookup(WorkSet workset, Database db) { this.db = db; + this.workset = workset; } public void doLookup() throws BoundingBoxException { - logger.info("Starting for postnr=" + postnr); - - int queueSize=-1; + logger.info("Starting for postnr=" + workset.postnr); long start1 = System.currentTimeMillis(); long start2 = 0; try { - 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); + + logger.info("Starter beregning for " + workset.postnr); start2 = System.currentTimeMillis(); for (int i =0; i getDaekkedeAdresser() { - return daekkedeAdresser; - } - - public Queue getQueue() { - return queue; + + public WorkSet getWorkSet() { + return workset; } - - - - ///////////////////////////// // Static functions @@ -148,22 +113,45 @@ verbose = Boolean.parseBoolean( conf.getProperty("VERBOSE") ); logger.info("Starting with VERBOSE:" + verbose); - Connection conn = getConnection(); - Database db = new Database(conn); + Database db = new Database(conf); + db.resetResultTable(); - + 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 + } + + + 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(10); + } + + 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(); @@ -174,27 +162,6 @@ //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; - } }