|
What this is
Other links
The source code
/*
* Sun Public License Notice
*
* The contents of this file are subject to the Sun Public License
* Version 1.0 (the "License"). You may not use this file except in
* compliance with the License. A copy of the License is available at
* http://www.sun.com/
*
* The Original Code is NetBeans. The Initial Developer of the Original
* Code is Sun Microsystems, Inc. Portions Copyright 1997-2003 Sun
* Microsystems, Inc. All Rights Reserved.
*/
/*
* LineDiff.java
*
* Created on March 28, 2002, 9:49 AM
*/
package org.netbeans.i18n.test;
import org.netbeans.junit.diff.Diff;
import java.io.File;
import java.io.FileOutputStream;
import java.io.LineNumberReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.util.ArrayList;
/**
*
* @author jlahoda, ehucka
*/
public class LineDiff implements Diff {
private boolean ignoreCase;
/** Creates a new instance of LineDiff */
public LineDiff(boolean ignoreCase) {
this.ignoreCase = ignoreCase;
}
public boolean getIgnoreCase() {
return ignoreCase;
}
/**
* @param l1 first line to compare
* @param l2 second line to compare
* @return true if lines equal
*/
private boolean compareLines(String l1,String l2) {
if (getIgnoreCase()) {
if (l1.equalsIgnoreCase(l2))
return true;
} else {
if (l1.equals(l2))
return true;
}
return false;
}
/**
* @param first first file to compare
* @param second second file to compare
* @param diff difference file, caller can pass null value, when results are not needed.
* @return true iff files differ
*/
public boolean diff(String first, String second, String diff) throws java.io.IOException {
File fFirst = new File(first);
File fSecond = new File(second);
File fDiff = null != diff ? new File(diff) : null;
return diff(fFirst, fSecond, fDiff);
}
/**
* @param first first file to compare
* @param second second file to compare
* @param diff difference file, caller can pass null value, when results are not needed.
* @return true iff files differ
*/
public boolean diff(java.io.File firstFile, java.io.File secondFile, java.io.File diffFile) throws java.io.IOException {
LineNumberReader first = new LineNumberReader(new FileReader(firstFile));
LineNumberReader second = new LineNumberReader(new FileReader(secondFile));
String firstLine;
String secondLine;
if (diffFile == null) {
while ((firstLine = first.readLine()) != null) {
secondLine = second.readLine();
if (secondLine == null) {
first.close();
second.close();
return true;
}
if (!compareLines(firstLine,secondLine)) {
first.close();
second.close();
return true;
}
}
} else {
ArrayList a1,a2,newLines,missingLines;
a1=new ArrayList();
while ((firstLine = first.readLine()) != null) {
a1.add(firstLine);
}
a2=new ArrayList();
while ((secondLine = second.readLine()) != null) {
a2.add(secondLine);
}
first.close();
second.close();
newLines=new ArrayList();
missingLines=new ArrayList();
int j=0,bj;
boolean found;
for (int i=0;i < a1.size();i++) {
if (j >= a2.size()) {
for (int k=i;k < a1.size();k++) {
missingLines.add(k+"> "+a1.get(k));
}
break;
}
firstLine=(String)(a1.get(i));
secondLine=(String)(a2.get(j));
if (!compareLines(firstLine,secondLine)) {
found=false;
for (int k=j;k < a2.size();k++) {
secondLine = (String)(a2.get(k));
if (compareLines(firstLine,secondLine)) {
for (int l=j;l < k;l++) {
newLines.add(l+"> "+a2.get(l));
}
j=k;
found=true;
break;
}
}
if (!found) {
missingLines.add(i+"> "+firstLine);
j--;
}
}
j++;
}
if (j < a2.size()) {
for (int i=j;i < a2.size();i++) {
newLines.add(i+"> "+a2.get(i));
}
}
if (missingLines.size() > 0 || newLines.size() > 0) {
PrintStream pw=null;
pw=new PrintStream(new FileOutputStream(diffFile));
//pw=System.out;
if (missingLines.size() > 0) {
pw.println("-----------------------------Missing Lines:-----");
for (int i=0;i < missingLines.size();i++) {
pw.println(missingLines.get(i));
}
}
if (newLines.size() > 0) {
pw.println("-----------------------------New Lines:---------");
for (int i=0;i < newLines.size();i++) {
pw.println(newLines.get(i));
}
}
pw.close();
return true;
}
}
return false;
}
public static void main(String[] argv) {
try {
LineDiff diff=new LineDiff(true);
diff.diff("/tmp/diff/test.pass","/tmp/diff/test.ref","/tmp/diff/test.diff");
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
|
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.