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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2149 - (show annotations) (download)
Wed Apr 30 14:18:43 2014 UTC (10 years ago) by torben
File size: 2316 byte(s)
1) Mark reader connection as read only
2) Save statistics about largest set of covered adresses
1 package dk.daoas.fulddaekning;
2
3 import java.util.LinkedList;
4 import java.util.Queue;
5 import java.util.concurrent.ConcurrentLinkedQueue;
6 import java.util.logging.Level;
7 import java.util.logging.Logger;
8
9 public class InputWorker implements Runnable {
10
11 static Logger logger = Logger.getLogger( InputWorker.class.toString() );
12
13 Database db;
14
15 public Queue<WorkSet> queue = new ConcurrentLinkedQueue<WorkSet>();
16 public boolean isDone = false;
17
18 public int largestWorkSetCount = 0;
19 public int largestWorkSetPostnr= 0;
20
21
22 public InputWorker(Database db) {
23 this.db = db;
24 }
25
26 @Override
27 public void run() {
28 logger.info("Finder postnumre");
29 try {
30
31 Queue<Integer> postnumre = new LinkedList<Integer>();
32 postnumre.addAll( db.hentPostnumre() );
33
34 while( postnumre.isEmpty() == false) {
35 if (queue.size() <= 25) {
36 int postnr = postnumre.poll();
37
38 WorkSet workSet = new WorkSet();
39 workSet.postnr = postnr;
40
41 BoundingBox bbox = db.getBoundingbox(postnr);
42 bbox.validateBbox();
43
44 logger.info("Bbox=" + bbox);
45 bbox.adjustToMargin();
46 logger.info("Bbox Adjusted=" + bbox);
47
48 logger.info("Henter _ikke_ daekkede adresser i " + postnr);
49 workSet.ikkeDaekkede = db.hentIkkedaekkedeAdresser(postnr);
50
51 if ( workSet.ikkeDaekkede.isEmpty()) {
52 //hvis der ikke er nogen adresser at arbejde på skal vi heller ikke gemme et workset
53 logger.info("Nothing to do for " + postnr);
54 continue;
55 }
56
57
58 logger.info("Henter daekkede adresser i " + postnr);
59 workSet.daekkedeAdresser = db.hentDaekkedeAdresser(bbox);
60
61 workSet.queueSize = workSet.ikkeDaekkede.size();
62
63 saveLargeWorkset( workSet );
64 queue.add(workSet);
65 } else {
66 //queue.wait(10);
67 Thread.sleep(10);
68 }
69 }
70
71 logger.info("Input Worker done - stopping !!!");
72 isDone = true;
73
74
75 } catch (Exception e) {
76 logger.log(Level.SEVERE, "Error during inputworker", e);
77 System.exit(1);
78 }
79 }
80
81 private void saveLargeWorkset( WorkSet ws) {
82 int newSize = ws.daekkedeAdresser.size();
83
84 if (newSize > largestWorkSetCount) {
85 largestWorkSetCount = newSize;
86 largestWorkSetPostnr = ws.postnr;
87 }
88 }
89
90 }

  ViewVC Help
Powered by ViewVC 1.1.20