view env/lib/python3.9/site-packages/schema_salad/java/main_utils/OneOrListOf.java @ 0:4f3585e2f14b draft default tip

"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
author shellac
date Mon, 22 Mar 2021 18:12:50 +0000
parents
children
line wrap: on
line source

package ${package}.utils;

import java.util.List;
import java.util.Optional;

public class OneOrListOf<T> {
    private Optional<T> object;
    private Optional<List<T>> objects;

    private OneOrListOf(final T object, final List<T> objects) {
        this.object = Optional.ofNullable(object);
        this.objects = Optional.ofNullable(objects);
    }

    public static <T> OneOrListOf<T> oneOf(T object) {
        return new OneOrListOf(object, null);
    }

    public static <T> OneOrListOf<T> listOf(List<T> objects) {
        assert objects != null;
        return new OneOrListOf(null, objects);
    }

    public boolean isOne() {
        return this.getOneOptional().isPresent();
    }

    public boolean isList() {
        return this.getListOptional().isPresent();
    }

    public Optional<T> getOneOptional() {
        return this.object;
    }
    
    public Optional<List<T>> getListOptional() {
        return this.objects;
    }

    public T getOne() {
        return this.getOneOptional().get();
    }

    public List<T> getList() {
        return this.getListOptional().get();
    }

}