ecological-engine-smart-exe.../src/main/java/org/gcube/dataanalysis/executor/scripts/OSCommand.java

102 lines
2.8 KiB
Java
Executable File

package org.gcube.dataanalysis.executor.scripts;
import java.io.BufferedReader;
import java.io.EOFException;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.InputStreamReader;
import org.slf4j.Logger;
public class OSCommand {
public static String ExecuteGetLine(String cmd, Logger logger) {
Process process = null;
String lastline = "";
try {
if (logger == null)
System.out.println("ExecuteScript-> OSCommand-> Executing Control ->" + cmd);
else
logger.debug("ExecuteScript-> OSCommand-> Executing Control ->" + cmd);
process = Runtime.getRuntime().exec(cmd);
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = br.readLine();
if (logger == null)
System.out.println("ExecuteScript-> OSCommand-> line->" + line);
else
logger.debug("ExecuteScript-> OSCommand-> line->" + line);
while (line != null) {
try {
lastline = line;
if (logger == null)
System.out.println("ExecuteScript-> OSCommand-> line->" + line);
else
logger.debug("ExecuteScript-> OSCommand-> line->" + line);
line = br.readLine();
} catch (EOFException e) {
if (logger == null)
System.out.println("ExecuteScript-> OSCommand -> Process Finished with EOF");
else
logger.debug("ExecuteScript-> OSCommand -> Process Finished with EOF");
break;
} catch (Exception e) {
line = "ERROR";
break;
}
}
if (logger == null)
System.out.println("ExecuteScript-> OSCommand -> Process Finished");
else
logger.debug("ExecuteScript-> OSCommand -> Process Finished");
} catch (Throwable e) {
if (logger == null)
System.out.println("ExecuteScript-> OSCommand-> error ");
else
logger.debug("ExecuteScript-> OSCommand-> error ");
e.printStackTrace();
lastline = "ERROR";
}
process.destroy();
if (logger == null)
System.out.println("ExecuteScript-> OSCommand-> Process destroyed ");
else
logger.debug("ExecuteScript-> OSCommand-> Process destroyed ");
return lastline;
}
public static boolean FileCopy(String origin, String destination) {
try {
File inputFile = new File(origin);
System.out.println("ExecuteScript-> OSCommand-> FileCopy-> " + inputFile.length() + " to " + inputFile.canRead());
int counterrors = 0;
while ((inputFile.length() == 0) && (counterrors < 10)) {
Thread.sleep(20);
counterrors++;
}
File outputFile = new File(destination);
FileReader in = new FileReader(inputFile);
FileWriter out = new FileWriter(outputFile);
int c;
while ((c = in.read()) != -1)
out.write(c);
in.close();
out.close();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
}