Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/wsplgen/JobObserver.java @ 1128:727c53fd0dc7
Some bugfixes when starting/finishing WSPLGEN jobs.
flys-artifacts/trunk@2643 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Mon, 05 Sep 2011 07:17:52 +0000 |
parents | 6b9877a9f6c1 |
children | e7d5452a7381 |
line wrap: on
line source
package de.intevation.flys.wsplgen; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.IOException; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.log4j.Logger; import de.intevation.flys.artifacts.model.WSPLGENJob; public class JobObserver extends Thread { private static Logger logger = Logger.getLogger(JobObserver.class); public static final String WSPLGEN_ENCODING = "ISO-8859-1"; public static final String WSPLGEN_LOG_OUTPUT = System.getProperty("wsplgen.log.output", "false"); public static final String[] STEPS = { ".*<-Auswertung der Kommandozeilen-Parameter beendet.*", ".*->Laden des DGM in Datei '.*' gestartet.*", ".*->Triangulierung der Knoten gestartet.*", ".*->Anpassung der Elemente an Dämme und Gräben gestartet.*", ".*<-WSPLGEN Version .* beendet.*" }; protected WSPLGENJob job; protected InputStream in; protected Pattern[] patterns; protected int len; protected boolean copy; public JobObserver(WSPLGENJob job) { this.job = job; this.len = 0; this.copy = Boolean.parseBoolean(WSPLGEN_LOG_OUTPUT); patterns = new Pattern[STEPS.length]; prepareRegexes(); } private void prepareRegexes() { for (int num = STEPS.length, i = 0; i < num; i++) { patterns[i] = Pattern.compile(STEPS[i]); } } public void setInputStream(InputStream in) { this.in = in; } public void run() { try { BufferedReader reader = new BufferedReader( new InputStreamReader(in, WSPLGEN_ENCODING)); String line = null; while ((line = reader.readLine()) != null) { if (copy) { logger.debug(line); } update(line); } } catch (IOException ioe) { logger.warn("Observation canceled: " + ioe.getMessage()); } } protected void update(String log) { for (int num = patterns.length, i = 0; i < num; i++) { Matcher m = patterns[i].matcher(log); if (m.matches()) { logger.info("Finished step " + (i+1) + " / " + num); } } } } // vim:set ts=4 sw=4 si et sta sts=5 fenc=utf-8 :