/* * 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.toolkit; import java.io.*; import java.util.*; import edu.isi.pegasus.common.util.Version; import org.griphyn.vdl.dax.*; import org.griphyn.vdl.parser.DAXParser; import org.griphyn.vdl.util.Logging; import org.griphyn.vdl.util.DAX2CoG; import org.griphyn.vdl.util.ChimeraProperties; import gnu.getopt.*; /** * This class generates CoG XML from a DAX. * * @author Jens-S. Vöckler * @author Yong Zhao * @version $Revision$ * */ public class VizDAX2 extends Toolkit { /** * ctor: Constructs a new instance object with the given application name. */ public VizDAX2( String appName ) { super(appName); } /** * Implements printing the usage string onto stdout. */ public void showUsage() { String linefeed = System.getProperty( "line.separator", "\r\n" ); System.out.println( "$Id$" + linefeed + "VDS version " + Version.instance().toString() + linefeed ); System.out.println( "Usage: " + this.m_application + " [general] [-o cog] [dax]" ); System.out.println( linefeed + " -V|--version print version information and exit." + linefeed + " -v|--verbose increases the verbosity level." + linefeed + " -o|--output cog put the output into the file cog, defaults to stdout." + linefeed + " dax reads the specified dax file; if absent, uses stdin." + linefeed ); } /** * Creates a set of options. * @return the long option set. */ protected LongOpt[] generateValidOptions() { LongOpt[] lo = new LongOpt[4]; lo[0] = new LongOpt( "help", LongOpt.NO_ARGUMENT, null, 'h' ); lo[1] = new LongOpt( "version", LongOpt.NO_ARGUMENT, null, 'V' ); lo[2] = new LongOpt( "verbose", LongOpt.NO_ARGUMENT, null, 'v' ); lo[3] = new LongOpt( "output", LongOpt.REQUIRED_ARGUMENT, null, 'o' ); return lo; } /** * Get the DAX and generate shell scripts in the designated directory. */ public static void main(String[] args) { int result = 0; try { VizDAX2 me = new VizDAX2("dax2cog"); // get the commandline options Getopt opts = new Getopt( me.m_application, args, "ho:V", me.generateValidOptions() ); opts.setOpterr(false); String arg = null; String dot = null; int option = 0; while ( (option = opts.getopt()) != -1 ) { switch ( option ) { case 'V': System.out.println( "$Id$" ); System.out.println( "VDS version " + Version.instance().toString() ); return; case 'o': arg = opts.getOptarg(); if ( arg != null && arg.length() > 0 ) dot = arg; break; case 'v': me.increaseVerbosity(); break; case 'h': default: me.showUsage(); return; } } // there is exactly one mandatory argument String daxfn = ( opts.getOptind() < args.length ? args[opts.getOptind()] : null ); BufferedInputStream input = null; if ( daxfn == null || daxfn.equals("-") ) { input = new BufferedInputStream( System.in ); System.err.println( "# reminder: reading from stdin" ); } else { input = new BufferedInputStream( new FileInputStream(daxfn) ); } BufferedWriter output = new BufferedWriter( dot == null || dot.equals("-") ? new OutputStreamWriter(System.out) : // convert stream to writer new FileWriter(dot) ); // start the DAX parser me.m_logger.log( "app", 2, "Initializing DAX parser"); DAXParser daxparser = new DAXParser(ChimeraProperties.instance().getDAXSchemaLocation()); // parse the file me.m_logger.log( "app", 1, "Parsing the DAX file " + daxfn ); ADAG adag = daxparser.parse(input); if ( adag == null ) { // unable to parse throw new RuntimeException( "Unable to parse the DAX file " + daxfn ); } me.m_logger.log( "app", 1, "dumping XML output" ); DAX2CoG.toString( output, adag ); output.flush(); if ( dot != null ) output.close(); } catch ( RuntimeException rte ) { System.err.println( "ERROR: " + rte.getMessage() ); result = 1; } catch ( IOException ioe ) { System.err.println( "ERROR: " + ioe.getMessage() ); result = 1; } catch ( Exception e ) { e.printStackTrace(); System.err.println( "FATAL: " + e.getMessage() ); result = 2; } if ( result != 0 ) System.exit(result); } }