/[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 2241 - (hide annotations) (download)
Wed Dec 10 09:50:33 2014 UTC (9 years, 5 months ago) by torben
File size: 3111 byte(s)
Move main() to it's own class
1 torben 2145 package dk.daoas.fulddaekning;
2    
3     import java.util.Map;
4 torben 2150 import java.util.Queue;
5 torben 2145 import java.util.concurrent.ConcurrentHashMap;
6     import java.util.logging.Level;
7     import java.util.logging.Logger;
8    
9     import dk.daoas.fulddaekning.BoundingBox.BoundingBoxException;
10    
11     public class Lookup {
12 torben 2158
13 torben 2145
14 torben 2195
15 torben 2241 final static Logger logger = Logger.getLogger( Lookup.class.toString() );
16 torben 2145
17 torben 2238 String postnr;
18 torben 2145 Database db;
19 torben 2150
20 torben 2207 Adresse daekkedeAdresser[];
21 torben 2150 Queue<Adresse> queue;
22 torben 2145
23     Map<Integer, LookupWorker> workers = new ConcurrentHashMap<Integer, LookupWorker>();
24    
25    
26 torben 2227
27 torben 2154
28    
29 torben 2238 public Lookup(String postnr, Database db) {
30 torben 2150 this.postnr = postnr;
31 torben 2145 this.db = db;
32     }
33    
34 torben 2241
35 torben 2145
36     public void doLookup() throws BoundingBoxException {
37 torben 2150 logger.info("Starting for postnr=" + postnr);
38 torben 2145
39 torben 2154 Statistik stat = new Statistik();
40    
41 torben 2145 long start1 = System.currentTimeMillis();
42     long start2 = 0;
43    
44     try {
45 torben 2232
46     logger.info("Henter _ikke_ daekkede adresser i " + postnr);
47     queue = db.hentIkkedaekkedeAdresser(postnr);
48     if (queue.size() == 0) {
49     logger.info("Fandt ikke nogen _ikke_ daekkede adresser i " + postnr);
50 torben 2233 return;
51 torben 2232 }
52    
53 torben 2150 BoundingBox bbox = db.getBoundingbox(postnr);
54     bbox.validateBbox();
55    
56     logger.info("Bbox=" + bbox);
57     bbox.adjustToMargin();
58     logger.info("Bbox Adjusted=" + bbox);
59    
60     logger.info("Henter daekkede adresser i " + postnr);
61     daekkedeAdresser = db.hentDaekkedeAdresser(bbox);
62    
63 torben 2154 stat.postnr = postnr;
64 torben 2207 stat.antalDaekkede = daekkedeAdresser.length;
65 torben 2154 stat.antalIkkeDaekkede = queue.size();
66 torben 2227 stat.totalDataset = stat.antalDaekkede * stat.antalIkkeDaekkede;
67    
68 torben 2150
69     logger.info("Starter beregning for " + postnr);
70 torben 2145 start2 = System.currentTimeMillis();
71    
72 torben 2241 for (int i =0; i < LookupMain.max_workers; i++) {
73 torben 2145 LookupWorker worker = new LookupWorker(i, this);
74     Thread t = new Thread(worker);
75     t.start();
76    
77     workers.put(i, worker);
78     }
79    
80     while (workers.size() > 0) {
81     Thread.sleep(10);//wait for worker threads
82     }
83    
84 torben 2219 db.saveBatch();//Save any unsaved rows
85 torben 2145
86 torben 2219
87 torben 2145 } catch(Exception e) {
88     logger.log(Level.WARNING, "Exception during lookup", e);
89    
90     if (e instanceof BoundingBoxException) {
91     logger.severe( e.getMessage() );
92     System.exit(1);
93     }
94    
95     }
96     long now = System.currentTimeMillis();
97    
98 torben 2227 stat.forbrugtTid = (now-start1);
99 torben 2241 LookupMain.saveStatistics(stat);
100 torben 2154
101     logger.info( stat.toString() );
102 torben 2153 logger.info("Done! elapsed=" + (now-start1) + "/" + (now-start2) + " postnr=" + postnr);
103 torben 2145 }
104    
105     public void shutdownWorker(int workerid) {
106 torben 2234 //logger.info("Shutting down worker: " + workerid);
107 torben 2205 LookupWorker key = workers.remove(workerid);
108    
109     if (key == null) {
110 torben 2234 System.out.println("Error removing worker from set " + workerid);
111 torben 2205 System.exit(0);
112     }
113 torben 2145 }
114    
115     // Getters and setters
116    
117     ///////////////////////////
118     public Database getDb() {
119     return db;
120     }
121 torben 2150
122    
123    
124 torben 2207 public Adresse[] getDaekkedeAdresser() {
125 torben 2150 return daekkedeAdresser;
126 torben 2145 }
127    
128 torben 2150 public Queue<Adresse> getQueue() {
129     return queue;
130     }
131    
132    
133 torben 2145 }

  ViewVC Help
Powered by ViewVC 1.1.20