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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2222 - (hide annotations) (download)
Sat Sep 20 11:02:26 2014 UTC (9 years, 8 months ago) by torben
File size: 2027 byte(s)
Use a conversion helper instead of hardcoded latitude/longitude spans
1 torben 2145 package dk.daoas.fulddaekning;
2    
3     import java.sql.SQLException;
4     import java.util.Queue;
5     import java.util.logging.Level;
6     import java.util.logging.Logger;
7    
8     public class LookupWorker implements Runnable {
9     Logger logger = Logger.getLogger( LookupWorker.class.getName() );
10    
11     int workerId;
12     Lookup lookup;
13    
14     public LookupWorker(int workerId, Lookup lookup) {
15     this.workerId = workerId;
16     this.lookup = lookup;
17     }
18    
19     @Override
20     public void run() {
21 torben 2200 Constants consts = Constants.getInstance();
22    
23 torben 2207 Adresse daekkede[] = lookup.getDaekkedeAdresser();
24 torben 2150 Queue<Adresse> queue = lookup.getQueue();
25 torben 2145 Database db = lookup.getDb();
26    
27     Adresse qAdresse;
28    
29    
30    
31     while ( (qAdresse = queue.poll()) != null) {
32     //logger.info("Worker " + workerId + ", analyzing " + qAdresse);
33    
34     double bedsteAfstand = 9999999.999;
35     Adresse bedsteAdr = null;
36 torben 2207 for (int i=0; i<daekkede.length; i++) {
37     Adresse daekket = daekkede[i];
38 torben 2145 double afstand = Adresse.beregnAfstand(qAdresse, daekket);
39    
40     if (afstand < bedsteAfstand) {
41     bedsteAfstand = afstand;
42     bedsteAdr = daekket;
43     }
44     }
45    
46    
47     if ( bedsteAdr != null) {
48    
49 torben 2200 if (bedsteAfstand <= consts.getMaxDistance() ) { //Gem kun hvis distancen er under max_distance for distributøren
50 torben 2145 if (Lookup.verbose == true) {
51     logger.info("(" +workerId + ") Bedste: " + qAdresse + "==>" + bedsteAdr + " ::: " + bedsteAfstand );
52     }
53    
54     try {
55     db.gemResultat(qAdresse, bedsteAdr, bedsteAfstand);
56     } catch (SQLException e) {
57     logger.log(Level.WARNING, "Error saving result", e);
58     logger.warning("Shutting down");
59    
60     System.exit(0); //hvis at indsættelsen fejler skal vi afbryde med det samme
61     }
62     } else {
63     logger.info("(" +workerId + ") For stor afstand " + qAdresse + " -> " + bedsteAfstand);
64     }
65     } else {
66     logger.warning("(" +workerId + ") Ingen match til " + qAdresse);
67     }
68    
69     }
70    
71    
72     lookup.shutdownWorker( workerId);
73     }
74    
75     }

  ViewVC Help
Powered by ViewVC 1.1.20