Example usage for com.liferay.portal.kernel.util FileUtil toList

List of usage examples for com.liferay.portal.kernel.util FileUtil toList

Introduction

In this page you can find the example usage for com.liferay.portal.kernel.util FileUtil toList.

Prototype

public static List<String> toList(String fileName) 

Source Link

Usage

From source file:com.liferay.util.diff.DiffUtil.java

License:Open Source License

/**
 * The main entrance of this class. This method will compare the two texts,
 * highlight the changes by enclosing them with markers and return a list of
 * <code>DiffResults</code>.
 *
 * @return an array containing two lists of <code>DiffResults</code>, the
 *         first element contains DiffResults related to changes in source
 *         and the second element to changes in target
 *//*from ww w .  ja v  a 2s . c o  m*/
public static List<DiffResult>[] diff(Reader source, Reader target, String addedMarkerStart,
        String addedMarkerEnd, String deletedMarkerStart, String deletedMarkerEnd, int margin) {

    List<DiffResult> sourceResults = new ArrayList<DiffResult>();
    List<DiffResult> targetResults = new ArrayList<DiffResult>();

    List<DiffResult>[] results = new List[] { sourceResults, targetResults };

    // Convert the texts to Lists where each element are lines of the texts.

    List<String> sourceStringList = FileUtil.toList(source);
    List<String> targetStringList = FileUtil.toList(target);

    // Make a a Diff of these lines and iterate over their Differences.

    Diff diff = new Diff(sourceStringList, targetStringList);

    List<Difference> differences = diff.diff();

    Iterator<Difference> itr = differences.iterator();

    while (itr.hasNext()) {
        Difference difference = itr.next();

        if (difference.getAddedEnd() == Difference.NONE) {

            // Lines were deleted from source only.

            _highlightLines(sourceStringList, deletedMarkerStart, deletedMarkerEnd,
                    difference.getDeletedStart(), difference.getDeletedEnd());

            margin = _calculateMargin(sourceResults, targetResults, difference.getDeletedStart(),
                    difference.getAddedStart(), margin);

            List<String> changedLines = _addMargins(sourceResults, sourceStringList,
                    difference.getDeletedStart(), margin);

            _addResults(sourceResults, sourceStringList, changedLines, difference.getDeletedStart(),
                    difference.getDeletedEnd());

            changedLines = _addMargins(targetResults, targetStringList, difference.getAddedStart(), margin);

            int deletedLines = difference.getDeletedEnd() + 1 - difference.getDeletedStart();

            for (int i = 0; i < deletedLines; i++) {
                changedLines.add(CONTEXT_LINE);
            }

            DiffResult diffResult = new DiffResult(difference.getDeletedStart(), changedLines);

            targetResults.add(diffResult);
        } else if (difference.getDeletedEnd() == Difference.NONE) {

            // Lines were added to target only.

            _highlightLines(targetStringList, addedMarkerStart, addedMarkerEnd, difference.getAddedStart(),
                    difference.getAddedEnd());

            margin = _calculateMargin(sourceResults, targetResults, difference.getDeletedStart(),
                    difference.getAddedStart(), margin);

            List<String> changedLines = _addMargins(sourceResults, sourceStringList,
                    difference.getDeletedStart(), margin);

            int addedLines = difference.getAddedEnd() + 1 - difference.getAddedStart();

            for (int i = 0; i < addedLines; i++) {
                changedLines.add(CONTEXT_LINE);
            }

            DiffResult diffResult = new DiffResult(difference.getAddedStart(), changedLines);

            sourceResults.add(diffResult);

            changedLines = _addMargins(targetResults, targetStringList, difference.getAddedStart(), margin);

            _addResults(targetResults, targetStringList, changedLines, difference.getAddedStart(),
                    difference.getAddedEnd());
        } else {

            // Lines were deleted from source and added to target at the
            // same position. It needs to check for characters differences.

            _checkCharDiffs(sourceResults, targetResults, sourceStringList, targetStringList, addedMarkerStart,
                    addedMarkerEnd, deletedMarkerStart, deletedMarkerEnd, difference, margin);
        }
    }

    return results;
}