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

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

package io.bdeploy.bhive.op;

import static io.bdeploy.common.util.RuntimeAssert.assertNotNull;

import java.nio.file.Path;

import io.bdeploy.bhive.BHive;
import io.bdeploy.bhive.ReadOnlyOperation;
import io.bdeploy.bhive.model.ObjectId;
import io.bdeploy.bhive.model.Tree;
import io.bdeploy.bhive.objects.ReferenceHandler;
import io.bdeploy.common.ActivityReporter.Activity;

/**
 * Export a {@link Tree} recursively into a directory and return the
 */
@ReadOnlyOperation
public class ExportTreeOperation extends BHive.Operation {

    private Path target;
    private ObjectId treeId;
    private ReferenceHandler refHandler;

    @Override
    public Void call() throws Exception {
        assertNotNull(target, "Target path not set");
        assertNotNull(treeId, "Source tree not set");

        try (Activity activity = getActivityReporter().start("Exporting tree...", -1)) {
            getObjectManager().exportTree(treeId, target, refHandler);
        }

        return null;
    }

    /**
     * Set the path to export to. The given directory will be recursively filled
     * from the {@link BHive}.
     */
    public ExportTreeOperation setTargetPath(Path target) {
        this.target = target;
        return this;
    }

    public ExportTreeOperation setSourceTree(ObjectId treeId) {
        this.treeId = treeId;
        return this;
    }

    /**
     * Set a custom reference handler which takes care of nested (recursive) manifest references.
     */
    public ExportTreeOperation setReferenceHandler(ReferenceHandler handler) {
        this.refHandler = handler;
        return this;
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy