BitmapCommit.java
- /*
- * Copyright (c) 2020, Google LLC and others
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Distribution License v. 1.0 which is available at
- * http://www.eclipse.org/org/documents/edl-v10.php.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
- package org.eclipse.jgit.internal.storage.pack;
- import org.eclipse.jgit.lib.AnyObjectId;
- import org.eclipse.jgit.lib.ObjectId;
- /**
- * A commit object for which a bitmap index should be built.
- */
- public final class BitmapCommit extends ObjectId {
- private final boolean reuseWalker;
- private final int flags;
- private final boolean addToIndex;
- BitmapCommit(AnyObjectId objectId, boolean reuseWalker, int flags) {
- super(objectId);
- this.reuseWalker = reuseWalker;
- this.flags = flags;
- this.addToIndex = false;
- }
- BitmapCommit(AnyObjectId objectId, boolean reuseWalker, int flags,
- boolean addToIndex) {
- super(objectId);
- this.reuseWalker = reuseWalker;
- this.flags = flags;
- this.addToIndex = addToIndex;
- }
- boolean isReuseWalker() {
- return reuseWalker;
- }
- int getFlags() {
- return flags;
- }
- /**
- * Whether corresponding bitmap should be added to PackBitmapIndexBuilder.
- *
- * @return true if the corresponding bitmap should be added to
- * PackBitmapIndexBuilder.
- */
- public boolean isAddToIndex() {
- return addToIndex;
- }
- /**
- * Get a builder of BitmapCommit whose object id is {@code objId}.
- *
- * @param objId
- * the object id of the BitmapCommit
- * @return a BitmapCommit builder with object id set.
- */
- public static Builder newBuilder(AnyObjectId objId) {
- return new Builder().setId(objId);
- }
- /**
- * Get a builder of BitmapCommit whose fields are copied from
- * {@code commit}.
- *
- * @param commit
- * the bitmap commit the builder is copying from
- * @return a BitmapCommit build with fields copied from an existing bitmap
- * commit.
- */
- public static Builder copyFrom(BitmapCommit commit) {
- return new Builder().setId(commit)
- .setReuseWalker(commit.isReuseWalker())
- .setFlags(commit.getFlags())
- .setAddToIndex(commit.isAddToIndex());
- }
- /**
- * Builder of BitmapCommit.
- */
- public static class Builder {
- private AnyObjectId objectId;
- private boolean reuseWalker;
- private int flags;
- private boolean addToIndex;
- // Prevent default constructor.
- private Builder() {
- }
- /**
- * Set objectId of the builder.
- *
- * @param objectId
- * the object id of the BitmapCommit
- * @return the builder itself
- */
- public Builder setId(AnyObjectId objectId) {
- this.objectId = objectId;
- return this;
- }
- /**
- * Set reuseWalker of the builder.
- *
- * @param reuseWalker
- * whether the BitmapCommit should reuse bitmap walker when
- * walking objects
- * @return the builder itself
- */
- public Builder setReuseWalker(boolean reuseWalker) {
- this.reuseWalker = reuseWalker;
- return this;
- }
- /**
- * Set flags of the builder.
- *
- * @param flags
- * the flags of the BitmapCommit
- * @return the builder itself
- */
- public Builder setFlags(int flags) {
- this.flags = flags;
- return this;
- }
- /**
- * Set whether whether the bitmap of the BitmapCommit should be added to
- * PackBitmapIndexBuilder when building bitmap index file.
- *
- * @param addToIndex
- * whether the bitmap of the BitmapCommit should be added to
- * PackBitmapIndexBuilder when building bitmap index file
- * @return the builder itself
- */
- public Builder setAddToIndex(boolean addToIndex) {
- this.addToIndex = addToIndex;
- return this;
- }
- /**
- * Builds BitmapCommit from the builder.
- *
- * @return the new BitmapCommit.
- */
- public BitmapCommit build() {
- return new BitmapCommit(objectId, reuseWalker, flags,
- addToIndex);
- }
- }
- }