// Decompiled by: Fernflower v0.6 // Date: 16.01.2011 23:15:50 // Copyright: 2008-2009, Stiver // Home page: http://www.reversed-java.com package org.apache.commons.cli; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import org.apache.commons.cli.OptionValidator; public class Option implements Cloneable, Serializable { private static final long serialVersionUID = 1L; public static final int UNINITIALIZED = -1; public static final int UNLIMITED_VALUES = -2; private String opt; private String longOpt; private String argName; private String description; private boolean required; private boolean optionalArg; private int numberOfArgs; private Object type; private List values; private char valuesep; public Option(String var1, String var2) throws IllegalArgumentException { this(var1, (String)null, false, var2); } public Option(String var1, boolean var2, String var3) throws IllegalArgumentException { this(var1, (String)null, var2, var3); } public Option(String var1, String var2, boolean var3, String var4) throws IllegalArgumentException { this.argName = "arg"; this.numberOfArgs = -1; this.values = new ArrayList(); OptionValidator.validateOption(var1); this.opt = var1; this.longOpt = var2; if(var3) { this.numberOfArgs = 1; } this.description = var4; } public int getId() { return this.getKey().charAt(0); } String getKey() { return this.opt == null?this.longOpt:this.opt; } public String getOpt() { return this.opt; } public Object getType() { return this.type; } public void setType(Object var1) { this.type = var1; } public String getLongOpt() { return this.longOpt; } public void setLongOpt(String var1) { this.longOpt = var1; } public void setOptionalArg(boolean var1) { this.optionalArg = var1; } public boolean hasOptionalArg() { return this.optionalArg; } public boolean hasLongOpt() { return this.longOpt != null; } public boolean hasArg() { return this.numberOfArgs > 0 || this.numberOfArgs == -2; } public String getDescription() { return this.description; } public void setDescription(String var1) { this.description = var1; } public boolean isRequired() { return this.required; } public void setRequired(boolean var1) { this.required = var1; } public void setArgName(String var1) { this.argName = var1; } public String getArgName() { return this.argName; } public boolean hasArgName() { return this.argName != null && this.argName.length() > 0; } public boolean hasArgs() { return this.numberOfArgs > 1 || this.numberOfArgs == -2; } public void setArgs(int var1) { this.numberOfArgs = var1; } public void setValueSeparator(char var1) { this.valuesep = var1; } public char getValueSeparator() { return this.valuesep; } public boolean hasValueSeparator() { return this.valuesep > 0; } public int getArgs() { return this.numberOfArgs; } void addValueForProcessing(String var1) { switch(this.numberOfArgs) { case -1: throw new RuntimeException("NO_ARGS_ALLOWED"); default: this.processValue(var1); } } private void processValue(String var1) { if(this.hasValueSeparator()) { char var2 = this.getValueSeparator(); for(int var3 = var1.indexOf(var2); var3 != -1 && this.values.size() != this.numberOfArgs - 1; var3 = var1.indexOf(var2)) { this.add(var1.substring(0, var3)); var1 = var1.substring(var3 + 1); } } this.add(var1); } private void add(String var1) { if(this.numberOfArgs > 0 && this.values.size() > this.numberOfArgs - 1) { throw new RuntimeException("Cannot add value, list full."); } else { this.values.add(var1); } } public String getValue() { return this.hasNoValues()?null:(String)this.values.get(0); } public String getValue(int var1) throws IndexOutOfBoundsException { return this.hasNoValues()?null:(String)this.values.get(var1); } public String getValue(String var1) { String var2 = this.getValue(); return var2 != null?var2:var1; } public String[] getValues() { return this.hasNoValues()?null:(String[])((String[])this.values.toArray(new String[this.values.size()])); } public List getValuesList() { return this.values; } public String toString() { StringBuffer var1 = (new StringBuffer()).append("[ option: "); var1.append(this.opt); if(this.longOpt != null) { var1.append(" ").append(this.longOpt); } var1.append(" "); if(this.hasArgs()) { var1.append("[ARG...]"); } else if(this.hasArg()) { var1.append(" [ARG]"); } var1.append(" :: ").append(this.description); if(this.type != null) { var1.append(" :: ").append(this.type); } var1.append(" ]"); return var1.toString(); } private boolean hasNoValues() { return this.values.equals(""); } public boolean equals(Object var1) { if(this == var1) { return true; } else if(var1 != null && this.getClass() == var1.getClass()) { Option var2 = (Option)var1; if(this.opt != null) { if(!this.opt.equals(var2.opt)) { return false; } } else if(var2.opt != null) { return false; } if(this.longOpt != null) { if(!this.longOpt.equals(var2.longOpt)) { return false; } } else if(var2.longOpt != null) { return false; } return true; } else { return false; } } public int hashCode() { int var1 = this.opt != null?this.opt.hashCode():0; var1 = 31 * var1 + (this.longOpt != null?this.longOpt.hashCode():0); return var1; } public Object clone() { try { Option var1 = (Option)super.clone(); var1.values = new ArrayList(this.values); return var1; } catch (CloneNotSupportedException var2) { throw new RuntimeException("A CloneNotSupportedException was thrown: " + var2.getMessage()); } } void clearValues() { this.values.clear(); } public boolean addValue(String var1) { throw new UnsupportedOperationException("The addValue method is not intended for client use. Subclasses should use the addValueForProcessing method instead. "); } }