1 /* 2 * Copyright (C) 2009, Christian Halstrick <christian.halstrick@sap.com> 3 * Copyright (C) 2010, Google Inc. and others 4 * 5 * This program and the accompanying materials are made available under the 6 * terms of the Eclipse Distribution License v. 1.0 which is available at 7 * https://www.eclipse.org/org/documents/edl-v10.php. 8 * 9 * SPDX-License-Identifier: BSD-3-Clause 10 */ 11 12 package org.eclipse.jgit.merge; 13 14 /** 15 * One chunk from a merge result. Each chunk contains a range from a 16 * single sequence. In case of conflicts multiple chunks are reported for one 17 * conflict. The conflictState tells when conflicts start and end. 18 */ 19 public class MergeChunk { 20 /** 21 * A state telling whether a MergeChunk belongs to a conflict or not. The 22 * first chunk of a conflict is reported with a special state to be able to 23 * distinguish the border between two consecutive conflicts 24 */ 25 public enum ConflictState { 26 /** 27 * This chunk does not belong to a conflict 28 */ 29 NO_CONFLICT, 30 31 /** 32 * This chunk does belong to a conflict and is the first one of the 33 * conflicting chunks 34 */ 35 FIRST_CONFLICTING_RANGE, 36 37 /** 38 * This chunk does belong to a conflict but is not the first one of the 39 * conflicting chunks. It's a subsequent one. 40 */ 41 NEXT_CONFLICTING_RANGE 42 } 43 44 private final int sequenceIndex; 45 46 private final int begin; 47 48 private final int end; 49 50 private final ConflictState conflictState; 51 52 /** 53 * Creates a new empty MergeChunk 54 * 55 * @param sequenceIndex 56 * determines to which sequence this chunks belongs to. Same as 57 * in {@link org.eclipse.jgit.merge.MergeResult#add} 58 * @param begin 59 * the first element from the specified sequence which should be 60 * included in the merge result. Indexes start with 0. 61 * @param end 62 * specifies the end of the range to be added. The element this 63 * index points to is the first element which not added to the 64 * merge result. All elements between begin (including begin) and 65 * this element are added. 66 * @param conflictState 67 * the state of this chunk. See 68 * {@link org.eclipse.jgit.merge.MergeChunk.ConflictState} 69 */ 70 protected MergeChunk(int sequenceIndex, int begin, int end, 71 ConflictState conflictState) { 72 this.sequenceIndex = sequenceIndex; 73 this.begin = begin; 74 this.end = end; 75 this.conflictState = conflictState; 76 } 77 78 /** 79 * Get the index of the sequence to which this sequence chunks belongs to. 80 * 81 * @return the index of the sequence to which this sequence chunks belongs 82 * to. Same as in {@link org.eclipse.jgit.merge.MergeResult#add} 83 */ 84 public int getSequenceIndex() { 85 return sequenceIndex; 86 } 87 88 /** 89 * Get the first element from the specified sequence which should be 90 * included in the merge result. 91 * 92 * @return the first element from the specified sequence which should be 93 * included in the merge result. Indexes start with 0. 94 */ 95 public int getBegin() { 96 return begin; 97 } 98 99 /** 100 * Get the end of the range of this chunk. 101 * 102 * @return the end of the range of this chunk. The element this index points 103 * to is the first element which not added to the merge result. All 104 * elements between begin (including begin) and this element are 105 * added. 106 */ 107 public int getEnd() { 108 return end; 109 } 110 111 /** 112 * Get the state of this chunk. 113 * 114 * @return the state of this chunk. See 115 * {@link org.eclipse.jgit.merge.MergeChunk.ConflictState} 116 */ 117 public ConflictState getConflictState() { 118 return conflictState; 119 } 120 }