X-Git-Url: http://gitweb.fperrin.net/?p=GpsPrune.git;a=blobdiff_plain;f=tim%2Fprune%2FExternalTools.java;h=a2d3e56b6f75c2315832f8c89809a3d442fd6159;hp=22291fb122968331a6f1a52b28d4f9fc56782cb7;hb=112bb0c9b46894adca9a33ed8c99ea712b253185;hpb=54b9d8bc8f0025ccf97a67d9dd217ef1f9cf082f diff --git a/tim/prune/ExternalTools.java b/tim/prune/ExternalTools.java index 22291fb..a2d3e56 100644 --- a/tim/prune/ExternalTools.java +++ b/tim/prune/ExternalTools.java @@ -8,42 +8,55 @@ import java.io.IOException; */ 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; + /** 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"}; - /** - * Attempt to call Povray to see if it's installed / available in path - * @return true if found, false otherwise - */ - public static boolean isPovrayInstalled() - { - return check("povray"); - } - - - /** - * Attempt to call Exiftool to see if it's installed / available in path - * @return true if found, false otherwise - */ - public static boolean isExiftoolInstalled() - { - return check("exiftool -v"); - } /** - * Attempt to call gpsbabel to see if it's installed / available in path - * @return true if found, false otherwise + * Check if the selected tool is installed + * @param inToolNum number of tool, from constants + * @return true if selected tool is installed */ - public static boolean isGpsbabelInstalled() + public static boolean isToolInstalled(int inToolNum) { - return check("gpsbabel -V"); + 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]); + } + } + // Not found + return false; } /** - * Attempt to call gnuplot to see if it's installed / available in path - * @return true if found, false otherwise + * 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 isGnuplotInstalled() + public static boolean isToolInstalled(int inToolNum, String inPath) { - return check(Config.getGnuplotPath() + " -V"); + 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; } /** @@ -52,6 +65,7 @@ public abstract class ExternalTools */ private static boolean check(String inCommand) { + // System.out.println("Checking tool '" + inCommand + "'"); try { Runtime.getRuntime().exec(inCommand);