{"id":360,"date":"2009-07-14T15:16:00","date_gmt":"2009-07-14T15:16:00","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/?p=360"},"modified":"2009-07-14T15:16:00","modified_gmt":"2009-07-14T15:16:00","slug":"vergleich-von-html-dateien-mit-daisy-diff","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2009\/07\/vergleich-von-html-dateien-mit-daisy-diff\/","title":{"rendered":"Vergleich von HTML-Dateien mit Daisy Diff"},"content":{"rendered":"<p>In meiner Seminarverwaltungssoftware k\u00f6nnen Trainer die Seminarbeschreibungen \u00e4ndern. Nat\u00fcrlich m\u00f6chte ich mitbekommen, welche Stellen ge\u00e4ndert wurden und das am Liebsten h\u00fcbsches aufbereitet. Da bin ich auf <a title=\"http:\/\/code.google.com\/p\/daisydiff\/\" href=\"http:\/\/code.google.com\/p\/daisydiff\/\">http:\/\/code.google.com\/p\/daisydiff\/<\/a> gesto\u00dfen. Man kann entweder \u00fcber die Kommandozeile arbeiten oder mit einer Hilfsklasse, wobei zwei Klassen einen ersten Anhaltspunkt f\u00fcr die API geben:<\/p>\n<ul>\n<li><a title=\"http:\/\/code.google.com\/p\/daisydiff\/source\/browse\/trunk\/daisydiff\/src\/java\/org\/outerj\/daisy\/diff\/Main.java\" href=\"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\/Main.java<\/a><\/li>\n<li><a title=\"http:\/\/code.google.com\/p\/daisydiff\/source\/browse\/trunk\/daisydiff\/src\/java\/org\/outerj\/daisy\/diff\/DaisyDiff.java\" href=\"http:\/\/code.google.com\/p\/daisydiff\/source\/browse\/trunk\/daisydiff\/src\/java\/org\/outerj\/daisy\/diff\/DaisyDiff.java\">http:\/\/code.google.com\/p\/daisydiff\/source\/browse\/trunk\/daisydiff\/src\/java\/org\/outerj\/daisy\/diff\/DaisyDiff.java<\/a><\/li>\n<\/ul>\n<p>Ein kleines Beispiel soll das Diff in HTML-Form in den Temp-Ordner C:\\Users\\CHRIST~1\\AppData\\Local\\Temp\\ schreiben:<\/p>\n<p>package com.tutego.traida;  <\/p>\n<p>import java.awt.Desktop;<br \/>import java.io.File;<br \/>import java.io.FileWriter;  <\/p>\n<p>import org.outerj.daisy.diff.Main;  <\/p>\n<p>public class DaisyDiffDemo<br \/>{<br \/>&nbsp; public static void main( String[] args ) throws Exception<br \/>&nbsp; {<br \/>&nbsp;&nbsp;&nbsp; String html1 = &#8222;Eine zwei Polizei&#8220;;<br \/>&nbsp;&nbsp;&nbsp; String html2 = &#8222;Eins zwei drei Polizei&#8220;;  <\/p>\n<p>&nbsp;&nbsp;&nbsp; File fileIn = File.createTempFile( &#8222;daisyin&#8220;, &#8222;.html&#8220; );<br \/>&nbsp;&nbsp;&nbsp; File fileOut = File.createTempFile( &#8222;daisyout&#8220;, &#8222;.html&#8220; );<br \/>&nbsp;&nbsp;&nbsp; File fileDiff = File.createTempFile( &#8222;daisydiff&#8220;, &#8222;.html&#8220; );<br \/>&nbsp;&nbsp;&nbsp; new FileWriter( fileIn ).append( html1 ).close();<br \/>&nbsp;&nbsp;&nbsp; new FileWriter( fileOut ).append( html2 ).close();  <\/p>\n<p>&nbsp;&nbsp;&nbsp; String[] daisyDiffArgs = {<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fileIn.getAbsolutePath(), fileOut.getAbsolutePath(), &#8222;&#8211;file=&#8220;+fileDiff.getAbsolutePath()<br \/>&nbsp;&nbsp;&nbsp; };<br \/>&nbsp;&nbsp;&nbsp; Main.main( daisyDiffArgs );  <\/p>\n<p>&nbsp;&nbsp;&nbsp; fileIn.deleteOnExit();<br \/>&nbsp;&nbsp;&nbsp; fileOut.deleteOnExit();<br \/>&nbsp;&nbsp;&nbsp; Desktop.getDesktop().open( fileDiff );<br \/>&nbsp; }<br \/>} <\/p>\n<p>Das generierte HTML greift auf allerlei Zeugs zur\u00fcck. 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:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" style=\"border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px\" title=\"sshot-1\" border=\"0\" alt=\"sshot-1\" src=\"http:\/\/lh6.ggpht.com\/_gE1YIJtpGBw\/SlyhVrbjORI\/AAAAAAAAALA\/rUahIFqNsWI\/sshot-1%5B5%5D.png?imgmax=800\" width=\"658\" height=\"347\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In meiner Seminarverwaltungssoftware k\u00f6nnen Trainer die Seminarbeschreibungen \u00e4ndern. Nat\u00fcrlich m\u00f6chte ich mitbekommen, welche Stellen ge\u00e4ndert wurden und das am Liebsten h\u00fcbsches aufbereitet. Da bin ich auf http:\/\/code.google.com\/p\/daisydiff\/ gesto\u00dfen. Man kann entweder \u00fcber die Kommandozeile arbeiten oder mit einer Hilfsklasse, wobei zwei Klassen einen ersten Anhaltspunkt f\u00fcr 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 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[4],"tags":[],"class_list":["post-360","post","type-post","status-publish","format-standard","hentry","category-open-source"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/360","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/comments?post=360"}],"version-history":[{"count":0,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/360\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=360"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=360"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=360"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}