- sfile = new File(groovyscript);
- }
- if (!sfile.exists())
- {
- System.err.println("File '" + groovyscript + "' does not exist.");
- return;
- }
- if (!sfile.canRead())
- {
- System.err.println("File '" + groovyscript + "' cannot be read.");
- return;
- }
- if (sfile.length() < 1)
- {
- System.err.println("File '" + groovyscript + "' is empty.");
- return;
- }
- boolean success = false;
- try
- {
- /*
- * The following code performs the GroovyScriptEngine invocation using
- * reflection, and is equivalent to this fragment from the embedding
- * groovy documentation on the groovy site: <code> import
- * groovy.lang.Binding; import groovy.util.GroovyScriptEngine;
- *
- * String[] roots = new String[] { "/my/groovy/script/path" };
- * GroovyScriptEngine gse = new GroovyScriptEngine(roots); Binding binding
- * = new Binding(); binding.setVariable("input", "world");
- * gse.run("hello.groovy", binding); </code>
- */
- ClassLoader cl = jalviewContext.getClass().getClassLoader();
- Class gbindingc = cl.loadClass("groovy.lang.Binding");
- Constructor gbcons = gbindingc.getConstructor(null);
- Object gbinding = gbcons.newInstance(null);
- java.lang.reflect.Method setvar = gbindingc.getMethod("setVariable",
- new Class[]
- { String.class, Object.class });
- setvar.invoke(gbinding, new Object[]
- { "Jalview", jalviewContext });
- Class gsec = cl.loadClass("groovy.util.GroovyScriptEngine");
- Constructor gseccons = gsec.getConstructor(new Class[]
- { URL[].class }); // String[].class });
- Object gse = gseccons.newInstance(new Object[]
- { new URL[]
- { sfile.toURL() } }); // .toString() } });
- java.lang.reflect.Method run = gsec.getMethod("run", new Class[]
- { String.class, gbindingc });
- run.invoke(gse, new Object[]
- { sfile.getName(), gbinding });
- success = true;
- } catch (Exception e)
- {
- System.err.println("Exception Whilst trying to execute file " + sfile
- + " as a groovy script.");
- e.printStackTrace(System.err);
-
- }
- if (success && groovyscript.equals("STDIN"))
- {
- // delete temp file that we made - but only if it was successfully
- // executed
- sfile.delete();
- }
- }
-
- /**
- * Check commandline for any das server definitions or any fetchfrom switches
- *
- * @return vector of DAS source nicknames to retrieve from
- */
- private static Vector checkDasArguments(ArgsParser aparser)
- {
- Vector source = null;
- String data;
- String locsources = Cache.getProperty(Cache.DAS_LOCAL_SOURCE);
- while ((data = aparser.getValue("dasserver", true)) != null)
- {
- String nickname = null;
- String url = null;
- boolean seq = false, feat = true;
- int pos = data.indexOf('=');
- // determine capabilities
- if (pos > 0)