/* * 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 edu.isi.pegasus.common.util.Currently; import edu.isi.pegasus.common.util.Version; import org.griphyn.vdl.parser.*; import org.griphyn.vdl.classes.*; import org.griphyn.vdl.util.Logging; import org.griphyn.vdl.directive.VDLtConvert; import java.io.Reader; import java.io.Writer; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import gnu.getopt.*; /** * Test calls to parse the a given filename and produce XML from it. * * @see org.griphyn.vdl.parser.VDLtParser */ public class VDLtConv extends Toolkit { /** * module local constructor for a toolkit application. * @param appName is the name of the application to be displayed */ VDLtConv( 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 + " [-n vdlns] [-v vdlvs] VDLt VDLx" + linefeed + " or: " + this.m_application + " [-n vdlns] [-v vdlvs] VDLt > VDLx" + linefeed + " or: " + this.m_application + " [-n vdlns] [-v vdlvs] < VDLt > VDLx" ); System.out.println( linefeed + "Generic options: " + linefeed + " -V|--version print version information and exit." + linefeed + " --verbose increases the verbosity level." + linefeed + " -n|--vdlns ns generates default namespace ns, default is none." + linefeed + " -v|--vdlvs vs geneartes default version vs, default is none." + linefeed ); } /** * Creates a set of long options. */ protected LongOpt[] generateValidOptions() { LongOpt[] lo = new LongOpt[7]; lo[0] = new LongOpt( "version", LongOpt.NO_ARGUMENT, null, 'V' ); lo[1] = new LongOpt( "help", LongOpt.NO_ARGUMENT, null, 'h' ); lo[2] = new LongOpt( "verbose", LongOpt.NO_ARGUMENT, null, 1 ); lo[3] = new LongOpt( "vdlvs", LongOpt.REQUIRED_ARGUMENT, null, 'v' ); lo[4] = new LongOpt( "vdlns", LongOpt.REQUIRED_ARGUMENT, null, 'n' ); lo[5] = new LongOpt( "namespace", LongOpt.REQUIRED_ARGUMENT, null, 'n' ); lo[6] = new LongOpt( "ns", LongOpt.REQUIRED_ARGUMENT, null, 'n' ); return lo; } public static void main( String args[] ) { String vdlns = null; String vdlvs = null; org.griphyn.vdl.toolkit.VDLtConv me = new org.griphyn.vdl.toolkit.VDLtConv( "vdlt2vdlx"); try { // obtain commandline options first -- we may need the database stuff Getopt opts = new Getopt( me.m_application, args, "hn:v:V", me.generateValidOptions() ); opts.setOpterr(false); int option = 0; while ( (option = opts.getopt()) != -1 ) { switch ( option ) { case 1: me.increaseVerbosity(); break; case 'V': System.out.println( "$Id$"); System.out.println( "VDS version " + Version.instance().toString() ); return; case 'n': // default namespace option vdlns = opts.getOptarg(); break; case 'v': // default version option vdlvs = opts.getOptarg(); break; case '?': System.out.println( "Invalid option '" + (char) opts.getOptopt() + "'" ); default: case 'h': me.showUsage(); return; } } Reader rd = null; Writer wr = 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" ); } VDLtConvert convert = new VDLtConvert(); convert.VDLt2VDLx( rd, wr, vdlns, vdlvs ); rd.close(); wr.flush(); wr.close(); } catch ( VDLtParserException e ) { me.m_logger.log( "default", 0, "syntactical error" ); System.err.println( e.getMessage() ); System.exit(1); } catch ( VDLtScannerException e ) { me.m_logger.log( "default", 0, "lexical error" ); System.err.println( e.getMessage() ); System.exit(1); } catch ( IOException e ) { me.m_logger.log( "default", 0, "I/O error" ); System.err.println( e.getMessage() ); System.exit(1); } catch ( RuntimeException rte ) { me.m_logger.log( "default", 0, "runtime error" ); System.err.println( rte.getMessage() ); System.exit(1); } catch ( Exception e ) { me.m_logger.log( "default", 0, "unspecified error " ); System.err.println( e.getMessage() ); e.printStackTrace(System.err); System.exit(1); } } }