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

io.bdeploy.bhive.op.ObjectExistsOperation Maven / Gradle / Ivy

Go to download

Public API including dependencies, ready to be used for integrations and plugins.

There is a newer version: 7.3.6
Show newest version
package io.bdeploy.bhive.op;

import java.util.Collection;
import java.util.LinkedHashSet;
import java.util.Set;

import io.bdeploy.bhive.BHive;
import io.bdeploy.bhive.ReadOnlyOperation;
import io.bdeploy.bhive.audit.AuditParameterExtractor.AuditStrategy;
import io.bdeploy.bhive.audit.AuditParameterExtractor.AuditWith;
import io.bdeploy.bhive.model.ObjectId;
import io.bdeploy.bhive.op.ObjectExistsOperation.Result;
import io.bdeploy.common.ActivityReporter.Activity;

/**
 * Checks whether the given {@link ObjectId}s exist in the {@link BHive}.
 */
@ReadOnlyOperation
public class ObjectExistsOperation extends BHive.Operation {

    @AuditWith(AuditStrategy.COLLECTION_SIZE)
    private final Set objects = new LinkedHashSet<>();

    @Override
    public Result call() throws Exception {
        Result result = new Result();
        try (Activity activity = getActivityReporter().start("Looking up Objects", objects.size())) {
            for (ObjectId o : objects) {
                if (Boolean.TRUE.equals(getObjectManager().db(x -> x.hasObject(o)))) {
                    result.existing.add(o);
                } else {
                    result.missing.add(o);
                }
                activity.worked(1);
            }
        }
        return result;
    }

    /**
     * Add an {@link ObjectId} to check for existence
     */
    public ObjectExistsOperation addObject(ObjectId obj) {
        objects.add(obj);
        return this;
    }

    /**
     * Add all {@link ObjectId} to check for existence
     */
    public ObjectExistsOperation addAll(Collection objs) {
        objects.addAll(objs);
        return this;
    }

    /**
     * Result object indicating what is missing and existing.
     */
    public static class Result {

        /**
         * Objects that are existing
         */
        public final Set existing = new LinkedHashSet<>();

        /**
         * Objects that are missing
         */
        public final Set missing = new LinkedHashSet<>();

        /**
         * Returns whether the given objects is existing.
         */
        public boolean isExisting(ObjectId obj) {
            return existing.contains(obj);
        }

        /**
         * Returns whether the given objects is missing.
         */
        public boolean isMissing(ObjectId obj) {
            return missing.contains(obj);
        }

    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy