| /* |
| * Copyright 2001-2004 The Apache Software Foundation. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| // This file is pulled from package org.apache.avalon.excalibur.cli Excalibur |
| // version 4.1 (Jan 30, 2002). Only the package name has been changed. |
| package org.apache.axis.utils; |
| |
| import java.util.Arrays; |
| |
| /** |
| * Basic class describing an instance of option. |
| * |
| * @author <a href="mailto:peter@apache.org">Peter Donald</a> |
| * @since 4.0 |
| */ |
| public final class CLOption |
| { |
| /** |
| * Value of {@link #getId} when the option is a text argument. |
| */ |
| public static final int TEXT_ARGUMENT = 0; |
| |
| private final int m_id; |
| private String[] m_arguments; |
| |
| /** |
| * Retrieve argument to option if it takes arguments. |
| * |
| * @return the (first) argument |
| */ |
| public final String getArgument() |
| { |
| return getArgument( 0 ); |
| } |
| |
| /** |
| * Retrieve indexed argument to option if it takes arguments. |
| * |
| * @param index The argument index, from 0 to |
| * {@link #getArgumentCount()}-1. |
| * @return the argument |
| */ |
| public final String getArgument( final int index ) |
| { |
| if( null == m_arguments || index < 0 || index >= m_arguments.length ) |
| { |
| return null; |
| } |
| else |
| { |
| return m_arguments[ index ]; |
| } |
| } |
| |
| /** |
| * Retrieve id of option. |
| * |
| * The id is eqivalent to character code if it can be a single letter option. |
| * |
| * @return the id |
| */ |
| public final int getId() |
| { |
| return m_id; |
| } |
| |
| /** |
| * Constructor taking an id (that must be a proper character code) |
| * |
| * @param id the new id |
| */ |
| public CLOption( final int id ) |
| { |
| m_id = id; |
| } |
| |
| /** |
| * Constructor taking argument for option. |
| * |
| * @param argument the argument |
| */ |
| public CLOption( final String argument ) |
| { |
| this( TEXT_ARGUMENT ); |
| addArgument( argument ); |
| } |
| |
| /** |
| * Mutator of Argument property. |
| * |
| * @param argument the argument |
| */ |
| public final void addArgument( final String argument ) |
| { |
| if( null == m_arguments ) m_arguments = new String[] { argument }; |
| else |
| { |
| final String[] arguments = new String[ m_arguments.length + 1 ]; |
| System.arraycopy( m_arguments, 0, arguments, 0, m_arguments.length ); |
| arguments[ m_arguments.length ] = argument; |
| m_arguments = arguments; |
| } |
| } |
| |
| /** |
| * Get number of arguments. |
| */ |
| public final int getArgumentCount() |
| { |
| if( null == m_arguments ) |
| { |
| return 0; |
| } |
| else |
| { |
| return m_arguments.length; |
| } |
| } |
| |
| /** |
| * Convert to String. |
| * |
| * @return the string value |
| */ |
| public final String toString() |
| { |
| final StringBuffer sb = new StringBuffer(); |
| sb.append( "[Option " ); |
| sb.append( (char)m_id ); |
| |
| if( null != m_arguments ) |
| { |
| sb.append( ", " ); |
| sb.append( Arrays.asList( m_arguments ) ); |
| } |
| |
| sb.append( " ]" ); |
| |
| return sb.toString(); |
| } |
| } |