/[projects]/dao/FuldDaekningWorker/src/dk/daoas/fulddaekning/Lookup.java
ViewVC logotype

Diff of /dao/FuldDaekningWorker/src/dk/daoas/fulddaekning/Lookup.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2146 by torben, Wed Apr 30 08:15:48 2014 UTC revision 2147 by torben, Wed Apr 30 12:53:01 2014 UTC
# Line 2  package dk.daoas.fulddaekning; Line 2  package dk.daoas.fulddaekning;
2    
3  import java.io.File;  import java.io.File;
4  import java.io.FileReader;  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;  
5  import java.util.Map;  import java.util.Map;
6  import java.util.Properties;  import java.util.Properties;
 import java.util.Queue;  
7  import java.util.concurrent.ConcurrentHashMap;  import java.util.concurrent.ConcurrentHashMap;
8  import java.util.logging.Level;  import java.util.logging.Level;
9  import java.util.logging.Logger;  import java.util.logging.Logger;
# Line 24  public class Lookup { Line 17  public class Lookup {
17          static Properties conf;          static Properties conf;
18          static Logger logger = Logger.getLogger( Lookup.class.toString() );          static Logger logger = Logger.getLogger( Lookup.class.toString() );
19                    
20          int postnr;  
21          Database db;          Database db;
22                            WorkSet workset;
         ArrayList<Adresse> daekkedeAdresser;  
         Queue<Adresse> queue;  
23                    
24          Map<Integer, LookupWorker> workers = new ConcurrentHashMap<Integer, LookupWorker>();          Map<Integer, LookupWorker> workers = new ConcurrentHashMap<Integer, LookupWorker>();
25    
26                    
27                    
28          public Lookup(int postnr, Database db) {          public Lookup(WorkSet workset, Database db) {
                 this.postnr = postnr;  
29                  this.db = db;                  this.db = db;
30                    this.workset = workset;
31          }          }
32                    
33                    
34                    
35          public void doLookup() throws BoundingBoxException {          public void doLookup() throws BoundingBoxException {
36                  logger.info("Starting for postnr=" + postnr);                  logger.info("Starting for postnr=" + workset.postnr);          
                   
                 int queueSize=-1;  
37                                    
38                  long start1 = System.currentTimeMillis();                                long start1 = System.currentTimeMillis();              
39                  long start2 = 0;                  long start2 = 0;
40                                    
41                  try {                  try {
42                          BoundingBox bbox = db.getBoundingbox(postnr);  
43                          bbox.validateBbox();                          logger.info("Starter beregning for " + workset.postnr);
                           
                         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);  
44                          start2 = System.currentTimeMillis();                          start2 = System.currentTimeMillis();
45                                                                                                                                                                                                                                    
46                          for (int i =0; i<max_workers; i++) {                          for (int i =0; i<max_workers; i++) {
# Line 92  public class Lookup { Line 67  public class Lookup {
67                  }                  }
68                  long now = System.currentTimeMillis();                  long now = System.currentTimeMillis();
69                                    
70                  logger.info("Antal daekkede:" + daekkedeAdresser.size() );  
71                  logger.info("Antal ikke-daekkede:" + queueSize );                  logger.info("Antal daekkede:" + workset.daekkedeAdresser.size() );
72                                    logger.info("Antal ikke-daekkede:" + workset.queueSize );
73                  logger.info("Done! elapsed=" + (now-start1) + "/" +  (now-start2) );                  logger.info("Done! elapsed=" + (now-start1) + "/" +  (now-start2) );
74          }          }
75                    
# Line 109  public class Lookup { Line 84  public class Lookup {
84          public Database getDb() {          public Database getDb() {
85                  return db;                  return db;
86          }          }
87            
88            public WorkSet getWorkSet() {
89                    return workset;
         public ArrayList<Adresse> getDaekkedeAdresser() {  
                 return daekkedeAdresser;  
         }  
   
         public Queue<Adresse> getQueue() {  
                 return queue;  
90          }          }
91    
   
           
           
           
92                    
93          /////////////////////////////          /////////////////////////////
94          // Static functions          // Static functions
# Line 148  public class Lookup { Line 113  public class Lookup {
113                  verbose = Boolean.parseBoolean( conf.getProperty("VERBOSE") );                  verbose = Boolean.parseBoolean( conf.getProperty("VERBOSE") );
114                  logger.info("Starting with VERBOSE:" + verbose);                  logger.info("Starting with VERBOSE:" + verbose);
115                                    
116                  Connection conn = getConnection();                  Database db = new Database(conf);
117                  Database db = new Database(conn);                  db.resetResultTable();
118    
119                                    
120                                    InputWorker inputWorker = new InputWorker(db);
121                    Thread inputThread = new Thread(inputWorker);
122                    inputThread.start();
123                                    
124                                    
125                  long start = System.currentTimeMillis();                  long start = System.currentTimeMillis();
126                    boolean doContinue = true;
127                    
128                    while (inputWorker.queue.isEmpty() == true) {
129                            Thread.sleep(3); //Vent indtil at første arbejds sæt er på plads
130                    }
131                    
132                    
133                    while ( doContinue == true ) {
134                            WorkSet set = inputWorker.queue.poll();
135                            
136                            if (set != null) {
137                                    Lookup lookup = new Lookup(set, db);
138                                    lookup.doLookup();                              
139                            } else {
140                                    System.out.println("Buffer underrun");
141                                    Thread.sleep(10);
142                            }
143                            
144                            if ( inputWorker.isDone == true && inputWorker.queue.isEmpty() == true)
145                                    doContinue = false;
146                    }
147                                    
148                  logger.info("Finder postnumre");                  /*logger.info("Finder postnumre");
149                  List<Integer> postnumre = db.hentPostnumre();                  List<Integer> postnumre = db.hentPostnumre();
150                                    
151                  for(Integer postnr : postnumre) {                  for(Integer postnr : postnumre) {
152                          Lookup lookup = new Lookup(postnr, db);                          Lookup lookup = new Lookup(postnr, db);
153                          lookup.doLookup();                                                lookup.doLookup();                      
154                  }                  }*/
155                                    
156                  long now = System.currentTimeMillis();                  long now = System.currentTimeMillis();
157                                    
# Line 174  public class Lookup { Line 162  public class Lookup {
162                  //lookup.doLookup();                              //lookup.doLookup();            
163          }          }
164                    
         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");  
165    
                   
                   
   
             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;  
         }  
166                    
167  }  }

Legend:
Removed from v.2146  
changed lines
  Added in v.2147

  ViewVC Help
Powered by ViewVC 1.1.20