/* * This file or a portion of this file is licensed under the terms of * the Globus Toolkit Public License, found in file GTPL, or at * http://www.globus.org/toolkit/download/license.html. This notice must * appear in redistributions of this file, with or without modification. * * Redistributions of this Software, with or without modification, must * reproduce the GTPL in: (1) the Software, or (2) the Documentation or * some other similar material which is provided with the Software (if * any). * * Copyright 1999-2004 University of Chicago and The University of * Southern California. All rights reserved. */ package org.griphyn.vdl.util; import java.util.Iterator; import java.io.*; import org.griphyn.vdl.dax.*; /** * Convert a dag structure into the new CoG's XML format for * visualization. * * @author Jens-S. Vöckler * @author Yong Zhao * @version $Revision$ */ public class DAX2CoG { /** * Converts a given DAX into CoG visualizier XML. * * @param w is a writer onto which to dump the generated XML. * @param dax is the input ADAG. * @throws IOException if the stream write runs into trouble. */ public static void toString( Writer w, ADAG dax ) throws IOException { String newline = System.getProperty("line.separator","\r\n"); // start graph w.write( "<graph>" ); w.write( newline ); // start nodes for ( Iterator i=dax.iterateJob(); i.hasNext(); ) { Job job = (Job) i.next(); w.write( " <node nodeid=\"" ); w.write( job.getID() ); w.write( "\" name=\"" ); w.write( job.getName() ); w.write( "\"/>" ); w.write( newline ); } // start edges for ( Iterator c=dax.iterateChild(); c.hasNext();) { Child child = (Child) c.next(); String name = child.getChild(); for ( Iterator p=child.iterateParent(); p.hasNext(); ) { w.write( " <edge to=\"" ); w.write( name ); w.write( "\" from=\"" ); w.write( (String) p.next() ); w.write( "\"/>" ); w.write( newline ); } } // done w.write("</graph>"); w.write( newline ); w.flush(); } /** * Converts a DAGMan <code>.dag</code> file into a Peudo-DAX. * * @param dag is a File pointing to the DAG file * @return a Pseudo DAX, or null in case of error. * @throws IOException if reading the DAGMan file fails. */ public static ADAG DAGMan2DAX( File dag ) { // sanity check if ( dag == null ) return null; ADAG result = new ADAG(); return result; } }