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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2152 - (hide annotations) (download)
Wed May 7 08:10:45 2014 UTC (10 years ago) by torben
File size: 3941 byte(s)
Move getConnection() to datbase class
1 torben 2145 package dk.daoas.fulddaekning;
2    
3     import java.io.File;
4     import java.io.FileReader;
5 torben 2150 import java.util.ArrayList;
6     import java.util.List;
7 torben 2145 import java.util.Map;
8     import java.util.Properties;
9 torben 2150 import java.util.Queue;
10 torben 2145 import java.util.concurrent.ConcurrentHashMap;
11     import java.util.logging.Level;
12     import java.util.logging.Logger;
13    
14     import dk.daoas.fulddaekning.BoundingBox.BoundingBoxException;
15    
16     public class Lookup {
17     static int max_workers;
18     static boolean verbose;
19    
20     static Properties conf;
21     static Logger logger = Logger.getLogger( Lookup.class.toString() );
22    
23 torben 2150 int postnr;
24 torben 2145 Database db;
25 torben 2150
26     ArrayList<Adresse> daekkedeAdresser;
27     Queue<Adresse> queue;
28 torben 2145
29     Map<Integer, LookupWorker> workers = new ConcurrentHashMap<Integer, LookupWorker>();
30    
31    
32    
33 torben 2150 public Lookup(int postnr, Database db) {
34     this.postnr = postnr;
35 torben 2145 this.db = db;
36     }
37    
38    
39    
40     public void doLookup() throws BoundingBoxException {
41 torben 2150 logger.info("Starting for postnr=" + postnr);
42 torben 2145
43 torben 2150 int queueSize=-1;
44    
45 torben 2145 long start1 = System.currentTimeMillis();
46     long start2 = 0;
47    
48     try {
49 torben 2150 BoundingBox bbox = db.getBoundingbox(postnr);
50     bbox.validateBbox();
51    
52     logger.info("Bbox=" + bbox);
53     bbox.adjustToMargin();
54     logger.info("Bbox Adjusted=" + bbox);
55    
56     logger.info("Henter daekkede adresser i " + postnr);
57     daekkedeAdresser = db.hentDaekkedeAdresser(bbox);
58    
59     logger.info("Henter _ikke_ daekkede adresser i " + postnr);
60     queue = db.hentIkkedaekkedeAdresser(postnr);
61     queueSize = queue.size();
62    
63    
64     logger.info("Starter beregning for " + postnr);
65 torben 2145 start2 = System.currentTimeMillis();
66    
67     for (int i =0; i<max_workers; i++) {
68     LookupWorker worker = new LookupWorker(i, this);
69     Thread t = new Thread(worker);
70     t.start();
71    
72     workers.put(i, worker);
73     }
74    
75     while (workers.size() > 0) {
76     Thread.sleep(10);//wait for worker threads
77     }
78    
79    
80     } catch(Exception e) {
81     logger.log(Level.WARNING, "Exception during lookup", e);
82    
83     if (e instanceof BoundingBoxException) {
84     logger.severe( e.getMessage() );
85     System.exit(1);
86     }
87    
88     }
89     long now = System.currentTimeMillis();
90    
91 torben 2150 logger.info("Antal daekkede:" + daekkedeAdresser.size() );
92     logger.info("Antal ikke-daekkede:" + queueSize );
93    
94 torben 2145 logger.info("Done! elapsed=" + (now-start1) + "/" + (now-start2) );
95     }
96    
97     public void shutdownWorker(int workerid) {
98     logger.info("Shutting down worker: " + workerid);
99     workers.remove(workerid);
100     }
101    
102     // Getters and setters
103    
104     ///////////////////////////
105     public Database getDb() {
106     return db;
107     }
108 torben 2150
109    
110    
111     public ArrayList<Adresse> getDaekkedeAdresser() {
112     return daekkedeAdresser;
113 torben 2145 }
114    
115 torben 2150 public Queue<Adresse> getQueue() {
116     return queue;
117     }
118    
119    
120 torben 2145
121 torben 2150
122    
123    
124 torben 2145 /////////////////////////////
125     // Static functions
126    
127    
128    
129    
130     public static void main(String[] args) throws Exception {
131    
132     File confFile = new File("fulddaekning.properties");
133     if (! confFile.exists() ) {
134     logger.warning("Config file not found");
135     System.exit(1);
136     }
137    
138     conf = new Properties();
139     conf.load( new FileReader(confFile) );
140    
141     max_workers = Integer.parseInt( conf.getProperty("MAX_WORKERS") );
142     logger.info("Starting with MAX_WORKERS:" + max_workers);
143    
144     verbose = Boolean.parseBoolean( conf.getProperty("VERBOSE") );
145     logger.info("Starting with VERBOSE:" + verbose);
146    
147 torben 2152 Database db = new Database(conf);
148 torben 2151
149     db.resetResultTable();
150 torben 2145
151    
152    
153    
154 torben 2150
155 torben 2145 long start = System.currentTimeMillis();
156    
157 torben 2150 logger.info("Finder postnumre");
158 torben 2145 List<Integer> postnumre = db.hentPostnumre();
159    
160     for(Integer postnr : postnumre) {
161     Lookup lookup = new Lookup(postnr, db);
162     lookup.doLookup();
163 torben 2150 }
164 torben 2145
165     long now = System.currentTimeMillis();
166    
167     logger.info("Fuld load done : " + (now-start) );
168    
169    
170     //Lookup lookup = new Lookup(7400, db);
171     //lookup.doLookup();
172     }
173 torben 2150
174 torben 2145 }

  ViewVC Help
Powered by ViewVC 1.1.20