All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.kohsuke.args4j.spi.DelimitedOptionHandler Maven / Gradle / Ivy

package org.kohsuke.args4j.spi;

import org.kohsuke.args4j.CmdLineException;
import org.kohsuke.args4j.CmdLineParser;
import org.kohsuke.args4j.Option;
import org.kohsuke.args4j.OptionDef;

import java.util.List;

/**
 * Partial {@link OptionHandler} implementation that takes a single value to the option,
 * which is then gets split into individual tokens using fixed delimiter.
 *
 * 

* This class is marked as {@code abstract} even though it has no abstract methods * to indicate that the class cannot be used by itself in {@link Option#handler()}, * due to the extra argument that it takes. * * @author kmahoney */ public abstract class DelimitedOptionHandler extends OptionHandler { protected final String delimiter; protected final OneArgumentOptionHandler individualOptionHandler; public DelimitedOptionHandler(CmdLineParser parser, OptionDef option, Setter setter, String delimiter, OneArgumentOptionHandler individualOptionHandler) { super(parser, option, setter); this.delimiter = delimiter; this.individualOptionHandler = individualOptionHandler; } @Override public int parseArguments(Parameters params) throws CmdLineException { String full = params.getParameter(0); String[] delimitedStrs = full.split(delimiter); for (String delimitedStr : delimitedStrs) { setter.addValue(individualOptionHandler.parse(delimitedStr)); } // The number of Parameters consumed (not the number set) return 1; } @Override public String getDefaultMetaVariable() { final String tMetaVar = individualOptionHandler.getDefaultMetaVariable(); if (tMetaVar == null || tMetaVar.trim().isEmpty()) return tMetaVar; return "<" + tMetaVar + delimiter + tMetaVar + delimiter + "...>"; } /** * Prints the default value by introspecting the current setter as {@link Getter}. * * @return null if the current value of the setter isn't available. */ public String printDefaultValue() { if (setter instanceof Getter) { Getter getter = (Getter)setter; List defaultValues = getter.getValueList(); StringBuilder buf = new StringBuilder(); for (T v : defaultValues) { if (buf.length()>0) buf.append(delimiter); buf.append(print(v)); } return buf.toString(); } return null; } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy