001 /*******************************************************************************
002 * Copyright (c) 2009 Progress Software, Inc.
003 *
004 * All rights reserved. This program and the accompanying materials
005 * are made available under the terms of the Eclipse Public License v1.0
006 * which accompanies this distribution, and is available at
007 * http://www.eclipse.org/legal/epl-v10.html
008 *
009 *******************************************************************************/
010 package org.fusesource.hawtjni.generator.util;
011
012 import org.apache.commons.cli.Option;
013
014 /**
015 * a better version of org.apache.commons.cli.OptionBuilder
016 * IDE provides nicer auto complete and less compiler warnings.
017 *
018 * @author <a href="http://hiramchirino.com">Hiram Chirino</a>
019 */
020 public class OptionBuilder {
021
022 private String id;
023 private String name;
024 private String description;
025 private boolean required;
026 private boolean optional;
027 private int args =-1;
028 private String arg;
029 private Object type;
030 private char sperator;
031
032 public static OptionBuilder ob() {
033 return new OptionBuilder();
034 }
035
036 public Option op() {
037 Option option = new Option( id!=null ? id : " ", description );
038 option.setLongOpt(name);
039 option.setRequired( required );
040 option.setOptionalArg(optional);
041 option.setType( type );
042 option.setValueSeparator(sperator);
043 if( arg !=null && args==-1 ) {
044 args=1;
045 }
046 option.setArgs(args);
047 option.setArgName(arg);
048 return option;
049 }
050
051 public OptionBuilder arg(String argName) {
052 this.arg = argName;
053 return this;
054 }
055
056 public OptionBuilder args(int args) {
057 this.args = args;
058 return this;
059 }
060
061 public OptionBuilder description(String description) {
062 this.description = description;
063 return this;
064 }
065
066 public OptionBuilder name(String lname) {
067 this.name = lname;
068 return this;
069 }
070
071 public OptionBuilder id(String name) {
072 this.id = name;
073 return this;
074 }
075
076 public OptionBuilder optional(boolean optional) {
077 this.optional = optional;
078 return this;
079 }
080
081 public OptionBuilder required(boolean required) {
082 this.required = required;
083 return this;
084 }
085
086 public OptionBuilder sperator(char sperator) {
087 this.sperator = sperator;
088 return this;
089 }
090
091 public OptionBuilder type(Object type) {
092 this.type = type;
093 return this;
094 }
095 }