ModelPackageVariant.java

/**
 * Copyright (c) 2018 European Organisation for Nuclear Research (CERN), All Rights Reserved.
 */

package org.jmad.modelpack.domain;

import java.net.URI;
import java.util.Objects;

import static java.util.Objects.requireNonNull;

public class ModelPackageVariant {

    protected final ModelPackage modelPackage;
    protected final Variant variant;
    protected final URI uri;

    public ModelPackageVariant(URI uri, ModelPackage modelPackage, Variant variant) {
        this.uri = requireNonNull(uri, "URI must not be null");
        this.modelPackage = requireNonNull(modelPackage, "modelPackage must not be null");
        this.variant = requireNonNull(variant, "variant must not be null");
    }

    public ModelPackage modelPackage() {
        return this.modelPackage;
    }

    public Variant variant() {
        return this.variant;
    }

    public String fullName() {
        return modelPackage.name() + "-" + variant.fullName();
    }

    public URI uri() {
        return uri;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        ModelPackageVariant that = (ModelPackageVariant) o;
        return Objects.equals(modelPackage, that.modelPackage) &&
                Objects.equals(variant, that.variant) &&
                Objects.equals(uri, that.uri);
    }

    @Override
    public int hashCode() {
        return Objects.hash(modelPackage, variant, uri);
    }

    @Override
    public String toString() {
        return "ModelPackageVariant{" +
                "modelPackage=" + modelPackage +
                ", variant=" + variant +
                ", uri=" + uri +
                '}';
    }
}