com.aspectran.shell.command.option.OptionGroup Maven / Gradle / Ivy
/*
* Copyright (c) 2008-2024 The Aspectran Project
*
* 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.
*/
package com.aspectran.shell.command.option;
import java.io.Serial;
import java.io.Serializable;
import java.util.Collection;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* A group of mutually exclusive options.
*/
public class OptionGroup implements Serializable {
@Serial
private static final long serialVersionUID = 5281255012541670780L;
/** Hold the options */
private final Map optionMap = new LinkedHashMap<>();
/** The name of the selected option */
private String selected;
/** Specified whether this group is required */
private boolean required;
/**
* Add the specified {@code Option} to this group.
* @param option the option to add to this group
* @return this option group with the option added
*/
public OptionGroup addOption(Option option) {
// key - option name
// value - the option
optionMap.put(option.getKey(), option);
return this;
}
/**
* @return the names of the options in this group as a {@code Collection}
*/
public Collection getNames() {
// the key set is the collection of names
return optionMap.keySet();
}
/**
* @return the options in this group as a {@code Collection}
*/
public Collection