Package org.tmatesoft.svn.core.wc

## Interface ISVNDiffGenerator

- All Known Subinterfaces:
    `ISVNGNUDiffGenerator`
  All Known Implementing Classes:
    `DefaultSVNDiffGenerator`

      public interface ISVNDiffGenerator

  The ISVNDiffGenerator should be implemented by drivers generating contents difference between files in order to be used in 'diff' operations performed by SVNDiffClient.
  Since:
    1.2
  Version:
    1.3
  Author:
    TMate Software Ltd.
  See Also:
    `SVNDiffClient`, `DefaultSVNDiffGenerator`

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `java.io.File` | `createTempDirectory()` | Creates a temporary directory (when necessary) where temporary files will be created.
    `void` | `displayAddedDirectory​(java.lang.String path, java.lang.String rev1, java.lang.String rev2)` | Notifies this generator that the directory was added in revision `rev2`.
    `void` | `displayDeletedDirectory​(java.lang.String path, java.lang.String rev1, java.lang.String rev2)` | Notifies this generator that the directory was deleted in revision `rev2`.
    `void` | `displayFileDiff​(java.lang.String path, java.io.File file1, java.io.File file2, java.lang.String rev1, java.lang.String rev2, java.lang.String mimeType1, java.lang.String mimeType2, java.io.OutputStream result)` | Generates and writes differences between two files to the specified output stream.
    `void` | `displayPropDiff​(java.lang.String path, SVNProperties baseProps, SVNProperties diff, java.io.OutputStream result)` | Writes the differences in file properties to the specified output stream.
    `java.lang.String` | `getEncoding()` | Gets the encoding charset being in use for a diff output.
    `byte[]` | `getEOL()` | Returns the EOL marker bytes used in diff output.
    `void` | `init​(java.lang.String anchorPath1, java.lang.String anchorPath2)` | Initializes the driver setting up the paths/URLs that should be compared, or root paths/URLs for those paths to which a diff operation should be restricted.
    `boolean` | `isDiffAdded()` | Tells whether added files are enabled to be diffed.
    `boolean` | `isDiffCopied()` | Tells whether copied files are enabled to be diffed against their copy sources.
    `boolean` | `isDiffDeleted()` | Tells whether deleted files are enabled to be diffed.
    `boolean` | `isDiffUnversioned()` | Says if unversioned files are also diffed or ignored.
    `boolean` | `isForcedBinaryDiff()` | Tells whether to force diff even if files are binary.
    `void` | `setBasePath​(java.io.File basePath)` | Sets the root path for this diff generator.
    `void` | `setDiffAdded​(boolean isDiffAdded)` | Enables or disables generating differences for added files.
    `void` | `setDiffCopied​(boolean isDiffCopied)` | Enables or disables generating differences against copy source for copied files.
    `void` | `setDiffDeleted​(boolean isDiffDeleted)` | Enables or disables generating differences for deleted files.
    `void` | `setDiffUnversioned​(boolean diffUnversioned)` | Includes or not unversioned files into diff processing.
    `void` | `setEncoding​(java.lang.String encoding)` | Sets the encoding charset to be used for a diff output.
    `void` | `setEOL​(byte[] eol)` | Sets the EOL marker bytes to use in diff output.
    `void` | `setForcedBinaryDiff​(boolean forced)` | Enables or disables generating differnces between files having a binary MIME type.

