1 /* 2 * Copyright (C) 2009, Christian Halstrick <christian.halstrick@sap.com> 3 * Copyright (C) 2010, Google Inc. 4 * and other copyright owners as documented in the project's IP log. 5 * 6 * This program and the accompanying materials are made available 7 * under the terms of the Eclipse Distribution License v1.0 which 8 * accompanies this distribution, is reproduced below, and is 9 * available at http://www.eclipse.org/org/documents/edl-v10.php 10 * 11 * All rights reserved. 12 * 13 * Redistribution and use in source and binary forms, with or 14 * without modification, are permitted provided that the following 15 * conditions are met: 16 * 17 * - Redistributions of source code must retain the above copyright 18 * notice, this list of conditions and the following disclaimer. 19 * 20 * - Redistributions in binary form must reproduce the above 21 * copyright notice, this list of conditions and the following 22 * disclaimer in the documentation and/or other materials provided 23 * with the distribution. 24 * 25 * - Neither the name of the Eclipse Foundation, Inc. nor the 26 * names of its contributors may be used to endorse or promote 27 * products derived from this software without specific prior 28 * written permission. 29 * 30 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 31 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 32 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 33 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 34 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 35 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 36 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 37 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 38 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 39 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 40 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 41 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 42 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 43 */ 44 45 package org.eclipse.jgit.merge; 46 47 /** 48 * One chunk from a merge result. Each chunk contains a range from a 49 * single sequence. In case of conflicts multiple chunks are reported for one 50 * conflict. The conflictState tells when conflicts start and end. 51 */ 52 public class MergeChunk { 53 /** 54 * A state telling whether a MergeChunk belongs to a conflict or not. The 55 * first chunk of a conflict is reported with a special state to be able to 56 * distinguish the border between two consecutive conflicts 57 */ 58 public enum ConflictState { 59 /** 60 * This chunk does not belong to a conflict 61 */ 62 NO_CONFLICT, 63 64 /** 65 * This chunk does belong to a conflict and is the first one of the 66 * conflicting chunks 67 */ 68 FIRST_CONFLICTING_RANGE, 69 70 /** 71 * This chunk does belong to a conflict but is not the first one of the 72 * conflicting chunks. It's a subsequent one. 73 */ 74 NEXT_CONFLICTING_RANGE 75 } 76 77 private final int sequenceIndex; 78 79 private final int begin; 80 81 private final int end; 82 83 private final ConflictState conflictState; 84 85 /** 86 * Creates a new empty MergeChunk 87 * 88 * @param sequenceIndex 89 * determines to which sequence this chunks belongs to. Same as 90 * in {@link org.eclipse.jgit.merge.MergeResult#add} 91 * @param begin 92 * the first element from the specified sequence which should be 93 * included in the merge result. Indexes start with 0. 94 * @param end 95 * specifies the end of the range to be added. The element this 96 * index points to is the first element which not added to the 97 * merge result. All elements between begin (including begin) and 98 * this element are added. 99 * @param conflictState 100 * the state of this chunk. See {@link ConflictState} 101 */ 102 protected MergeChunk(int sequenceIndex, int begin, int end, 103 ConflictState conflictState) { 104 this.sequenceIndex = sequenceIndex; 105 this.begin = begin; 106 this.end = end; 107 this.conflictState = conflictState; 108 } 109 110 /** 111 * @return the index of the sequence to which sequence this chunks belongs 112 * to. Same as in {@link org.eclipse.jgit.merge.MergeResult#add} 113 */ 114 public int getSequenceIndex() { 115 return sequenceIndex; 116 } 117 118 /** 119 * @return the first element from the specified sequence which should be 120 * included in the merge result. Indexes start with 0. 121 */ 122 public int getBegin() { 123 return begin; 124 } 125 126 /** 127 * @return the end of the range of this chunk. The element this index 128 * points to is the first element which not added to the merge 129 * result. All elements between begin (including begin) and this 130 * element are added. 131 */ 132 public int getEnd() { 133 return end; 134 } 135 136 /** 137 * @return the state of this chunk. See {@link ConflictState} 138 */ 139 public ConflictState getConflictState() { 140 return conflictState; 141 } 142 }