Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/wsplgen/JobExecutor.java @ 1147:e7d5452a7381
Added a 'ProblemObserver' that analyses WSPLGEN's error stream for errors and warnings.
flys-artifacts/trunk@2677 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Thu, 08 Sep 2011 11:24:27 +0000 |
parents | e6dd52342eb7 |
children | aaf8d32f85bd |
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/wsplgen/JobExecutor.java Thu Sep 08 11:22:35 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/wsplgen/JobExecutor.java Thu Sep 08 11:24:27 2011 +0000 @@ -1,6 +1,5 @@ package de.intevation.flys.wsplgen; -import java.io.InputStream; import java.io.IOException; import java.io.File; @@ -28,12 +27,14 @@ protected WSPLGENJob job; - protected JobObserver observer; + protected JobObserver logObserver; + protected ProblemObserver errorObserver; public JobExecutor(WSPLGENJob job) { - this.job = job; - this.observer = new JobObserver(job); + this.job = job; + this.logObserver = new JobObserver(job); + this.errorObserver = new ProblemObserver(job); } @@ -46,11 +47,11 @@ "-PAR=\"" + parameter.getAbsolutePath() + "\"" }; - execute(args, dir, observer); + execute(args, dir); } - public void execute(String[] args, File dir, JobObserver observer) { + protected void execute(String[] args, File dir) { logger.info("Start JobExecutor for artifact: " + dir.getName()); String errorMsg = null; @@ -59,10 +60,11 @@ synchronized (this) { process = Runtime.getRuntime().exec(args, null, dir); - InputStream out = process.getInputStream(); - observer.setInputStream(out); + logObserver.setInputStream(process.getInputStream()); + errorObserver.setInputStream(process.getErrorStream()); - observer.start(); + logObserver.start(); + errorObserver.start(); try { process.waitFor(); @@ -72,13 +74,20 @@ } try { - observer.join(); + logObserver.join(); + errorObserver.join(); } catch (InterruptedException iee) { /* do nothing */ } job.getCallContext().afterBackground(CallContext.STORE); logger.info("WSPLGEN exit value: " + process.exitValue()); + logger.info( + "WSPLGEN throw " + + errorObserver.numErrors() + " errors."); + logger.info( + "WSPLGEN throw " + + errorObserver.numWarnings() + " warnings."); MapfileGenerator.getInstance().update();