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

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2207 by torben, Thu Sep 11 16:42:08 2014 UTC revision 2229 by torben, Mon Sep 22 11:55:47 2014 UTC
# Line 1  Line 1 
1  package dk.daoas.fulddaekning;  package dk.daoas.fulddaekning;
2    
3  import java.sql.SQLException;  import java.sql.SQLException;
 import java.util.ArrayList;  
4  import java.util.Queue;  import java.util.Queue;
5  import java.util.logging.Level;  import java.util.logging.Level;
6  import java.util.logging.Logger;  import java.util.logging.Logger;
7    
8  public class LookupWorker implements Runnable {  public class LookupWorker implements Runnable {
9            class LookupResult {
10                    double bedsteAfstand = 9999999.999;
11                    Adresse bedsteAdr = null;
12            }
13            
14          Logger logger = Logger.getLogger( LookupWorker.class.getName() );          Logger logger = Logger.getLogger( LookupWorker.class.getName() );
15                    
16          int workerId;          int workerId;
# Line 32  public class LookupWorker implements Run Line 36  public class LookupWorker implements Run
36                  while ( (qAdresse = queue.poll()) != null) {                  while ( (qAdresse = queue.poll()) != null) {
37                          //logger.info("Worker " + workerId + ", analyzing " + qAdresse);                                                  //logger.info("Worker " + workerId + ", analyzing " + qAdresse);                        
38                                    
39                          double bedsteAfstand = 9999999.999;  
40                          Adresse bedsteAdr = null;                          LookupResult result = findBedsteAdresse(qAdresse, daekkede);
41                          for (int i=0; i<daekkede.length; i++) {                          
42                                  Adresse daekket = daekkede[i];                          if (result.bedsteAdr == null && consts.doExtendedLookup() == true) {//hvis vi ikke fandt en adresse og vi må kigge på udvidet område
43                                  double afstand = Adresse.beregnAfstand(qAdresse, daekket);                                  logger.info("Extended lookup for " + qAdresse);
44                                                                    
45                                  if (afstand < bedsteAfstand) {                                  result = findBedsteAdresse(qAdresse, Lookup.alleDaekkedeAdresser);
                                         bedsteAfstand = afstand;  
                                         bedsteAdr = daekket;  
                                 }  
46                          }                          }
47                                                    
48                                                    
49                          if ( bedsteAdr != null) {                          if ( result.bedsteAdr != null) {
50                                                                    
51                                  if (bedsteAfstand <= consts.getMaxDistance() ) { //Gem kun hvis distancen er under max_distance for distributøren                                  if (result.bedsteAfstand <= consts.getMaxDistance() ) { //Gem kun hvis distancen er under max_distance for distributøren
52                                          if (Lookup.verbose == true) {                                          if (Lookup.verbose == true) {
53                                                  logger.info("(" +workerId + ") Bedste: " + qAdresse + "==>" + bedsteAdr + " ::: " + bedsteAfstand );                                                  logger.info("(" +workerId + ") Bedste: " + qAdresse + "==>" + result.bedsteAdr + " ::: " + result.bedsteAfstand );
54                                          }                                          }
55                                                                                    
56                                          try {                                          try {
57                                                  db.gemResultat(qAdresse, bedsteAdr, bedsteAfstand);                                                  db.gemResultat(qAdresse, result.bedsteAdr, result.bedsteAfstand);
58                                          } catch (SQLException e) {                                          } catch (SQLException e) {
59                                                  logger.log(Level.WARNING, "Error saving result", e);                                                  logger.log(Level.WARNING, "Error saving result", e);
60                                                  logger.warning("Shutting down");                                                  logger.warning("Shutting down");
# Line 61  public class LookupWorker implements Run Line 62  public class LookupWorker implements Run
62                                                  System.exit(0); //hvis at indsættelsen fejler skal vi afbryde med det samme                                                  System.exit(0); //hvis at indsættelsen fejler skal vi afbryde med det samme
63                                          }                                          }
64                                  } else {                                  } else {
65                                          logger.info("(" +workerId + ") For stor afstand " + qAdresse + " -> " + bedsteAfstand);                                          logger.info("(" +workerId + ") For stor afstand " + qAdresse + " -> " + result.bedsteAfstand);
66                                  }                                  }
67                          } else {                          } else {
68                                  logger.warning("(" +workerId + ") Ingen match til " + qAdresse);                                  logger.warning("(" +workerId + ") Ingen match til " + qAdresse);
# Line 72  public class LookupWorker implements Run Line 73  public class LookupWorker implements Run
73                                    
74                  lookup.shutdownWorker( workerId);                  lookup.shutdownWorker( workerId);
75          }          }
76            
77            LookupResult findBedsteAdresse(Adresse qAdresse, Adresse daekkede[]) {
78                    LookupResult result = new LookupResult();
79                    
80                    for (int i=0; i<daekkede.length; i++) {
81                            Adresse daekket = daekkede[i];
82                            double afstand = Adresse.beregnAfstand(qAdresse, daekket);
83                            
84                            if (afstand < result.bedsteAfstand) {
85                                    result.bedsteAfstand = afstand;
86                                    result.bedsteAdr = daekket;
87                            }
88                    }
89                    return result;
90                            
91            }
92    
93  }  }

Legend:
Removed from v.2207  
changed lines
  Added in v.2229

  ViewVC Help
Powered by ViewVC 1.1.20