In meiner Seminarverwaltungssoftware können Trainer die Seminarbeschreibungen ändern. Natürlich möchte ich mitbekommen, welche Stellen geändert wurden und das am Liebsten hübsches aufbereitet. Da bin ich auf http://code.google.com/p/daisydiff/ gestoßen. Man kann entweder über die Kommandozeile arbeiten oder mit einer Hilfsklasse, wobei zwei Klassen einen ersten Anhaltspunkt für die API geben:
- http://code.google.com/p/daisydiff/source/browse/trunk/daisydiff/src/java/org/outerj/daisy/diff/Main.java
- http://code.google.com/p/daisydiff/source/browse/trunk/daisydiff/src/java/org/outerj/daisy/diff/DaisyDiff.java
Ein kleines Beispiel soll das Diff in HTML-Form in den Temp-Ordner C:\Users\CHRIST~1\AppData\Local\Temp\ schreiben:
package com.tutego.traida;
import java.awt.Desktop;
import java.io.File;
import java.io.FileWriter;
import org.outerj.daisy.diff.Main;
public class DaisyDiffDemo
{
public static void main( String[] args ) throws Exception
{
String html1 = „Eine zwei Polizei“;
String html2 = „Eins zwei drei Polizei“;
File fileIn = File.createTempFile( „daisyin“, „.html“ );
File fileOut = File.createTempFile( „daisyout“, „.html“ );
File fileDiff = File.createTempFile( „daisydiff“, „.html“ );
new FileWriter( fileIn ).append( html1 ).close();
new FileWriter( fileOut ).append( html2 ).close();
String[] daisyDiffArgs = {
fileIn.getAbsolutePath(), fileOut.getAbsolutePath(), „–file=“+fileDiff.getAbsolutePath()
};
Main.main( daisyDiffArgs );
fileIn.deleteOnExit();
fileOut.deleteOnExit();
Desktop.getDesktop().open( fileDiff );
}
}
Das generierte HTML greift auf allerlei Zeugs zurück. Damit die HTML-Datei gut angezeigt wird, einfach aus dem Zip die Order css, images und js in das temp-Verzeichnis C:\Users\CHRIST~1\AppData\Local\Temp kopieren. Dann sieht das Ergebnis so aus:
Hello
This looks good but when i tried the code. I am continuously getting the following error and unable to understand why? Please help
java.lang.NullPointerException
at org.apache.xalan.processor.TransformerFactoryImpl.newTransformerHandler(TransformerFactoryImpl.java:701)
at org.outerj.daisy.diff.XslFilter.xsl(Unknown Source)
at com.PB.automation.Main.main(Main.java:124)
This line gives the error
ContentHandler postProcess = htmlOut? filter.xsl(result, "xslfilter/htmlheader.xsl"):result;
Please help out.