/*
* 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.directive;
import java.io.*;
import java.util.*;
import org.griphyn.vdl.dax.*;
import org.griphyn.vdl.parser.DAXParser;
import org.griphyn.vdl.util.Logging;
import org.griphyn.vdl.util.DAX2DOT;
/**
* The class converts a DAX specification into other formats
* for visualization purposes.
*
* @see org.griphyn.vdl.parser.VDLxParser
*
* @author Jens-S. Vöckler
* @author Yong Zhao
* @version $Revision$
*/
public class Display extends Directive
{
/**
* instance variable that is managed by this interface for web
* services.
*/
private DAX2DOT m_dax;
/**
* Constructor.
* @throws IOException
* @throws MissingResourceException
*/
public Display()
throws IOException, MissingResourceException
{
super();
m_dax = new DAX2DOT();
}
/**
* Sets the graph size.
*
* @param h is the height in inches?
* @param w is the width in inches?
*/
public void setSize(double h, double w)
{
m_dax.setSize(h, w);
}
/**
* Determines whether to show derivations.
* @param showDV if true, also show the DVs
*/
public void setShowDV( boolean showDV )
{
m_dax.setShowDV(showDV);
}
/**
* Generates GraphViz dot format from the DAX specification.
* @param dax is the InputStream for the DAX
* @param showFiles specifies whether to show input/output files in
* the graph.
* @return a string of the GraphViz dot representation
* @throws IOException if there is a problem reading or writing
*/
public String DAX2DOT( InputStream dax, boolean showFiles )
throws IOException
{
// parse the dax file
Logging.instance().log( "display", 0, "Initializing dax parser");
DAXParser daxparser = new DAXParser(m_props.getDAXSchemaLocation());
Logging.instance().log( "display", 0, "parsing the dax...");
ADAG adag = daxparser.parse(dax);
if (adag == null) {
Logging.instance().log( "display", 0, "failed parsing the dax.");
return null;
}
return m_dax.toDOT(adag, showFiles);
}
/**
* Generates GraphViz dot format from the DAX specification.
* @param dax is the InputStream for the DAX
* @param writer is the target to output GraphViz dot representation
* @param showFiles specifies whether to show input/output files in
* the graph.
* @throws IOException if there is a problem reading or writing
*/
public void DAX2DOT( InputStream dax, Writer writer, boolean showFiles )
throws IOException
{
// parse the dax file
Logging.instance().log( "display", 0, "Initializing dax parser");
DAXParser daxparser = new DAXParser(m_props.getDAXSchemaLocation());
Logging.instance().log( "display", 0, "parsing the dax...");
ADAG adag = daxparser.parse(dax);
if (adag == null) {
Logging.instance().log( "display", 0, "failed parsing the dax.");
return;
}
m_dax.toDOT(adag, writer, showFiles);
}
/**
* Generates GraphViz dot format from the DAX specification.
* @param dax is the InputStream for the DAX
* @param writer is the target to output GraphViz dot representation
* @param showFiles specifies whether to show input/output files in
* the graph.
* @param jobURL is the base URL for jobs
* @param fileURL is the base URL for files
* @throws IOException if there is a problem reading or writing
*/
public void DAX2DOT( InputStream dax, Writer writer, boolean showFiles,
String jobURL, String fileURL )
throws IOException
{
// parse the dax file
Logging.instance().log( "display", 0, "Initializing dax parser");
DAXParser daxparser = new DAXParser(m_props.getDAXSchemaLocation());
Logging.instance().log( "display", 0, "parsing the dax...");
ADAG adag = daxparser.parse(dax);
if (adag == null) {
Logging.instance().log( "display", 0, "failed parsing the dax.");
return;
}
m_dax.toDOT(adag, writer, showFiles, jobURL, fileURL);
}
}