| package org.kohsuke.args4j.spi; |
| |
| import org.kohsuke.args4j.CmdLineException; |
| import org.kohsuke.args4j.CmdLineParser; |
| import org.kohsuke.args4j.OptionDef; |
| |
| import java.util.ArrayList; |
| |
| /** |
| * <p> |
| * An {@link OptionHandler} for handling {@link String[]} types. Can handle arrays of strings. |
| * </p> |
| * <p> |
| * <h1>How it works:</h1> |
| * Example for parameter -s, which is String[] type:<br> |
| * java -jar aaa.jar -s banan hruska jablko<br> |
| * java -jar aaa.jar -s banan "hruska jablko"<br> |
| * java -jar aaa.jar -s "banan hruska jablko"<br> |
| * java -jar aaa.jar -s banan hruska jablko -l 4 -r<br> |
| * java -jar aaa.jar -t 222 -s banan hruska jablko -r<br><br> |
| * It will handle all of these posibilites. This OptionHandler scans for parameter which begins |
| * with "-". If it found it, it will stop. |
| * </p> |
| * |
| * @author PlainText,LuVar |
| * |
| */ |
| public class StringArrayOptionHandler extends OptionHandler<String[]> { |
| |
| public StringArrayOptionHandler(CmdLineParser parser, OptionDef option, Setter<? super String[]> setter) { |
| super(parser, option, setter); |
| } |
| |
| /** |
| * <p> |
| * Returns "STRING[]". |
| * </p> |
| * |
| * @return return "STRING[]"; |
| */ |
| @Override |
| public String getDefaultMetaVariable() { |
| return "STRING[]"; |
| } |
| |
| /** |
| * <p> |
| * Tryies to parse String[] argument from {@link Parameters}. |
| * </p> |
| */ |
| @Override |
| public int parseArguments(Parameters params) throws CmdLineException { |
| int counter = 0; |
| ArrayList<String> values = new ArrayList<String>(); |
| while(true) { |
| String param; |
| try { |
| param = params.getParameter(counter); |
| } catch (CmdLineException ex) { |
| break; |
| } |
| if(param.startsWith("-")) { |
| break; |
| } |
| |
| for (String str : param.split(" ")) { |
| values.add(str); |
| } |
| counter++; |
| }//while true |
| |
| // to work around a javac bug in Java1.5, we need to first assign this to |
| // the raw type. |
| Setter s = this.setter; |
| s.addValue(values.toArray(new String[values.size()])); |
| return counter; |
| } |
| |
| } |