litesoft
@ 422
litesoft / trunk / Java / ScarPlus / src / com / esotericsoftware / scar / support / Arguments.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
package com.esotericsoftware.scar.support; import java.util.*; import com.esotericsoftware.scar.*; import com.esotericsoftware.utils.*; /** * Stores command line arguments as 'String' name/value pairs. Arguments containing an equals sign are considered a name/value pair. All * other arguments are stored as a name/value pair with a "" value. */ @SuppressWarnings({"UnusedDeclaration"}) public class Arguments { public static class NameValuePair { private String mName, mValue; public NameValuePair( String pName, String pValue ) { mName = pName; mValue = pValue; } public String getName() { return mName; } public String getValue() { return mValue; } } private final Map<String, String> mParameters = new LinkedHashMap<String, String>(); public Arguments() { } public Arguments( String[] pArgs ) { for ( String zArg : pArgs ) { if ( null != (zArg = Utils.noEmpty( zArg )) ) { int at = zArg.indexOf( '=' ); if ( at == -1 ) { set( zArg, "" ); } else { set( zArg.substring( 0, at ), zArg.substring( at + 1 ).trim() ); } } } } private void set( String pName, String pValue ) { mParameters.put( normalizeName( pName ), pValue ); } /** * Get (and remove if there) the 'Next' Name/Value. * <p/> * Returns null means no more. */ public NameValuePair getNext() { if ( mParameters.isEmpty() ) { return null; } String zName = mParameters.keySet().iterator().next(); return new NameValuePair( zName, get( zName ) ); } /** * Get (and remove if there) the value assocciated w/ pName. * <p/> * Returns the value of the argument with the specified Name, * or "" if the argument was specified without a value, * or null if it was not specified. */ public String get( String pName ) { return mParameters.remove( normalizeName( pName ) ); } /** * Get (and remove if there) the value assocciated w/ pName. * <p/> * Returns the value of the argument with the specified Name, * or "" if the argument was specified without a value, * or pDefaultValue if it was not specified. */ public String get( String pName, String pDefaultValue ) { String zValue = get( pName ); return (zValue != null) ? zValue : pDefaultValue; } public int count() { return mParameters.size(); } private String normalizeName( String pName ) { return Util.assertNotEmpty( "Name", pName ).toLowerCase(); } public String toString() { StringBuilder buffer = new StringBuilder( 100 ); for ( String param : mParameters.keySet() ) { if ( buffer.length() > 1 ) { buffer.append( ' ' ); } buffer.append( param ); String value = get( param ); if ( "".equals( value ) ) { buffer.append( '=' ); buffer.append( value ); } } return buffer.toString(); } } |