Package org.tmatesoft.svn.core.wc

## Interface ISVNAnnotateHandler

- All Known Implementing Classes:
    `SVNXMLAnnotateHandler`

      public interface ISVNAnnotateHandler

  The ISVNAnnotateHandler interface should be implemented to be further provided to SVNLogClient's doAnnotate() methods for processing annotation information per each text line.

  Here's an example code snippet:

       import org.tmatesoft.svn.core.wc.ISVNAnnotateHandler;
       import org.tmatesoft.svn.core.wc.SVNLogClient;
       ...

           SVNLogClient logClient;
           ...

           logClient.doAnnotate(new File("path/to/WC/file"), SVNRevision.HEAD, SVNRevision.create(0),
                                SVNRevision.HEAD, new ISVNAnnotateHandler(){
                                    public void handleLine(Date date, long revision,
                                                                  String author, String line){
                                        //implement this method as you wish, for example:
                                        System.out.println(revision +
                                                           "  " +
                                                           author +
                                                           "  " +
                                                           date +
                                                           "  " +
                                                           line);
                                    }
                                });
           ...

  Since:
    1.2
  Version:
    1.3
  Author:
    TMate Software Ltd.
  See Also:
    `SVNLogClient`

- - ### Method Summary

    All Methods Instance Methods Abstract Methods Deprecated Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `handleEOF()` | Handles the EOF met after the document contents.
    `void` | `handleLine​(java.util.Date date, long revision, java.lang.String author, java.lang.String line)` | Deprecated. use `handleLine(Date, long, String, String, Date, long, String, String, int)` instead
    `void` | `handleLine​(java.util.Date date, long revision, java.lang.String author, java.lang.String line, java.util.Date mergedDate, long mergedRevision, java.lang.String mergedAuthor, java.lang.String mergedPath, int lineNumber)` | Handles per line annotation information - that is information about who last committed (changed) this line, the revision and timestamp when it was last committed.
    `boolean` | `handleRevision​(java.util.Date date, long revision, java.lang.String author, java.io.File contents)` | Handles file information for a next revision.

- - ### Method Detail

    - #### handleLine

          void handleLine​(java.util.Date date,
                          long revision,
                          java.lang.String author,
                          java.lang.String line)
                   throws SVNException

      Deprecated.
      use `handleLine(Date, long, String, String, Date, long, String, String, int)` instead
      Parameters:
        `date` -
        `revision` -
        `author` -
        `line` -
      Throws:
        `SVNException`

    - #### handleLine

          void handleLine​(java.util.Date date,
                          long revision,
                          java.lang.String author,
                          java.lang.String line,
                          java.util.Date mergedDate,
                          long mergedRevision,
                          java.lang.String mergedAuthor,
                          java.lang.String mergedPath,
                          int lineNumber)
                   throws SVNException

      Handles per line annotation information - that is information about who last committed (changed) this line, the revision and timestamp when it was last committed.

      Parameters `mergedDate`, `mergedRevision`, `mergedAuthor` and `mergedPath` will be set only if the corresponding method `doAnnotate` of `SVNLogClient` was called with `includeMergedRevisions` set to true. Otherwise they are irrelevant.

      Note: if there is no blame information for this line, `revision` will be invalid and `author` and `date` will be null.
      Parameters:
        `date` - the time moment when changes to `line` were committed to the repository
        `revision` - the revision the changes were committed to
        `author` - the person who did those changes
        `line` - a text line of the target file (on which `doAnnotate()` was invoked)
        `mergedDate` - date when merge changes occurred
        `mergedRevision` - revision in which merge changes occurred
        `mergedAuthor` - author of merge
        `mergedPath` - absolute repository path of the merged file
        `lineNumber` - number of the file line for which this information is annotated
      Throws:
        `SVNException`

    - #### handleRevision

          boolean handleRevision​(java.util.Date date,
                                 long revision,
                                 java.lang.String author,
                                 java.io.File contents)
                          throws SVNException

      Handles file information for a next revision. If this method returns true then file contents will be annotated for `revision` as well.
      Parameters:
        `date` - the time moment when changes to `line` were committed to the repository
        `revision` - the revision the changes were committed to
        `author` - the person who did those changes
        `contents` - temporary file with contents. This file shouldn't be used as persistent reference as it will be overwritten after this method exits and eventually deleted.
      Returns:
        true to annotate the file for `revision`
      Throws:
        `SVNException`

    - #### handleEOF

          void handleEOF()
                  throws SVNException

      Handles the EOF met after the document contents.
      Throws:
        `SVNException`
      Since:
        1.2.0