/* * 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 edu.isi.pegasus.common.util.Version; import edu.isi.pegasus.common.util.Currently; import org.griphyn.vdl.classes.*; import org.griphyn.vdl.parser.*; import org.griphyn.vdl.classes.Definitions; import org.griphyn.vdl.util.Logging; import org.griphyn.vdl.directive.VDLxConvert; import org.xml.sax.InputSource; import gnu.getopt.*; /** * This class uses the <code>VDLxParser</code> to parse VDL XML * specification and output VDL textual specification. * * @author Jens-S. Vöckler * @author Yong Zhao * @version $Revision$ * * @see org.griphyn.vdl.parser.VDLxParser */ public class VDLx2VDLt extends Toolkit { VDLx2VDLt( String appName ) { super(appName); } 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 + " [-v] VDLxFile VDLtFile" + linefeed + " or: " + this.m_application + " [-v] VDLxFile > VDLtFile" + linefeed + " or: " + this.m_application + " [-v] < VDLxFile > VDLtFile" + linefeed + " or: " + this.m_application + " -V" ); System.out.println( linefeed + "Generic options: " + linefeed + " -V|--version print version information and exit." + linefeed + " -v|--verbose verbose mode, print parser details on stdout." + linefeed ); } /** * Creates a set of long options. */ protected LongOpt[] generateValidOptions() { LongOpt[] lo = new LongOpt[3]; lo[0] = new LongOpt( "version", LongOpt.NO_ARGUMENT, null, 'V' ); lo[1] = new LongOpt( "verbose", LongOpt.NO_ARGUMENT, null, 'v' ); lo[2] = new LongOpt( "help", LongOpt.NO_ARGUMENT, null, 'h' ); return lo; } /** * the works */ public static void main( String[] args ) { try { VDLx2VDLt me = new VDLx2VDLt("vdlx2vdlt"); // obtain commandline options first -- we may need the database stuff Getopt opts = new Getopt( me.m_application, args, "hvV", me.generateValidOptions() ); opts.setOpterr(false); 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 'v': option = me.increaseVerbosity(); if ( option == 1 ) me.m_logger.register( "parser", System.out, option ); else me.m_logger.setLevel( "parser", option ); break; case '?': System.out.println( "Invalid option '" + (char) opts.getOptopt() + "'" ); default: case 'h': me.showUsage(); return; } } // work Writer wr = null; Reader rd = null; int where = opts.getOptind(); switch ( args.length - where ) { case 2: wr = new BufferedWriter( new FileWriter(args[where+1]) ); rd = new BufferedReader( new FileReader(args[where+0]) ); break; case 1: wr = new OutputStreamWriter( System.out ); rd = new BufferedReader( new FileReader(args[where]) ); break; case 0: System.err.println( "# reminder: reading from stdin" ); wr = new OutputStreamWriter( System.out ); rd = new InputStreamReader( System.in ); break; default: me.showUsage(); throw new RuntimeException( "Illegal number of non-option arguments" ); } VDLxConvert convert = new VDLxConvert(); convert.VDLx2VDLt( rd, wr ); rd.close(); wr.flush(); wr.close(); } catch ( RuntimeException rte ) { System.err.println( "Runtime error: " + rte.getMessage() ); System.exit(1); } catch ( Exception e ) { System.err.println( "Stumbled over " + e.getMessage() ); e.printStackTrace(System.err); System.exit(1); } } }