Package org.outerj.daisy.diff

Source Code of org.outerj.daisy.diff.DaisyDiff

/*
* Copyright 2004 Guy Van den Broeck
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.outerj.daisy.diff;

import java.io.BufferedReader;
import java.io.IOException;
import java.util.Locale;

import org.outerj.daisy.diff.html.HTMLDiffer;
import org.outerj.daisy.diff.html.HtmlSaxDiffOutput;
import org.outerj.daisy.diff.html.SideBySideHTMLDiffer;
import org.outerj.daisy.diff.html.TextNodeComparator;
import org.outerj.daisy.diff.html.dom.DomTreeBuilder;
import org.outerj.daisy.diff.tag.TagComparator;
import org.outerj.daisy.diff.tag.TagDiffer;
import org.outerj.daisy.diff.tag.TagSaxDiffOutput;
import org.xml.sax.ContentHandler;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.XMLReaderFactory;

public class DaisyDiff {

  /**
   * Diffs two html files, outputting the result to the specified consumer.
   */
  public static void diffHTML(InputSource oldSource, InputSource newSource,
      ContentHandler consumer, String prefix, Locale locale)
      throws SAXException, IOException {

    DomTreeBuilder oldHandler = new DomTreeBuilder();
    XMLReader xr1 = XMLReaderFactory.createXMLReader();
    xr1.setContentHandler(oldHandler);
    xr1.parse(oldSource);
    TextNodeComparator leftComparator = new TextNodeComparator(oldHandler,
        locale);

    DomTreeBuilder newHandler = new DomTreeBuilder();
    XMLReader xr2 = XMLReaderFactory.createXMLReader();
    xr2.setContentHandler(newHandler);
    xr2.parse(newSource);

    TextNodeComparator rightComparator = new TextNodeComparator(newHandler,
        locale);

    HtmlSaxDiffOutput output = new HtmlSaxDiffOutput(consumer, prefix);
    SideBySideHTMLDiffer differ = new SideBySideHTMLDiffer(output);
    differ.diff(leftComparator, rightComparator);
  }

  /**
   * Diffs two html files word for word as source, outputting the result to
   * the specified consumer.
   */
  public static void diffTag(String oldText, String newText,
      ContentHandler consumer) throws Exception {
    consumer.startDocument();
    TagComparator oldComp = new TagComparator(oldText);
    TagComparator newComp = new TagComparator(newText);

    TagSaxDiffOutput output = new TagSaxDiffOutput(consumer);
    TagDiffer differ = new TagDiffer(output);
    differ.diff(oldComp, newComp);
    consumer.endDocument();
  }

  /**
   * Diffs two html files word for word as source, outputting the result to
   * the specified consumer.
   */
  public static void diffTag(BufferedReader oldText, BufferedReader newText,
      ContentHandler consumer) throws Exception {

    TagComparator oldComp = new TagComparator(oldText);
    TagComparator newComp = new TagComparator(newText);

    TagSaxDiffOutput output = new TagSaxDiffOutput(consumer);
    TagDiffer differ = new TagDiffer(output);
    differ.diff(oldComp, newComp);
  }

}
TOP

Related Classes of org.outerj.daisy.diff.DaisyDiff

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.