2 |
|
|
3 |
import java.sql.SQLException; |
import java.sql.SQLException; |
4 |
import java.util.Queue; |
import java.util.Queue; |
5 |
|
import java.util.concurrent.BrokenBarrierException; |
6 |
|
import java.util.concurrent.CyclicBarrier; |
7 |
import java.util.logging.Level; |
import java.util.logging.Level; |
8 |
import java.util.logging.Logger; |
import java.util.logging.Logger; |
9 |
|
|
19 |
|
|
20 |
int workerId; |
int workerId; |
21 |
Lookup lookup; |
Lookup lookup; |
22 |
|
CyclicBarrier barrier; |
23 |
|
|
24 |
public LookupWorker(int workerId, Lookup lookup) { |
public LookupWorker(int workerId, Lookup lookup, CyclicBarrier barrier) { |
25 |
this.workerId = workerId; |
this.workerId = workerId; |
26 |
this.lookup = lookup; |
this.lookup = lookup; |
27 |
|
this.barrier = barrier; |
28 |
|
|
29 |
consts = Constants.getInstance(); |
consts = Constants.getInstance(); |
30 |
} |
} |
34 |
Constants consts = Constants.getInstance(); |
Constants consts = Constants.getInstance(); |
35 |
|
|
36 |
Adresse daekkede[] = lookup.getDaekkedeAdresser(); |
Adresse daekkede[] = lookup.getDaekkedeAdresser(); |
37 |
|
Adresse udvidetDaekkede[] = lookup.getUdvidetDaekkedeAdresser(); |
38 |
Queue<Adresse> queue = lookup.getQueue(); |
Queue<Adresse> queue = lookup.getQueue(); |
39 |
Database db = lookup.getDb(); |
Database db = lookup.getDb(); |
40 |
|
|
48 |
|
|
49 |
LookupResult result = findBedsteAdresse(qAdresse, daekkede); |
LookupResult result = findBedsteAdresse(qAdresse, daekkede); |
50 |
|
|
51 |
if (result.bedsteAdr == null && consts.doExtendedLookup() == true) {//hvis vi ikke fandt en adresse og vi må kigge på udvidet område |
if (result.bedsteAdr == null ) {//hvis vi ikke fandt en adresse og vi må kigge på udvidet område |
52 |
logger.info("Extended lookup for " + qAdresse); |
logger.info("Extended lookup for " + qAdresse); |
53 |
|
|
54 |
result = findBedsteAdresse(qAdresse, LookupMain.alleDaekkedeAdresser); |
result = findBedsteAdresse(qAdresse, udvidetDaekkede); |
55 |
} |
} |
56 |
|
|
57 |
|
|
74 |
logger.fine("(" +workerId + ") For stor afstand " + qAdresse + " -> " + result.bedsteAfstand); |
logger.fine("(" +workerId + ") For stor afstand " + qAdresse + " -> " + result.bedsteAfstand); |
75 |
} |
} |
76 |
} else { |
} else { |
77 |
logger.warning("(" +workerId + ") Ingen match til " + qAdresse); |
logger.fine("(" +workerId + ") Ingen match til " + qAdresse); |
78 |
} |
} |
79 |
|
|
80 |
} |
} |
81 |
|
try { |
82 |
|
barrier.await(); |
83 |
lookup.shutdownWorker( workerId); |
} catch (BrokenBarrierException e) { |
84 |
|
logger.log(Level.SEVERE, e.getMessage(), e); |
85 |
|
System.exit(-1); |
86 |
|
} catch(InterruptedException e) { |
87 |
|
//Do nothing |
88 |
|
} |
89 |
} |
} |
90 |
|
|
91 |
LookupResult findBedsteAdresse(Adresse qAdresse, Adresse daekkede[]) { |
LookupResult findBedsteAdresse(Adresse qAdresse, Adresse daekkede[]) { |