annotate flys-artifacts/src/main/java/de/intevation/flys/wsplgen/JobObserver.java @ 1127:6b9877a9f6c1

Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations. flys-artifacts/trunk@2639 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Fri, 02 Sep 2011 13:12:05 +0000
parents
children e7d5452a7381
rev   line source
1127
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.wsplgen;
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
2
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
3 import java.io.BufferedReader;
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
4 import java.io.InputStream;
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
5 import java.io.InputStreamReader;
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
6 import java.io.IOException;
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
7 import java.util.regex.Matcher;
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
8 import java.util.regex.Pattern;
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
9
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
10 import org.apache.log4j.Logger;
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
11
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
12 import de.intevation.flys.artifacts.model.WSPLGENJob;
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
13
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
14
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
15 public class JobObserver extends Thread {
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
16
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
17 private static Logger logger = Logger.getLogger(JobObserver.class);
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
18
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
19
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
20 public static final String WSPLGEN_ENCODING =
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
21 "ISO-8859-1";
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
22
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
23 public static final String WSPLGEN_LOG_OUTPUT =
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
24 System.getProperty("wsplgen.log.output", "false");
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
25
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
26 public static final String[] STEPS = {
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
27 ".*<-Auswertung der Kommandozeilen-Parameter beendet.*",
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
28 ".*->Laden des DGM in Datei '.*' gestartet.*",
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
29 ".*->Triangulierung der Knoten gestartet.*",
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
30 ".*->Anpassung der Elemente an Dämme und Gräben gestartet.*",
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
31 ".*<-WSPLGEN Version .* beendet.*"
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
32 };
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
33
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
34
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
35 protected WSPLGENJob job;
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
36
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
37 protected InputStream in;
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
38
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
39 protected Pattern[] patterns;
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
40
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
41 protected int len;
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
42
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
43 protected boolean copy;
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
44
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
45
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
46 public JobObserver(WSPLGENJob job) {
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
47 this.job = job;
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
48 this.len = 0;
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
49 this.copy = Boolean.parseBoolean(WSPLGEN_LOG_OUTPUT);
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
50
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
51 patterns = new Pattern[STEPS.length];
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
52
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
53 prepareRegexes();
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
54 }
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
55
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
56
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
57 private void prepareRegexes() {
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
58 for (int num = STEPS.length, i = 0; i < num; i++) {
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
59 patterns[i] = Pattern.compile(STEPS[i]);
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
60 }
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
61 }
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
62
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
63
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
64 public void setInputStream(InputStream in) {
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
65 this.in = in;
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
66 }
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
67
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
68
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
69 public void run() {
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
70 try {
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
71
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
72 BufferedReader reader =
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
73 new BufferedReader(
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
74 new InputStreamReader(in, WSPLGEN_ENCODING));
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
75
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
76 String line = null;
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
77
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
78 while ((line = reader.readLine()) != null) {
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
79 if (copy) {
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
80 logger.debug(line);
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
81 }
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
82
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
83 update(line);
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
84 }
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
85 }
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
86 catch (IOException ioe) {
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
87 logger.warn("Observation canceled: " + ioe.getMessage());
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
88 }
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
89 }
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
90
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
91
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
92 protected void update(String log) {
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
93 for (int num = patterns.length, i = 0; i < num; i++) {
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
94 Matcher m = patterns[i].matcher(log);
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
95
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
96 if (m.matches()) {
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
97 logger.info("Finished step " + (i+1) + " / " + num);
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
98 }
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
99 }
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
100 }
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
101 }
6b9877a9f6c1 Added infrastructure to start WSPLGEN calculations - the FloodMapState already start such calculations.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
102 // vim:set ts=4 sw=4 si et sta sts=5 fenc=utf-8 :

http://dive4elements.wald.intevation.org