package de.axone.function; public abstract class AbstractArgumentDescription<T> implements ArgumentDescription<T> { private final String name; private final String description; private final boolean isMandatory; private final boolean isNamed; private final String defaultValue; public AbstractArgumentDescription( String name, String description, boolean isMandatory, boolean isNamed, String defaultValue ){ this.name = name; this.description = description; this.isMandatory = isMandatory; this.isNamed = isNamed; this.defaultValue = defaultValue; } @Override public String name() { return name; } @Override public String description() { return description; } @Override public boolean isMandatory(){ return isMandatory; } @Override public boolean isNamed(){ return isNamed; } @Override public String defaultValue(){ return defaultValue; } @Override public String toString(){ StringBuilder result = new StringBuilder(); result .append( name.toUpperCase() ) .append( ": " ) .append( description ); if( isNamed ) result.append( " NAMED" ); if( isMandatory ) result.append( " MANDATORY" ); if( defaultValue != null ) result.append( " DEFAULT: " + defaultValue ); return result.toString(); } }