/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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. */ package org.apache.oodt.cas.cli.option; //JDK imports import java.util.ArrayList; import java.util.List; //OODT imports import org.apache.oodt.cas.cli.option.require.RequirementRule; /** * {@link CmdLineOption} which implements the basic methods for any * {@link CmdLineOption}. Can be used as-is or extends to add additional option * features. * * @author bfoster (Brian Foster) */ public class SimpleCmdLineOption implements CmdLineOption { private String shortOption; private String longOption; private String description; private boolean repeating; private String argsDescription; private boolean required; private List<RequirementRule> requirementRules; private boolean hasArgs; private List<String> staticArgs; private boolean isSubOption; private Class<?> type; public SimpleCmdLineOption() { argsDescription = "arg"; repeating = false; required = false; hasArgs = false; isSubOption = false; type = String.class; requirementRules = new ArrayList<RequirementRule>(); } public SimpleCmdLineOption(String shortOption, String longOption, String description, boolean hasArgs) { this(); this.shortOption = shortOption; this.longOption = longOption; this.description = description; this.hasArgs = hasArgs; } public Class<?> getType() { return type; } public void setType(Class<?> type) { this.type = type; } public String getShortOption() { return shortOption; } public void setShortOption(String shortOption) { this.shortOption = shortOption; } public String getLongOption() { return longOption; } public void setLongOption(String longOption) { this.longOption = longOption; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public boolean isRepeating() { return repeating; } public void setRepeating(boolean repeating) { this.repeating = repeating; } public boolean hasArgs() { return hasArgs; } public void setHasArgs(boolean hasArgs) { this.hasArgs = hasArgs; } public void setArgsDescription(String argDescription) { this.argsDescription = argDescription; } public String getArgsDescription() { return argsDescription; } public void setStaticArgs(List<String> staticArgs) { this.staticArgs = staticArgs; } public List<String> getStaticArgs() { return staticArgs; } public boolean hasStaticArgs() { return staticArgs != null; } public void setRequired(boolean required) { this.required = required; } public boolean isRequired() { return required; } public List<RequirementRule> getRequirementRules() { return this.requirementRules; } public void setRequirementRules(List<RequirementRule> requirementRules) { this.requirementRules = requirementRules; } public void setIsSubOption(boolean isSubOption) { this.isSubOption = isSubOption; } public boolean isSubOption() { return isSubOption; } @Override public boolean equals(Object obj) { if (obj instanceof CmdLineOption) { SimpleCmdLineOption compareObj = (SimpleCmdLineOption) obj; return compareObj.shortOption.equals(this.shortOption) || compareObj.longOption.equals(this.longOption); } else { return false; } } @Override public int hashCode() { return longOption.hashCode(); } public String toString() { return "[longOption='" + longOption + "',shortOption='" + shortOption + "',description='" + description + "']"; } }