+++ /dev/null
-package tim.prune;
-
-import java.io.IOException;
-
-import tim.prune.config.Config;
-
-
-/**
- * Class to manage interfaces to external tools, like exiftool
- */
-public abstract class ExternalTools
-{
- /** Constant for Exiftool */
- public static final int TOOL_EXIFTOOL = 0;
- /** Constant for Gpsbabel */
- public static final int TOOL_GPSBABEL = 1;
- /** Constant for Gnuplot */
- public static final int TOOL_GNUPLOT = 2;
- /** Constant for Xerces xml library */
- public static final int TOOL_XERCES = 3;
- /** Config keys in order that the tools are defined above */
- private static final String[] CONFIG_KEYS = {Config.KEY_EXIFTOOL_PATH, Config.KEY_GPSBABEL_PATH, Config.KEY_GNUPLOT_PATH};
- /** Verification flags for the tools in the order defined above */
- private static final String[] VERIFY_FLAGS = {"-v", "-V", "-V"};
-
-
- /**
- * Check if the selected tool is installed
- * @param inToolNum number of tool, from constants
- * @return true if selected tool is installed
- */
- public static boolean isToolInstalled(int inToolNum)
- {
- switch (inToolNum) {
- case TOOL_EXIFTOOL:
- case TOOL_GPSBABEL:
- case TOOL_GNUPLOT:
- String toolPath = Config.getConfigString(CONFIG_KEYS[inToolNum]);
- if (toolPath != null && toolPath.length() > 0) {
- return check(toolPath + " " + VERIFY_FLAGS[inToolNum]);
- }
- break;
- case TOOL_XERCES:
- try {
- return Class.forName("org.apache.xerces.parsers.SAXParser").getClassLoader() != null;
- }
- catch (ClassNotFoundException e) {
- // System.err.println(e.getClass().getName() + " : " + e.getMessage());
- }
- break;
- }
- // Not found
- return false;
- }
-
- /**
- * Check if the selected tool is installed using the given path
- * @param inToolNum number of tool, from constants
- * @param inPath selected path to use instead of configured one
- * @return true if selected tool is installed
- */
- public static boolean isToolInstalled(int inToolNum, String inPath)
- {
- if (inPath == null || inPath.equals("")) {return false;}
- switch (inToolNum) {
- case TOOL_EXIFTOOL:
- case TOOL_GPSBABEL:
- case TOOL_GNUPLOT:
- return check(inPath + " " + VERIFY_FLAGS[inToolNum]);
- }
- // Not found
- return false;
- }
-
- /**
- * Attempt to call the specified command
- * @return true if found, false otherwise
- */
- private static boolean check(String inCommand)
- {
- try
- {
- Runtime.getRuntime().exec(inCommand);
- return true;
- }
- catch (IOException ioe)
- {
- // exception thrown, command not found
- return false;
- }
- }
-}