Implement external program call
This commit is contained in:
parent
c8aa18338a
commit
a7148e247c
@ -17,6 +17,7 @@ import java.nio.file.Paths;
|
|||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.logging.FileHandler;
|
import java.util.logging.FileHandler;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
@ -29,6 +30,7 @@ import javafx.scene.image.Image;
|
|||||||
import javafx.scene.Parent;
|
import javafx.scene.Parent;
|
||||||
import javafx.scene.Scene;
|
import javafx.scene.Scene;
|
||||||
import javafx.stage.Stage;
|
import javafx.stage.Stage;
|
||||||
|
import javafx.util.Pair;
|
||||||
import org.apache.commons.cli.*;
|
import org.apache.commons.cli.*;
|
||||||
|
|
||||||
public class Main extends Application {
|
public class Main extends Application {
|
||||||
@ -174,6 +176,14 @@ public class Main extends Application {
|
|||||||
public StationRunException(String message) {
|
public StationRunException(String message) {
|
||||||
super(message);
|
super(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public StationRunException(Throwable cause) {
|
||||||
|
super(cause);
|
||||||
|
}
|
||||||
|
|
||||||
|
public StationRunException(String message, Throwable cause) {
|
||||||
|
super(message, cause);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void runStation(MainParsedArguments parsedArgs) throws StationRunException {
|
public static void runStation(MainParsedArguments parsedArgs) throws StationRunException {
|
||||||
@ -223,6 +233,21 @@ public class Main extends Application {
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch (loadedStation.getMessageMethod()) {
|
switch (loadedStation.getMessageMethod()) {
|
||||||
|
case StationSettings.MessageMethod.EXTERNAL_PROGRAM:
|
||||||
|
Process process = new ProcessBuilder(loadedStation.getExternalProgramCommand(), nextMessagePath.toString()).start();
|
||||||
|
// TODO: make timeout a setting
|
||||||
|
if (!process.waitFor(5, TimeUnit.SECONDS)) {
|
||||||
|
throw new StationRunException("Timeout while running external program " + loadedStation.getExternalProgramCommand());
|
||||||
|
}
|
||||||
|
|
||||||
|
Pair<String, String> output = WindowsScheduler.captureProcessOutput(process);
|
||||||
|
if(process.exitValue() != 0) {
|
||||||
|
String message = "External program non-zero exit code. Exit code: " + process.exitValue() + ". stdout: " + output.getKey() + "\n\tstderr: " + output.getValue();
|
||||||
|
logger.log(Level.SEVERE, message);
|
||||||
|
throw new StationRunException(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
case StationSettings.MessageMethod.SFTP:
|
case StationSettings.MessageMethod.SFTP:
|
||||||
//loadedStation.uploadNextMessageToSFTP();
|
//loadedStation.uploadNextMessageToSFTP();
|
||||||
JSch jsch = new JSch();
|
JSch jsch = new JSch();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user