package org.trianacode.shiwaall.executionServices;
import org.shiwa.fgi.iwir.BlockScope;
import org.shiwa.fgi.iwir.IWIR;
import org.trianacode.enactment.addon.ConversionAddon;
import org.trianacode.shiwaall.iwir.importer.utils.ExportIwir;
import org.trianacode.shiwaall.iwir.importer.utils.ImportIwir;
import org.trianacode.taskgraph.TaskGraph;
import org.trianacode.taskgraph.tool.Tool;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
// TODO: Auto-generated Javadoc
/**
* Created by IntelliJ IDEA.
* User: Ian Harvey
* Date: 17/11/2011
* Time: 16:49
* To change this template use File | Settings | File Templates.
*/
public class TaskToIWIRAddon implements ConversionAddon {
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return "IWIR";
}
/* (non-Javadoc)
* @see org.trianacode.enactment.addon.CLIaddon#getUsageString()
*/
@Override
public String getUsageString() {
return "";
}
/* (non-Javadoc)
* @see org.trianacode.enactment.addon.ConversionAddon#toolToWorkflow(org.trianacode.taskgraph.tool.Tool)
*/
@Override
public Object toolToWorkflow(Tool tool) throws IOException {
ExportIwir exportIwir = new ExportIwir();
return exportIwir.taskGraphToBlockScope((TaskGraph) tool);
}
/* (non-Javadoc)
* @see org.trianacode.enactment.addon.ConversionAddon#workflowToTool(java.lang.Object)
*/
@Override
public Tool workflowToTool(Object workflowObject) {
try {
IWIR iwir = null;
Tool tool;
if (workflowObject instanceof String) {
File file = new File((String) workflowObject);
if (file.exists()) {
iwir = new IWIR(file);
}
} else if (workflowObject instanceof File) {
File file = (File) workflowObject;
if (file.exists()) {
iwir = new IWIR(file);
}
}
if (iwir != null) {
ImportIwir iwirImporter = new ImportIwir();
tool = iwirImporter.taskFromIwir(iwir, null);
return tool;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/* (non-Javadoc)
* @see org.trianacode.enactment.addon.ConversionAddon#processWorkflow(org.trianacode.taskgraph.tool.Tool)
*/
@Override
public Tool processWorkflow(Tool workflow) {
return null;
}
/* (non-Javadoc)
* @see org.trianacode.enactment.addon.ConversionAddon#toolToWorkflowFile(org.trianacode.taskgraph.tool.Tool, java.io.File, java.lang.String)
*/
@Override
public File toolToWorkflowFile(Tool tool, File configFile, String filePath) throws Exception {
ExportIwir exportIwir = new ExportIwir();
File outputFile = new File(filePath);
exportIwir.taskGraphToIWIRFile((TaskGraph) tool, outputFile);
return outputFile;
}
/* (non-Javadoc)
* @see org.trianacode.enactment.addon.ConversionAddon#toolToWorkflowFileInputStream(org.trianacode.taskgraph.tool.Tool)
*/
@Override
public InputStream toolToWorkflowFileInputStream(Tool tool) {
try {
BlockScope blockscope = (BlockScope) toolToWorkflow(tool);
IWIR iwir = new IWIR(tool.getToolName());
iwir.setTask(blockscope);
File file = File.createTempFile("iwir", "tmp");
file.deleteOnExit();
iwir.asXMLFile(file);
return new FileInputStream(file);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/* (non-Javadoc)
* @see org.trianacode.enactment.addon.CLIaddon#getServiceName()
*/
@Override
public String getServiceName() {
return "TaskGraphToIWIR";
}
/* (non-Javadoc)
* @see org.trianacode.enactment.addon.CLIaddon#getLongOption()
*/
@Override
public String getLongOption() {
return "iwir-converter";
}
/* (non-Javadoc)
* @see org.trianacode.enactment.addon.CLIaddon#getShortOption()
*/
@Override
public String getShortOption() {
return "iwir";
}
/* (non-Javadoc)
* @see org.trianacode.enactment.addon.CLIaddon#getDescription()
*/
@Override
public String getDescription() {
return "Converts TaskGraph objects to IWIR blockscopes, or IWIR files.";
}
}