/[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 2228 by torben, Mon Sep 22 10:17:38 2014 UTC revision 2229 by torben, Mon Sep 22 11:55:47 2014 UTC
# Line 6  import java.util.logging.Level; Line 6  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 31  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);
                         for (int i=0; i<daekkede.length; i++) {  
                                 Adresse daekket = daekkede[i];  
                                 double afstand = Adresse.beregnAfstand(qAdresse, daekket);  
                                   
                                 if (afstand < bedsteAfstand) {  
                                         bedsteAfstand = afstand;  
                                         bedsteAdr = daekket;  
                                 }  
                         }  
41                                                    
42                          if (bedsteAdr == null && consts.doExtendedLookup() == true) {//hvis vi ikke fandt en adresse og vi må kigge på udvidet område                          if (result.bedsteAdr == null && consts.doExtendedLookup() == true) {//hvis vi ikke fandt en adresse og vi må kigge på udvidet område
43                                  logger.info("Extended lookup for " + qAdresse);                                  logger.info("Extended lookup for " + qAdresse);
44                                  for (int i=0; i<Lookup.alleDaekkedeAdresser.length; i++) {                                  
45                                          Adresse daekket = Lookup.alleDaekkedeAdresser[i];                                  result = findBedsteAdresse(qAdresse, Lookup.alleDaekkedeAdresser);
                                         double afstand = Adresse.beregnAfstand(qAdresse, daekket);  
                                           
                                         if (afstand < bedsteAfstand) {  
                                                 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 73  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 84  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.2228  
changed lines
  Added in v.2229

  ViewVC Help
Powered by ViewVC 1.1.20