]> gitweb.fperrin.net Git - GpsPrune.git/blobdiff - tim/prune/ExternalTools.java
Version 8, September 2009
[GpsPrune.git] / tim / prune / ExternalTools.java
index 22291fb122968331a6f1a52b28d4f9fc56782cb7..a2d3e56b6f75c2315832f8c89809a3d442fd6159 100644 (file)
@@ -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);