| /* |
| * 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); |
| } |
| } |
| } |