- - ### Method Detail

    - #### init

          void init​(java.lang.String anchorPath1,
                    java.lang.String anchorPath2)

      Initializes the driver setting up the paths/URLs that should be compared, or root paths/URLs for those paths to which a diff operation should be restricted.

      These paths have got the same meaning as OLD-TGT (`anchorPath1`) and NEW-TGT (`anchorPath2`) in the SVN command line client's 'svn diff' command. So, they can be either local paths, or URLs pointing to repository locations. If one of them (or both) is a URL it may differ from that one passed to an appropriate doDiff() method of SVNDiffClient in that case when in a peg revision it's one URL, but in the target revision it was changed (moved?) to some other one. So, this method should receive the real one.

      Parameters:
        `anchorPath1` - an old path/URL
        `anchorPath2` - a new path/URL

    - #### setBasePath

          void setBasePath​(java.io.File basePath)

      Sets the root path for this diff generator.

      This can be used to make all paths in a diff output be relative to this base path.

      Parameters:
        `basePath` - a base path for this driver

    - #### setForcedBinaryDiff

          void setForcedBinaryDiff​(boolean forced)

      Enables or disables generating differnces between files having a binary MIME type.

      Like the '--force' option of the 'svn diff' command.

      Parameters:
        `forced` - if true binary files will also be diffed, otherwise not

    - #### setEncoding

          void setEncoding​(java.lang.String encoding)

      Sets the encoding charset to be used for a diff output.
      Parameters:
        `encoding` - the name of a charset

    - #### getEncoding

          java.lang.String getEncoding()

      Gets the encoding charset being in use for a diff output.
      Returns:
        the name of the charset being in use

    - #### setEOL

          void setEOL​(byte[] eol)

      Sets the EOL marker bytes to use in diff output.
      Parameters:
        `eol` - EOL bytes
      Since:
        1.2.0

    - #### getEOL

          byte[] getEOL()

      Returns the EOL marker bytes used in diff output.
      Returns:
        EOL bytes
      Since:
        1.2.0

    - #### setDiffDeleted

          void setDiffDeleted​(boolean isDiffDeleted)

      Enables or disables generating differences for deleted files.
      Parameters:
        `isDiffDeleted` - if true then deleted files will be diffed, otherwise not
      See Also:
        `isDiffDeleted()`

    - #### isDiffDeleted

          boolean isDiffDeleted()

      Tells whether deleted files are enabled to be diffed.
      Returns:
        true if deleted files should be diffed (the driver is set to generate differences for deleted files as well), otherwise false
      See Also:
        `setDiffDeleted(boolean)`

    - #### setDiffAdded

          void setDiffAdded​(boolean isDiffAdded)

      Enables or disables generating differences for added files.
      Parameters:
        `isDiffAdded` - if true then added files will be diffed, otherwise not
      See Also:
        `isDiffAdded()`

    - #### isDiffAdded

          boolean isDiffAdded()

      Tells whether added files are enabled to be diffed.
      Returns:
        true if added files should be diffed, otherwise false
      See Also:
        `setDiffAdded(boolean)`

    - #### setDiffCopied

          void setDiffCopied​(boolean isDiffCopied)

      Enables or disables generating differences against copy source for copied files. This switch is relevant to `SVNLookClient`'s diff operations.

      Like the '--diff-copy-from' option of the 'svnlook diff' command.

      Parameters:
        `isDiffCopied` - if true then copied files will be diffed against copy sources, otherwise they will be treated as newly added files
      See Also:
        `isDiffCopied()`

    - #### isDiffCopied

          boolean isDiffCopied()

      Tells whether copied files are enabled to be diffed against their copy sources. This switch is relevant to `SVNLookClient`'s diff operations.
      Returns:
        true if copied files should be diffed against copy sources; false if copied files should be treated as newly added
      See Also:
        `setDiffCopied(boolean)`

    - #### setDiffUnversioned

          void setDiffUnversioned​(boolean diffUnversioned)

      Includes or not unversioned files into diff processing.

      If a diff operation is invoked on a versioned directory and `diffUnversioned` is true then all unversioned files that may be met in the directory will be processed as added. Otherwise if `diffUnversioned` is false such files are ignored.

      Parameters:
        `diffUnversioned` - controls whether to diff unversioned files or not
      See Also:
        `isDiffUnversioned()`

    - #### isDiffUnversioned

          boolean isDiffUnversioned()

      Says if unversioned files are also diffed or ignored.
      Returns:
        true if diffed, false if ignored
      See Also:
        `setDiffUnversioned(boolean)`

    - #### createTempDirectory

          java.io.File createTempDirectory()
                                    throws SVNException

      Creates a temporary directory (when necessary) where temporary files will be created.

      This temporary directory exists till the end of the diff operation.

      Returns:
        an abstract pathname denoting a newly-created temporary directory
      Throws:
        `SVNException` - if a directory can not be created

    - #### displayPropDiff

          void displayPropDiff​(java.lang.String path,
                               SVNProperties baseProps,
                               SVNProperties diff,
                               java.io.OutputStream result)
                        throws SVNException

      Writes the differences in file properties to the specified output stream.
      Parameters:
        `path` - a file path on which the property changes are written to the output
        `baseProps` - a `Map` of old properties (property names are mapped to their values)
        `diff` - a `Map` of changed properties (property names are mapped to their values)
        `result` - the target `OutputStream` where the differences will be written to
      Throws:
        `SVNException` - if can not save diff data

    - #### displayFileDiff

          void displayFileDiff​(java.lang.String path,
                               java.io.File file1,
                               java.io.File file2,
                               java.lang.String rev1,
                               java.lang.String rev2,
                               java.lang.String mimeType1,
                               java.lang.String mimeType2,
                               java.io.OutputStream result)
                        throws SVNException

      Generates and writes differences between two files to the specified output stream.

      `file1` or `file2` may be temporary files crteated to get file contents from the repository (when running diff on URLs). These temporary files will be deleted with the temporary directory (created by `createTempDirectory()`) when the operation ends up.

      Parameters:
        `path` - a file path on which the differences are generated and written to the output
        `file1` - a file with old contents
        `file2` - a file with new contents
        `rev1` - the first diff revision of `file1`
        `rev2` - the second diff revision of `file2`
        `mimeType1` - the MIME-type of `file1`
        `mimeType2` - the MIME-type of `file2`
        `result` - the target `OutputStream` where the differences will be written to
      Throws:
        `SVNException` - if can not save diff data

    - #### displayDeletedDirectory

          void displayDeletedDirectory​(java.lang.String path,
                                       java.lang.String rev1,
                                       java.lang.String rev2)
                                throws SVNException

      Notifies this generator that the directory was deleted in revision `rev2`.
      Parameters:
        `path` - a directory path
        `rev1` - the first diff revision
        `rev2` - the second diff revision
      Throws:
        `SVNException`
      Since:
        1.1

    - #### displayAddedDirectory

          void displayAddedDirectory​(java.lang.String path,
                                     java.lang.String rev1,
                                     java.lang.String rev2)
                              throws SVNException

      Notifies this generator that the directory was added in revision `rev2`.
      Parameters:
        `path` - a directory path
        `rev1` - the first diff revision
        `rev2` - the second diff revision
      Throws:
        `SVNException`
      Since:
        1.1

    - #### isForcedBinaryDiff

          boolean isForcedBinaryDiff()

      Tells whether to force diff even if files are binary.
      Returns:
        true to force diff for binary files; otherwise false
      Since:
        1.1.1