/* * 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.planner; import java.util.Iterator; import org.griphyn.vdl.dax.*; import org.griphyn.vdl.planner.Graph; /** * This class converts a given DAX into the internal representation of a * graph. * * @author Jens-S. Vöckler * @author Yong Zhao * @version $Revision$ * * @see Graph */ public class DAX2Graph { /** * Converts a DAX into the internal representation of a graph. * * @param adag is the parsed DAX's internal representation. * @return our internal representation of a graph that we can sort on. */ public static Graph DAG2Graph( ADAG adag ) { Graph result = new Graph(); // add all nodes for ( Iterator i=adag.iterateJob(); i.hasNext(); ) result.addVertex( ((Job)i.next()).getID() ); // add all edges for ( Iterator i=adag.iterateChild(); i.hasNext(); ) { Child c = (Child) i.next(); String child = c.getChild(); for ( Iterator j=c.iterateParent(); j.hasNext(); ) { String parent = (String) j.next(); result.addArc( parent, child ); } } return result; } /** * Simple test program. */ public static void main(String[] args) { // construct a fake diamond DAG as DAX w/o any real transformations. ADAG adag = new ADAG(); Job A = new Job(); Job B = new Job(); Job C = new Job(); Job D = new Job(); A.setID("A"); B.setID("B"); C.setID("C"); D.setID("D"); adag.addJob(A); adag.addJob(B); adag.addJob(C); adag.addJob(D); adag.addChild("C","A"); adag.addChild("C","B"); adag.addChild("D","C"); // convert DAX into graph Graph g = DAG2Graph(adag); // show System.out.println( g.toString() ); } }