Example usage for org.eclipse.jgit.merge MergeResult getSequences

List of usage examples for org.eclipse.jgit.merge MergeResult getSequences

Introduction

In this page you can find the example usage for org.eclipse.jgit.merge MergeResult getSequences.

Prototype

public List<S> getSequences() 

Source Link

Document

Returns the common predecessor sequence and the merged sequence in one list.

Usage

From source file:com.google.collide.server.shared.merge.JGitMerger.java

License:Open Source License

public static MergeResult formatMerge(org.eclipse.jgit.merge.MergeResult<RawText> results) {
    int runningIndex = 0;
    int numLines = 0;
    List<MergeChunk> mergeChunks = Lists.newArrayList();
    MergeChunk currentMergeChunk = null;
    StringBuilder fileContent = new StringBuilder();
    int conflictIndex = 0;
    for (org.eclipse.jgit.merge.MergeChunk chunk : results) {
        RawText seq = results.getSequences().get(chunk.getSequenceIndex());
        String chunkContent = seq.getString(chunk.getBegin(), chunk.getEnd(), false);

        if (chunk.getConflictState() == ConflictState.NO_CONFLICT
                || chunk.getConflictState() == ConflictState.FIRST_CONFLICTING_RANGE) {
            if (currentMergeChunk != null) {
                mergeChunks.add(currentMergeChunk);
            }/*from  w ww  . j a v  a  2s .  co m*/
            currentMergeChunk = new MergeChunk();
        }

        switch (chunk.getConflictState()) {
        case NO_CONFLICT:
            currentMergeChunk.setHasConflict(false);
            currentMergeChunk.setMergedData(chunkContent);
            fileContent.append(chunkContent);
            numLines = chunk.getEnd() - chunk.getBegin();
            runningIndex = setRanges(currentMergeChunk, runningIndex, numLines);
            break;
        case FIRST_CONFLICTING_RANGE:
            currentMergeChunk.setHasConflict(true);
            currentMergeChunk.setChildData(chunkContent);
            fileContent.append(chunkContent);
            numLines = chunk.getEnd() - chunk.getBegin();
            runningIndex = setRanges(currentMergeChunk, runningIndex, numLines);
            break;
        case NEXT_CONFLICTING_RANGE:
            currentMergeChunk.setParentData(chunkContent);
            break;
        }
    }
    mergeChunks.add(currentMergeChunk);

    MergeResult mergeResult = new MergeResult(mergeChunks, (conflictIndex > 0) ? "" : fileContent.toString());

    return mergeResult;
}