/*
* 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.CommonProperties;
import edu.isi.pegasus.common.util.Version;
import java.util.*;
import gnu.getopt.*;
/**
* This class deletes annotations for definition's and lfn's
*
* @author Jens-S. Vöckler
* @author Yong Zhao
* @version $Revision$
*
*/
public class TestProps extends Toolkit
{
/**
* String for usage
*/
public static String m_usage = "";
/**
* Constructor
*/
public TestProps(String appName)
{
super(appName);
}
/**
* Print the usage string
*/
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 + " [-c] [-u] | [-V]" );
System.out.println( linefeed +
"Options: " + linefeed +
" -V|--version print version information and exit." + linefeed +
" -h|--help print this message." + linefeed +
" --verbose increases the verbosity level." + linefeed +
" -c|--concise print in concise format instead of filling in blanks." + linefeed +
" -u|--unsorted print in no particular sorting order." + linefeed );
}
/**
* Creates a set of options.
*/
protected LongOpt[] generateValidOptions()
{
LongOpt[] lo = new LongOpt[5];
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( "unsorted", LongOpt.NO_ARGUMENT, null, 'u' );
lo[4] = new LongOpt( "concise", LongOpt.NO_ARGUMENT, null, 'c' );
return lo;
}
/**
* dump the properties after CommonProperties had parsed them.
*/
public static void main(String[] args)
{
int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;
boolean unsorted = false;
boolean concise = false;
try {
// create an instance
TestProps me = new TestProps("show-properties");
// parse CLI options
Getopt opts = new Getopt( me.m_application, args,
"chuV", 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 'c':
concise = true;
break;
case 'u':
unsorted = true;
break;
default:
case 'h':
me.showUsage();
return;
}
}
// create and read all properties
CommonProperties v = CommonProperties.instance();
// sort property keys into a tree set (sorted set)
// while obtaining minimum and maximum key lengths
Collection keys = null;
if ( unsorted ) keys = new ArrayList();
else keys = new TreeSet();
for ( Enumeration e=v.propertyNames(); e.hasMoreElements(); ) {
String key = (String) e.nextElement();
int len = key.length();
if ( len > max ) max = len;
if ( len < min ) min = len;
keys.add(key);
}
// create sufficient spaces to accomodate the smallest key
StringBuffer space = new StringBuffer(max-min+1);
for ( int i=min; i<=max; ++i ) space.append(' ');
// print all keys
for ( Iterator i=keys.iterator(); i.hasNext(); ) {
String key = (String) i.next();
if ( concise )
System.out.println( key + "=" + v.getProperty(key) );
else
System.out.println( key + space.substring( 0, max-key.length() ) +
" " + v.getProperty(key) );
}
} catch(Exception e) {
e.printStackTrace();
}
}
}