*/
public boolean saveWorkflow() {
if (XBayaUtil.acquireJCRRegistry(this.engine)) {
try {
Workflow workflow = this.engine.getGUI().getWorkflow();
JythonScript script = new JythonScript(workflow, this.engine.getConfiguration());
// Check if there is any errors in the workflow first.
ArrayList<String> warnings = new ArrayList<String>();
if (!script.validate(warnings)) {
StringBuilder buf = new StringBuilder();
for (String warning : warnings) {
buf.append("- ");
buf.append(warning);
buf.append("\n");
}
this.engine.getGUI().getErrorWindow().warning(buf.toString());
return false;
}
RegistryWorkflowPublisherWindow registryPublishingWindow = new RegistryWorkflowPublisherWindow(
this.engine);
registryPublishingWindow.show();
String workflowId = workflow.getName();
workflowId = StringUtil.convertToJavaIdentifier(workflowId);
QName workflowQName = new QName(XBayaConstants.OGCE_WORKFLOW_NS, workflowId);
String workflowAsString = XMLUtil.xmlElementToString(workflow.toXML());
String owner = this.engine.getConfiguration().getRegistryUserName();
AiravataAPI registry = this.connectToRegistry();
if (registry.getWorkflowManager().isWorkflowExists(workflow.getName())){
registry.getWorkflowManager().updateWorkflow(workflow.getName(), workflowAsString);
}else{
registry.getWorkflowManager().saveWorkflow(workflowAsString);
}
if (registryPublishingWindow.isMakePublic()){
registry.getWorkflowManager().publishWorkflow(workflow.getName());
}
registryPublishingWindow.hide();
return true;
} catch (Exception e) {
this.engine.getGUI().getErrorWindow().error(e.getMessage(), e);