14 |
import dk.daoas.fulddaekning.BoundingBox.BoundingBoxException; |
import dk.daoas.fulddaekning.BoundingBox.BoundingBoxException; |
15 |
|
|
16 |
public class Lookup { |
public class Lookup { |
17 |
|
|
18 |
|
static final String CONFIG_FILENAME = "fulddaekning.properties"; |
19 |
|
|
20 |
static int max_workers; |
static int max_workers; |
21 |
static boolean verbose; |
static boolean verbose; |
22 |
|
|
23 |
static Properties conf; |
static SafeProperties conf; |
24 |
static Logger logger = Logger.getLogger( Lookup.class.toString() ); |
static Logger logger = Logger.getLogger( Lookup.class.toString() ); |
25 |
|
|
26 |
int postnr; |
int postnr; |
31 |
|
|
32 |
Map<Integer, LookupWorker> workers = new ConcurrentHashMap<Integer, LookupWorker>(); |
Map<Integer, LookupWorker> workers = new ConcurrentHashMap<Integer, LookupWorker>(); |
33 |
|
|
|
static int flestDaekkedeAntal = 0; |
|
|
static int flestDaekkedePostnr; |
|
34 |
|
|
35 |
static int flestIkkeDaekkedeAntal = 0; |
static Statistik flestDaekkede = new Statistik(); |
36 |
static int flestIkkeDaekkedePostnr; |
static Statistik flestIkkeDaekkede = new Statistik(); |
37 |
|
|
38 |
|
|
39 |
|
static class Statistik { |
40 |
|
int postnr; |
41 |
|
int antalDaekkede = 0; |
42 |
|
int antalIkkeDaekkede = 0; |
43 |
|
|
44 |
|
@Override |
45 |
|
public String toString() { |
46 |
|
return "postnr=" + postnr + " antalIkkeDaekkede=" + antalIkkeDaekkede + " antalDaekkede=" + antalDaekkede; |
47 |
|
} |
48 |
|
} |
49 |
|
|
50 |
|
|
51 |
public Lookup(int postnr, Database db) { |
public Lookup(int postnr, Database db) { |
53 |
this.db = db; |
this.db = db; |
54 |
} |
} |
55 |
|
|
56 |
|
public static void saveStatistics(Statistik stat) { |
57 |
|
if (stat.antalDaekkede > flestDaekkede.antalDaekkede) { |
58 |
|
flestDaekkede = stat; |
59 |
|
} |
60 |
|
if (stat.antalIkkeDaekkede > flestIkkeDaekkede.antalIkkeDaekkede) { |
61 |
|
flestIkkeDaekkede = stat; |
62 |
|
} |
63 |
|
} |
64 |
|
|
65 |
public void doLookup() throws BoundingBoxException { |
public void doLookup() throws BoundingBoxException { |
66 |
logger.info("Starting for postnr=" + postnr); |
logger.info("Starting for postnr=" + postnr); |
67 |
|
|
68 |
int queueSize=-1; |
Statistik stat = new Statistik(); |
69 |
|
|
70 |
long start1 = System.currentTimeMillis(); |
long start1 = System.currentTimeMillis(); |
71 |
long start2 = 0; |
long start2 = 0; |
72 |
|
|
83 |
|
|
84 |
logger.info("Henter _ikke_ daekkede adresser i " + postnr); |
logger.info("Henter _ikke_ daekkede adresser i " + postnr); |
85 |
queue = db.hentIkkedaekkedeAdresser(postnr); |
queue = db.hentIkkedaekkedeAdresser(postnr); |
|
queueSize = queue.size(); |
|
86 |
|
|
87 |
if (daekkedeAdresser.size() > flestDaekkedeAntal) { |
stat.postnr = postnr; |
88 |
flestDaekkedeAntal = daekkedeAdresser.size(); |
stat.antalDaekkede = daekkedeAdresser.size(); |
89 |
flestDaekkedePostnr = postnr; |
stat.antalIkkeDaekkede = queue.size(); |
|
} |
|
|
|
|
|
if (queueSize > flestIkkeDaekkedeAntal) { |
|
|
flestIkkeDaekkedeAntal = queueSize; |
|
|
flestIkkeDaekkedePostnr = postnr; |
|
|
} |
|
90 |
|
|
91 |
|
saveStatistics(stat); |
92 |
|
|
93 |
|
|
94 |
logger.info("Starter beregning for " + postnr); |
logger.info("Starter beregning for " + postnr); |
95 |
start2 = System.currentTimeMillis(); |
start2 = System.currentTimeMillis(); |
118 |
} |
} |
119 |
long now = System.currentTimeMillis(); |
long now = System.currentTimeMillis(); |
120 |
|
|
121 |
logger.info("Antal daekkede:" + daekkedeAdresser.size() + " postnr=" + postnr); |
|
122 |
logger.info("Antal ikke-daekkede:" + queueSize + " postnr=" + postnr); |
logger.info( stat.toString() ); |
|
|
|
123 |
logger.info("Done! elapsed=" + (now-start1) + "/" + (now-start2) + " postnr=" + postnr); |
logger.info("Done! elapsed=" + (now-start1) + "/" + (now-start2) + " postnr=" + postnr); |
124 |
} |
} |
125 |
|
|
158 |
|
|
159 |
public static void main(String[] args) throws Exception { |
public static void main(String[] args) throws Exception { |
160 |
|
|
161 |
File confFile = new File("fulddaekning.properties"); |
File confFile = new File( CONFIG_FILENAME ); |
162 |
if (! confFile.exists() ) { |
if (! confFile.exists() ) { |
163 |
logger.warning("Config file not found"); |
logger.warning("Config file not found: " + CONFIG_FILENAME); |
164 |
System.exit(1); |
System.exit(1); |
165 |
} |
} |
166 |
|
|
167 |
conf = new Properties(); |
conf = new SafeProperties(); |
168 |
conf.load( new FileReader(confFile) ); |
conf.load( new FileReader(confFile) ); |
169 |
|
|
170 |
max_workers = Integer.parseInt( conf.getProperty("MAX_WORKERS") ); |
max_workers = Integer.parseInt( conf.getSafeProperty("MAX_WORKERS") ); |
171 |
logger.info("Starting with MAX_WORKERS:" + max_workers); |
logger.info("Starting with MAX_WORKERS:" + max_workers); |
172 |
|
|
173 |
verbose = Boolean.parseBoolean( conf.getProperty("VERBOSE") ); |
verbose = Boolean.parseBoolean( conf.getSafeProperty("VERBOSE") ); |
174 |
logger.info("Starting with VERBOSE:" + verbose); |
logger.info("Starting with VERBOSE:" + verbose); |
175 |
|
|
176 |
Database db = new Database(conf); |
Database db = new Database(conf); |
192 |
} |
} |
193 |
|
|
194 |
long now = System.currentTimeMillis(); |
long now = System.currentTimeMillis(); |
195 |
|
|
196 |
|
logger.info("Flest Ikke-dækkede, " + flestIkkeDaekkede); |
197 |
|
logger.info("Flest Dækkede, " + flestDaekkede); |
198 |
logger.info("Fuld load done : " + (now-start) ); |
logger.info("Fuld load done : " + (now-start) ); |
199 |
logger.info("Flest Ikke-dækkede, " + flestIkkeDaekkedePostnr + ": " + flestIkkeDaekkedeAntal); |
|
|
logger.info("Flest Dækkede, " + flestDaekkedePostnr + ": " + flestDaekkedeAntal); |
|
200 |
|
|
201 |
|
|
202 |
//Lookup lookup = new Lookup(7400, db); |
//Lookup lookup = new Lookup(7400, db); |