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

codegen.templates.Option Maven / Gradle / Ivy

There is a newer version: 0.6
Show newest version
<@pp.dropOutputFile /> 
<#list commandDefs as def> 
<#if def.options?size != 0> 
<#global cmd=def.command>
<#global simpleName=cmd.simpleName+"Option">
<@pp.changeOutputFile name=pp.pathTo("/"+def.pkg.path+"/"+simpleName+".java")/> 
package ${def.pkg.name};

import java.util.Collections;
import java.util.EnumSet;
import java.util.Iterator;

import org.unix4j.option.Option;
import ${cmd.pkg.name}.${cmd.simpleName};

/**
 * Options for the {@link ${cmd.simpleName} ${def.commandName}} command.
 * 

* For most applications, it may be more convenient to use {@link ${cmd.simpleName}#Options} * instead of the option constants defined here. *

<#include "/include/options-javadoc.java"> */ public enum ${simpleName} implements Option, ${cmd.simpleName}Options { <#foreach opt in def.options?values> /** * Option {@code --${opt.name}}, {@code -${opt.acronym}}: * ${opt.desc} */ ${opt.name}('${opt.acronym}')<#if opt_has_next>,<#else>; private final char acronym; private ${simpleName}(char acronym) { this.acronym = acronym; } @Override public Class<${simpleName}> optionType() { return ${simpleName}.class; } /** * Returns the option with the given {@code acronym}, or {@code null} if no * such option is found. * * @param acronym the option {@link #acronym() acronym} * @return the option with the given {@code acronym} or {@code null} if it * is not found */ public static ${simpleName} findByAcronym(char acronym) { for (final ${simpleName} opt : values()) { if (opt.acronym() == acronym) return opt; } return null; } @Override public char acronym() { return acronym; } @Override public boolean isSet(${simpleName} option) { return equals(option); } /** * Returns a new set with {@code this} active option. * * @return a new set containing this option */ @Override public EnumSet<${simpleName}> asSet() { return EnumSet.of(this); } /** * Returns an immutable iterator returning o single element: {@code this} * option. * * @return an immutable iterator with {@code this} active option. */ @Override public Iterator<${simpleName}> iterator() { return Collections.singleton(this).iterator(); } /** * Returns 1 as this is a set with a single element: {@code this} option * * @return one */ @Override public int size() { return 1; } /** * Returns true if the {@link Option#acronym() acronym} should be used for * the specified {@code option} in string representations. *

* This method returns always true for all options. * * @param option * the option of interest * @return always true indicating that option acronyms should be used in * string representations for all options */ @Override public boolean useAcronymFor(${simpleName} option) { return true; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy