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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2222 - (show 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 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 Constants consts = Constants.getInstance();
22
23 Adresse daekkede[] = lookup.getDaekkedeAdresser();
24 Queue<Adresse> queue = lookup.getQueue();
25 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 for (int i=0; i<daekkede.length; i++) {
37 Adresse daekket = daekkede[i];
38 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 if (bedsteAfstand <= consts.getMaxDistance() ) { //Gem kun hvis distancen er under max_distance for distributøren
50 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