Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/wsplgen/JobExecutor.java @ 1143:eed81499b0d2
Added Themes for CrossSection diagrams.
flys-artifacts/trunk@2665 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Wed, 07 Sep 2011 11:50:10 +0000 |
parents | e6dd52342eb7 |
children | e7d5452a7381 |
line wrap: on
line source
package de.intevation.flys.wsplgen; import java.io.InputStream; import java.io.IOException; import java.io.File; import org.apache.log4j.Logger; import de.intevation.artifacts.CallContext; import de.intevation.flys.artifacts.model.WSPLGENJob; import de.intevation.flys.utils.MapfileGenerator; public class JobExecutor { public static final String WSPLGEN_PARAMETER_FILE = "wsplgen.par"; public static final String WSPLGEN_BIN_PATH = System.getProperty("wsplgen.bin.path"); private Logger logger = Logger.getLogger(JobExecutor.class); private Process process; protected WSPLGENJob job; protected JobObserver observer; public JobExecutor(WSPLGENJob job) { this.job = job; this.observer = new JobObserver(job); } public void execute() { File dir = job.getWorkingDir(); File parameter = new File(dir, WSPLGEN_PARAMETER_FILE); String[] args = new String[] { WSPLGEN_BIN_PATH, "-PAR=\"" + parameter.getAbsolutePath() + "\"" }; execute(args, dir, observer); } public void execute(String[] args, File dir, JobObserver observer) { logger.info("Start JobExecutor for artifact: " + dir.getName()); String errorMsg = null; try { synchronized (this) { process = Runtime.getRuntime().exec(args, null, dir); InputStream out = process.getInputStream(); observer.setInputStream(out); observer.start(); try { process.waitFor(); } catch (InterruptedException ie) { logger.error("WSPLGEN job interrupted: " + ie.getMessage()); } try { observer.join(); } catch (InterruptedException iee) { /* do nothing */ } job.getCallContext().afterBackground(CallContext.STORE); logger.info("WSPLGEN exit value: " + process.exitValue()); MapfileGenerator.getInstance().update(); return; } } catch (SecurityException se) { logger.error(se); } catch (IOException ioe) { logger.error(ioe); } catch (NullPointerException npe) { logger.error(npe, npe); } catch (IndexOutOfBoundsException ioobe) { logger.error(ioobe, ioobe); } } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :