| CLOption.java |
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the docs/licenses/apache-1.1.txt file.
*/
// 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.jboss.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.
* <p/>
* 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();
}
}
| CLOption.java |