// Decompiled by: Fernflower v0.6
// Date: 16.01.2011 23:15:51
// 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.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.OptionGroup;
import org.apache.commons.cli.Util;
public class Options implements Serializable {
private static final long serialVersionUID = 1L;
private Map shortOpts = new HashMap();
private Map longOpts = new HashMap();
private List requiredOpts = new ArrayList();
private Map optionGroups = new HashMap();
public Options addOptionGroup(OptionGroup var1) {
Iterator var2 = var1.getOptions().iterator();
if(var1.isRequired()) {
this.requiredOpts.add(var1);
}
while(var2.hasNext()) {
Option var3 = (Option)var2.next();
var3.setRequired(false);
this.addOption(var3);
this.optionGroups.put(var3.getKey(), var1);
}
return this;
}
Collection getOptionGroups() {
return new HashSet(this.optionGroups.values());
}
public Options addOption(String var1, boolean var2, String var3) {
this.addOption(var1, (String)null, var2, var3);
return this;
}
public Options addOption(String var1, String var2, boolean var3, String var4) {
this.addOption(new Option(var1, var2, var3, var4));
return this;
}
public Options addOption(Option var1) {
String var2 = var1.getKey();
if(var1.hasLongOpt()) {
this.longOpts.put(var1.getLongOpt(), var1);
}
if(var1.isRequired()) {
if(this.requiredOpts.contains(var2)) {
this.requiredOpts.remove(this.requiredOpts.indexOf(var2));
}
this.requiredOpts.add(var2);
}
this.shortOpts.put(var2, var1);
return this;
}
public Collection getOptions() {
return Collections.unmodifiableCollection(this.helpOptions());
}
List helpOptions() {
return new ArrayList(this.shortOpts.values());
}
public List getRequiredOptions() {
return this.requiredOpts;
}
public Option getOption(String var1) {
var1 = Util.stripLeadingHyphens(var1);
return this.shortOpts.containsKey(var1)?(Option)this.shortOpts.get(var1):(Option)this.longOpts.get(var1);
}
public boolean hasOption(String var1) {
var1 = Util.stripLeadingHyphens(var1);
return this.shortOpts.containsKey(var1) || this.longOpts.containsKey(var1);
}
public OptionGroup getOptionGroup(Option var1) {
return (OptionGroup)this.optionGroups.get(var1.getKey());
}
public String toString() {
StringBuffer var1 = new StringBuffer();
var1.append("[ Options: [ short ");
var1.append(this.shortOpts.toString());
var1.append(" ] [ long ");
var1.append(this.longOpts);
var1.append(" ]");
return var1.toString();
}
}