List of usage examples for com.liferay.portal.kernel.util FileUtil toList
public static List<String> toList(String fileName)
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; }