Example usage for org.eclipse.jgit.diff RawText getString

List of usage examples for org.eclipse.jgit.diff RawText getString

Introduction

In this page you can find the example usage for org.eclipse.jgit.diff RawText getString.

Prototype

public String getString(int begin, int end, boolean dropLF) 

Source Link

Document

Get the text for a region of lines.

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);
            }/*  w w  w  .j av  a 2s. c  o  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;
}

From source file:com.google.gitiles.DiffServletTest.java

License:Apache License

@Test
public void diffFileNoParentsText() throws Exception {
    String contents = "foo\ncontents\n";
    RevCommit c = repo.update("master", repo.commit().add("foo", contents));

    FakeHttpServletRequest req = FakeHttpServletRequest.newRequest();
    req.setPathInfo("/test/+diff/" + c.name() + "^!/foo");
    req.setQueryString("format=TEXT");
    FakeHttpServletResponse res = new FakeHttpServletResponse();
    servlet.service(req, res);/*from w ww  .j  a va 2 s . c  o m*/

    Patch p = parsePatch(res.getActualBody());
    FileHeader f = getOnlyElement(p.getFiles());
    assertEquals(ChangeType.ADD, f.getChangeType());
    assertEquals(DiffEntry.DEV_NULL, f.getPath(Side.OLD));
    assertEquals("foo", f.getPath(Side.NEW));

    RawText rt = new RawText(contents.getBytes(UTF_8));
    Edit e = getOnlyElement(getOnlyElement(f.getHunks()).toEditList());
    assertEquals(Type.INSERT, e.getType());
    assertEquals(contents, rt.getString(e.getBeginB(), e.getEndB(), false));
}

From source file:com.google.gitiles.DiffServletTest.java

License:Apache License

@Test
public void diffFileOneParentText() throws Exception {
    String contents1 = "foo\n";
    String contents2 = "foo\ncontents\n";
    RevCommit c1 = repo.update("master", repo.commit().add("foo", contents1));
    RevCommit c2 = repo.update("master", repo.commit().parent(c1).add("foo", contents2));

    FakeHttpServletRequest req = FakeHttpServletRequest.newRequest();
    req.setPathInfo("/test/+diff/" + c2.name() + "^!/foo");
    req.setQueryString("format=TEXT");
    FakeHttpServletResponse res = new FakeHttpServletResponse();
    servlet.service(req, res);// w  w w  . ja  v a2 s.  c  om

    Patch p = parsePatch(res.getActualBody());
    FileHeader f = getOnlyElement(p.getFiles());
    assertEquals(ChangeType.MODIFY, f.getChangeType());
    assertEquals("foo", f.getPath(Side.OLD));
    assertEquals("foo", f.getPath(Side.NEW));

    RawText rt2 = new RawText(contents2.getBytes(UTF_8));
    Edit e = getOnlyElement(getOnlyElement(f.getHunks()).toEditList());
    assertEquals(Type.INSERT, e.getType());
    assertEquals("contents\n", rt2.getString(e.getBeginB(), e.getEndB(), false));
}

From source file:de.codesourcery.gittimelapse.TextFile.java

License:Apache License

public static String toString(RawText rt) {
    return rt.getString(0, rt.size(), false);
}

From source file:org.sjanisch.skillview.git.GitAlgorithmContentDiff.java

License:Open Source License

private static Collection<String> diff(String previousContent, String currentContent, DiffAlgorithm algorithm) {
    RawText previous = new RawText(previousContent.getBytes());
    RawText current = new RawText(currentContent.getBytes());
    EditList edits = algorithm.diff(RawTextComparator.WS_IGNORE_ALL, previous, current);

    Collection<String> result = new LinkedList<>();
    for (int i = 0; i < edits.size(); ++i) {
        Edit edit = edits.get(i);//from  w  w  w  . j  a v a2s.  c  o m

        switch (edit.getType()) {
        case INSERT:
        case REPLACE:
            String touched = current.getString(edit.getBeginB(), edit.getEndB(), false).trim();
            result.add(touched);
            break;
        default:
            continue;
        }

    }

    return result;
}