/** * Copyright (c) 2013-2016, The SeedStack authors <http://seedstack.org> * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ package org.seedstack.seed.core.internal.command; import com.google.common.base.Strings; import org.seedstack.seed.command.Argument; import java.lang.reflect.Field; /** * Holds the definition of a command argument. */ class ArgumentDefinition implements Comparable<ArgumentDefinition> { private final Field field; private final Argument argument; ArgumentDefinition(Argument argument, Field field) { this.field = field; this.argument = argument; } Field getField() { return field; } String getName() { return Strings.isNullOrEmpty(argument.name()) ? "arg" + argument.index() : argument.name(); } String getDescription() { return argument.description(); } boolean isMandatory() { return argument.mandatory(); } String getDefaultValue() { return argument.defaultValue(); } Argument getAnnotation() { return argument; } @Override public int compareTo(ArgumentDefinition o) { return Integer.valueOf(argument.index()).compareTo(o.argument.index()); } @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } return argument.index() == ((ArgumentDefinition) o).argument.index(); } @Override public int hashCode() { return Integer.valueOf(argument.index()).hashCode(); } }