package net.sourceforge.seqware.pipeline.workflowV2.engine.oozie; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import net.sourceforge.seqware.common.module.ReturnValue; import net.sourceforge.seqware.common.util.Log; import net.sourceforge.seqware.pipeline.workflowV2.AbstractWorkflowDataModel; import net.sourceforge.seqware.pipeline.workflowV2.engine.oozie.object.WorkflowApp; import org.apache.hadoop.fs.Path; import org.jdom.Document; import org.jdom.output.Format; import org.jdom.output.XMLOutputter; public class OozieWorkflowXmlGenerator { /** * generate a dax file from the object model * * @param wfdm * @param output * @param nfsWorkDir * @param hdfsWorkDir * @param useSge * @param seqwareJar * @param maxMemorySgeParamFormat * @param threadsSgeParamFormat * @return */ public ReturnValue generateWorkflowXml(AbstractWorkflowDataModel wfdm, String output, String nfsWorkDir, Path hdfsWorkDir, boolean useSge, File seqwareJar, String threadsSgeParamFormat, String maxMemorySgeParamFormat) { ReturnValue ret = new ReturnValue(ReturnValue.SUCCESS); File dax = new File(output); // write to dax Document doc = new Document(); try (OutputStream out = new FileOutputStream(dax)) { XMLOutputter serializer = new XMLOutputter(Format.getPrettyFormat()); WorkflowApp adag = new WorkflowApp(wfdm, nfsWorkDir, hdfsWorkDir, useSge, seqwareJar, threadsSgeParamFormat, maxMemorySgeParamFormat); doc.setRootElement(adag.serializeXML()); serializer.output(doc, out); out.flush(); } catch (IOException e) { Log.error(e); ret.setExitStatus(ReturnValue.FAILURE); } return ret; } }