lunes, 1 de abril de 2013

Daisy Diff + GxWiki - Código fuente

Luego de haber publicado el primer post continúo con el código de la solución.
Éstos son los pasos para utilizar Daisy Diff con GeneXus. Importante mencionar que Daisy Diff está compilado con el JDK 6.

Si omití algo avisar que lo corrijo: 
  1. Descargar Daisy Diff (ver 1.2 al día de hoy): https://code.google.com/p/daisydiff/downloads/list 
  2. Extraer y copiar daisydiff.jar al "Target Environment Directory" de la aplicación Genexus y al /lib de la aplicación web
  3. Descargar clase compilada: WikiDiffHtml.class
  4. Copiar WikiDiffHtml.class al "Target Environment Directory" de la aplicación Genexus y al /class de la aplicación web
  5. En GeneXus hacer un "Java class import" de WikiDiffHtml.class.
  6. Abrir el webpanel "HShowVersionsDifferences" y eliminar todo el contenido del sub "Compare", en su lugar incorporar la llamada a la clase externa java, en mi caso: 
&compared = &WikiDiffHtml.wikiDiff(&FirstHtml, &SecondHtml)

    Opcionalmente dejo el fuente de la clase java por si alguien lo quiere compilar con su propio JDK:
    javac.exe -cp daisydiff.jar WikiDiffHtml.java

    Si surgen problemas al comparar, añadir los tags HTML y BODY antes de llamar al programa de comparación:

    &FirstHtml = !'<html><head></head><body>' + &FirstHtml + !'</body></html>'
    &SecondHtml = !'<html><head></head><body>' + &SecondHtml + !'</body></html>'


    Tanto el proyecto Daisy Diff como la clase java que adapta a Genexus quedan publicadas bajo la licencia Apache License 2.0

    jueves, 21 de febrero de 2013

    Daisy Diff + GxWiki

    El GxWiki es una implementación de un Wiki desarrollado con GeneXus. La base de conocimiento está disponible para descargar y una de las características que posee es la comparación entre dos versiones de una página dada:




    Para realizar la comparación de texto, GxWiki utiliza un webservice que a su vez utiliza una biblioteca .NET llamada "Rainbow.MergeEngine.dll"

    Esta configuración no me resultaba muy óptima, ya que estamos trabajando con Java y utilizar un webservice llamando a una biblioteca C# era mezclar muchas tecnologías cuando se podía simplificar bastante.

    Así encontré Daisy Diff, un proyecto escrito en Java que realiza lo que necesitamos: comparar dos HTMLs y entregar un resultado resaltando las diferencias.

    Realizar el cambio no es difícil, únicamente creando una clase para llamar al método que me interesaba y luego lo integré en GeneXus, cambiando una línea de código ya tenía mi Wiki full Java funcionando.