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();
 

http://dive4elements.wald.intevation.org