Class SVNDeltaGenerator


  • public class SVNDeltaGenerator
    extends java.lang.Object
    The SVNDeltaGenerator is intended for generating diff windows of fixed size having a target version of a file against a source one. File contents are provided as two streams - source and target ones, or just target if delta is generated against empty contents.

    The generator uses X-Delta algorithm for generating all kinds of deltas.

    Since:
    1.2
    Version:
    1.3
    Author:
    TMate Software Ltd.
    • Constructor Summary

      Constructors 
      Constructor Description
      SVNDeltaGenerator()
      Creates a generator that will produce diff windows of 100Kbytes contents length.
      SVNDeltaGenerator​(int maximumDiffWindowSize)
      Creates a generator that will produce diff windows of a specified contents length.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void sendDelta​(java.lang.String path, byte[] source, int sourceLength, long sourceOffset, byte[] target, int targetLength, ISVNDeltaConsumer consumer)
      Generates a series of diff windows of fixed size comparing targetLength of target bytes (read from target stream) against sourceLength of source bytes (read from source stream at offset sourceOffset), and sends produced windows to the provided consumer.
      void sendDelta​(java.lang.String path, byte[] target, int targetLength, ISVNDeltaConsumer consumer)
      Generates a series of diff windows of fixed size comparing target bytes (read from target stream) against an empty file, and sends produced windows to the provided consumer.
      java.lang.String sendDelta​(java.lang.String path, java.io.InputStream source, long sourceOffset, java.io.InputStream target, ISVNDeltaConsumer consumer, boolean computeChecksum)
      Generates a series of diff windows of fixed size comparing target bytes (read from target stream) against source bytes (read from source stream), and sends produced windows to the provided consumer.
      java.lang.String sendDelta​(java.lang.String path, java.io.InputStream target, ISVNDeltaConsumer consumer, boolean computeChecksum)
      Generates a series of diff windows of fixed size comparing target bytes (from target stream) against an empty file and sends produced windows to the provided consumer.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • SVNDeltaGenerator

        public SVNDeltaGenerator()
        Creates a generator that will produce diff windows of 100Kbytes contents length. That is, after applying of such a window you get 100 Kbytes of file contents.
        See Also:
        SVNDeltaGenerator(int)
      • SVNDeltaGenerator

        public SVNDeltaGenerator​(int maximumDiffWindowSize)
        Creates a generator that will produce diff windows of a specified contents length.
        Parameters:
        maximumDiffWindowSize - a maximum size of a file contents chunk that a single applied diff window would produce
    • Method Detail

      • sendDelta

        public java.lang.String sendDelta​(java.lang.String path,
                                          java.io.InputStream target,
                                          ISVNDeltaConsumer consumer,
                                          boolean computeChecksum)
                                   throws SVNException
        Generates a series of diff windows of fixed size comparing target bytes (from target stream) against an empty file and sends produced windows to the provided consumer. consumer's textDeltaChunk() method is called to receive and process generated windows. Now new data comes within a window, so the output stream is either ignored (if it's null) or immediately closed (if it's not null).

        If computeChecksum is true, the return value will be a strig containing a hex representation of the MD5 digest computed for the target contents.

        Parameters:
        path - a file repository path
        target - an input stream to read target bytes from
        consumer - a diff windows consumer
        computeChecksum - true to compute a checksum
        Returns:
        if computeChecksum is true, a string representing a hex form of the MD5 checksum computed for the target contents; otherwise null
        Throws:
        SVNException
      • sendDelta

        public java.lang.String sendDelta​(java.lang.String path,
                                          java.io.InputStream source,
                                          long sourceOffset,
                                          java.io.InputStream target,
                                          ISVNDeltaConsumer consumer,
                                          boolean computeChecksum)
                                   throws SVNException
        Generates a series of diff windows of fixed size comparing target bytes (read from target stream) against source bytes (read from source stream), and sends produced windows to the provided consumer. consumer's textDeltaChunk() method is called to receive and process generated windows. Now new data comes within a window, so the output stream is either ignored (if it's null) or immediately closed (if it's not null).

        If computeChecksum is true, the return value will be a strig containing a hex representation of the MD5 digest computed for the target contents.

        Parameters:
        path - a file repository path
        source - an input stream to read source bytes from
        sourceOffset - an offset of the source view in the given source stream
        target - an input stream to read target bytes from
        consumer - a diff windows consumer
        computeChecksum - true to compute a checksum
        Returns:
        if computeChecksum is true, a string representing a hex form of the MD5 checksum computed for the target contents; otherwise null
        Throws:
        SVNException
      • sendDelta

        public void sendDelta​(java.lang.String path,
                              byte[] target,
                              int targetLength,
                              ISVNDeltaConsumer consumer)
                       throws SVNException
        Generates a series of diff windows of fixed size comparing target bytes (read from target stream) against an empty file, and sends produced windows to the provided consumer.

        This is identical to sendDelta(path, null, 0, 0, target, targetLength, consumer).

        Parameters:
        path - a file repository path
        target - an input byte array to read target bytes from
        targetLength -
        consumer - a diff windows consumer
        Throws:
        SVNException
      • sendDelta

        public void sendDelta​(java.lang.String path,
                              byte[] source,
                              int sourceLength,
                              long sourceOffset,
                              byte[] target,
                              int targetLength,
                              ISVNDeltaConsumer consumer)
                       throws SVNException
        Generates a series of diff windows of fixed size comparing targetLength of target bytes (read from target stream) against sourceLength of source bytes (read from source stream at offset sourceOffset), and sends produced windows to the provided consumer.

        Size of the produced windows is set in a constructor of this delta generator.

        consumer's textDeltaChunk() method is called to receive and process generated windows. Now new data comes within a window, so the output stream is either ignored (if it's null) or immediately closed (if it's not null).

        Parameters:
        path - a file repository path
        source - an input stream to read source bytes from
        sourceLength - the size of the source view
        sourceOffset - an offset of the source view in the given source stream
        target - an input stream to read target bytes from
        targetLength - the size of the target view
        consumer - a diff windows consumer
        Throws:
        SVNException