/[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 2228 - (hide annotations) (download)
Mon Sep 22 10:17:38 2014 UTC (9 years, 8 months ago) by torben
File size: 2532 byte(s)
First attempt at BK to-level lookup
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 torben 2228 if (bedsteAdr == null && consts.doExtendedLookup() == true) {//hvis vi ikke fandt en adresse og vi må kigge på udvidet område
47     logger.info("Extended lookup for " + qAdresse);
48     for (int i=0; i<Lookup.alleDaekkedeAdresser.length; i++) {
49     Adresse daekket = Lookup.alleDaekkedeAdresser[i];
50     double afstand = Adresse.beregnAfstand(qAdresse, daekket);
51    
52     if (afstand < bedsteAfstand) {
53     bedsteAfstand = afstand;
54     bedsteAdr = daekket;
55     }
56     }
57     }
58 torben 2145
59 torben 2228
60 torben 2145 if ( bedsteAdr != null) {
61    
62 torben 2200 if (bedsteAfstand <= consts.getMaxDistance() ) { //Gem kun hvis distancen er under max_distance for distributøren
63 torben 2145 if (Lookup.verbose == true) {
64     logger.info("(" +workerId + ") Bedste: " + qAdresse + "==>" + bedsteAdr + " ::: " + bedsteAfstand );
65     }
66    
67     try {
68     db.gemResultat(qAdresse, bedsteAdr, bedsteAfstand);
69     } catch (SQLException e) {
70     logger.log(Level.WARNING, "Error saving result", e);
71     logger.warning("Shutting down");
72    
73     System.exit(0); //hvis at indsættelsen fejler skal vi afbryde med det samme
74     }
75     } else {
76     logger.info("(" +workerId + ") For stor afstand " + qAdresse + " -> " + bedsteAfstand);
77     }
78     } else {
79     logger.warning("(" +workerId + ") Ingen match til " + qAdresse);
80     }
81    
82     }
83    
84    
85     lookup.shutdownWorker( workerId);
86     }
87    
88     }

  ViewVC Help
Powered by ViewVC 1.1.20