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

http://dive4elements.wald.intevation.org