package org.trianacode.enactment; import org.trianacode.TrianaInstance; import org.trianacode.config.TrianaProperties; import org.trianacode.enactment.addon.CLIaddon; import org.trianacode.taskgraph.TaskException; import org.trianacode.taskgraph.imp.ToolImp; import org.trianacode.taskgraph.proxy.ProxyInstantiationException; import org.trianacode.taskgraph.proxy.java.JavaProxy; import org.trianacode.taskgraph.tool.Tool; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NamedNodeMap; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import java.io.File; import java.util.Set; /** * Created by IntelliJ IDEA. * User: Ian Harvey * Date: 03/11/2011 * Time: 13:49 * To change this template use File | Settings | File Templates. */ public class AddonUtils { public static final String TASKGRAPH_FORMAT = "taskgraph"; public static final String IWIR_FORMAT = "iwir"; public static final String DAX_FORMAT = "dax"; public static String getWorkflowType(File file) { String workflowType = null; if (file != null && file.exists()) { try { System.out.println(file.getAbsolutePath()); DocumentBuilderFactory dbfac = DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder = dbfac.newDocumentBuilder(); Document doc = docBuilder.parse(file); Element i = doc.getDocumentElement(); NamedNodeMap l = i.getAttributes(); for (int m = 0; m < l.getLength(); m++) { org.w3c.dom.Node o = l.item(m); System.out.println(o.toString()); } String rootName = i.getNodeName(); System.out.println("XML root is : " + rootName); if (rootName.toLowerCase().equals(AddonUtils.IWIR_FORMAT)) { return AddonUtils.IWIR_FORMAT; } else if (rootName.toLowerCase().equals("tool")) { return AddonUtils.TASKGRAPH_FORMAT; } } catch (Exception e) { return null; } } return workflowType; } public static Set<Object> getCLIaddons(TrianaInstance engine) { Set<Object> addons = engine.getExtensions(CLIaddon.class); System.out.println("Found " + addons.size() + " CLIaddons"); return addons; } public static CLIaddon getService(TrianaInstance engine, String longOpt, Class clazz) { Set<Object> extensions = getCLIaddons(engine); for (Object service : extensions) { if (clazz.isAssignableFrom(service.getClass())) { CLIaddon addon = ((CLIaddon) service); // System.out.println("Comparing " + addon.getLongOption() + ":" + longOpt); if (addon.getLongOption().equals(longOpt)) { System.out.println("Returning service " + addon.getLongOption()); return (CLIaddon) service; } } else { System.out.println(service.toString() + " is not a " + clazz.getCanonicalName()); } } return null; } public static Tool makeTool(Class clazz, String name, TrianaProperties properties) throws ProxyInstantiationException, TaskException { return makeTool(clazz.getSimpleName(), clazz.getPackage().getName(), name, properties); } public static ToolImp makeTool(String simpleName, String packageName, String name, TrianaProperties properties) throws ProxyInstantiationException, TaskException { ToolImp tool = new ToolImp(properties); tool.setProxy(new JavaProxy(simpleName, packageName)); tool.setToolPackage(packageName); tool.setToolName(name); // System.out.println("New : " + tool.getToolName() + " " + packageName + "." + simpleName); return tool; } }