package org.kisst.gft.action;
import org.kisst.gft.GftContainer;
import org.kisst.gft.task.Task;
import org.kisst.props4j.Props;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class LocalCommandAction implements Action{
private static final Logger logger = LoggerFactory.getLogger(LocalCommandAction.class);
private final String name;
private final String command;
private final boolean safeToRetry;
public LocalCommandAction(GftContainer gft, Props props) {
name = props.getLocalName();
command = props.getString("command", null);
safeToRetry = props.getBoolean("safeToRetry", false);
}
@Override public void execute(Task task) {
if (command != null) {
logger.info("{} - Starten met action {}", name, command);
try {
long d = new java.util.Date().getTime();
logger.debug("start run {}", d);
Process p = Runtime.getRuntime().exec(command);
p.waitFor();
long d2 = new java.util.Date().getTime();
logger.debug("klaar run {}", d2);
// TODO wat zijn de waardes die Eyes&Hands terug geeft???
// Als er een windows popup (foutmelding) is het antwoord ook 0.
logger.debug("waarde antwoord commandexec : {}", p.exitValue());
if (p.exitValue() != 0)
logger.warn("return value van aan roep is {}", p
.exitValue());
else
logger.debug("return value van aan roep is {}", p
.exitValue());
} catch (InterruptedException e) {/* IGNORE */
} catch (Exception err) {
err.printStackTrace();
}
}else{
logger.error("geen actie of command gevonden voor poller {}", name);
}
}
@Override public boolean safeToRetry() { return safeToRetry; }
}