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

io.molr.commons.domain.MissionParameter Maven / Gradle / Ivy

package io.molr.commons.domain;

import java.util.Objects;

import static java.util.Objects.requireNonNull;

public final class MissionParameter {

    private final Placeholder placeholder;
    private final boolean required;
    private final T defaultValue;

    private MissionParameter(Placeholder placeholder, T defaultValue, boolean required) {
        this.placeholder = requireNonNull(placeholder, "placeholder must not be null");
        this.required = required;
        /* null is allowed for the default value*/
        this.defaultValue = defaultValue;
    }

    public static  MissionParameter required(Placeholder placeholder) {
        return new MissionParameter(placeholder, null, true);
    }

    public static  MissionParameter optional(Placeholder placeholder) {
        return new MissionParameter(placeholder, null, false);
    }

    public MissionParameter withDefault(T newDefaultValue) {
        return new MissionParameter<>(placeholder, newDefaultValue, this.required);
    }

    public boolean isRequired() {
        return this.required;
    }

    public T defaultValue() {
        return this.defaultValue;
    }

    public Placeholder placeholder() {
        return this.placeholder;
    }


    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        MissionParameter that = (MissionParameter) o;
        return required == that.required &&
                Objects.equals(placeholder, that.placeholder) &&
                Objects.equals(defaultValue, that.defaultValue);
    }

    @Override
    public int hashCode() {
        return Objects.hash(placeholder, required, defaultValue);
    }

    @Override
    public String toString() {
        return "MissionParameter{" +
                "placeholder=" + placeholder +
                ", required=" + required +
                ", defaultValue=" + defaultValue +
                '}';
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy