JavaSVN Home

org.tmatesoft.svn.core
Class SVNAnnotationGenerator

java.lang.Object
  extended byorg.tmatesoft.svn.core.SVNAnnotationGenerator
All Implemented Interfaces:
ISVNDeltaConsumer, ISVNFileRevisionHandler

public class SVNAnnotationGenerator
extends Object
implements ISVNFileRevisionHandler

The SVNAnnotationGenerator class is used to annotate files - that is to place author and revision information in-line for the specified file.

Since SVNAnnotationGenerator implements ISVNFileRevisionHandler, it is merely passed to a getFileRevisions() method of SVNRepository. After that you handle the resultant annotated file line-by-line providing an ISVNAnnotateHandler implementation to the reportAnnotations() method:

 import org.tmatesoft.svn.core.SVNAnnotationGenerator;
 import org.tmatesoft.svn.core.io.SVNRepositoryFactory;
 import org.tmatesoft.svn.core.io.SVNRepository;
 import org.tmatesoft.svn.core.wc.SVNAnnotateHandler;
 ...
 
     File tmpFile;
     SVNRepository repos;
     ISVNAnnotateHandler annotateHandler;
     ISVNEventHandler cancelHandler;
     long startRev = 0;
     long endRev = 150;
     ...
     
     SVNAnnotationGenerator generator = new SVNAnnotationGenerator(path, tmpFile, cancelHandler);
     try {
         repos.getFileRevisions("", startRev, endRev, generator);
         generator.reportAnnotations(annotateHandler, null);
     } finally {
         generator.dispose();
     }
 ...

Version:
1.1
Author:
TMate Software Ltd.

Constructor Summary
SVNAnnotationGenerator(String path, File tmpDirectory, long startRevision, ISVNEventHandler cancelBaton)
          Constructs an annotation generator object.
 
Method Summary
 void applyTextDelta(String token, String baseChecksum)
          Starts applying text delta(s) to an opened file.
 void closeRevision(String token)
          Does nothing.
 void dispose()
          Finalizes an annotation operation releasing resources involved by this generator.
 void openRevision(SVNFileRevision fileRevision)
          Handles a file revision info.
 void reportAnnotations(ISVNAnnotateHandler handler, String inputEncoding)
          Dispatches file lines along with author & revision info to the provided annotation handler.
 OutputStream textDeltaChunk(String token, SVNDiffWindow diffWindow)
          Collects a next delta chunk.
 void textDeltaEnd(String token)
          Finalizes collecting text delta(s).
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SVNAnnotationGenerator

public SVNAnnotationGenerator(String path,
                              File tmpDirectory,
                              long startRevision,
                              ISVNEventHandler cancelBaton)
Constructs an annotation generator object. A user may want to have a chance to interrupt an operation - so, cancelBaton's ISVNEventHandler.checkCancelled() method is used for this purpose.

Parameters:
path - a file path (relative to a repository location)
tmpDirectory - a revision to stop at
startRevision - a start revision to begin annotation with
cancelBaton - a baton which is used to check if an operation is cancelled
Method Detail

openRevision

public void openRevision(SVNFileRevision fileRevision)
                  throws SVNException
Description copied from interface: ISVNFileRevisionHandler
Handles a file revision info.

Specified by:
openRevision in interface ISVNFileRevisionHandler
Parameters:
fileRevision -
Throws:
SVNException - if one of the following occurs:
  • the file is binary (not text)
  • operation is cancelled
See Also:
SVNFileRevision

closeRevision

public void closeRevision(String token)
                   throws SVNException
Does nothing.

Specified by:
closeRevision in interface ISVNFileRevisionHandler
Parameters:
token - a file token (name or path)
Throws:
SVNException

applyTextDelta

public void applyTextDelta(String token,
                           String baseChecksum)
                    throws SVNException
Description copied from interface: ISVNDeltaConsumer
Starts applying text delta(s) to an opened file.

Specified by:
applyTextDelta in interface ISVNDeltaConsumer
Parameters:
token - a file path relative to the edit root directory
baseChecksum - an MD5 checksum for the base file contents (before the file is changed)
Throws:
SVNException - if the calculated base file checksum didn't match the expected baseChecksum

textDeltaChunk

public OutputStream textDeltaChunk(String token,
                                   SVNDiffWindow diffWindow)
                            throws SVNException
Description copied from interface: ISVNDeltaConsumer
Collects a next delta chunk. The return type is nomore relevant and is left only for backward compatibility. So, the return value may be just null. Otherwise if it's not null, the stream will be immediately closed.

If there are more than one windows for the file, this method is called several times.

Specified by:
textDeltaChunk in interface ISVNDeltaConsumer
Parameters:
token - a file path relative to the edit root directory
diffWindow - a next diff window
Returns:
an output stream
Throws:
SVNException

textDeltaEnd

public void textDeltaEnd(String token)
                  throws SVNException
Description copied from interface: ISVNDeltaConsumer
Finalizes collecting text delta(s).

Specified by:
textDeltaEnd in interface ISVNDeltaConsumer
Parameters:
token - a file path relative to the edit root directory
Throws:
SVNException

reportAnnotations

public void reportAnnotations(ISVNAnnotateHandler handler,
                              String inputEncoding)
                       throws SVNException
Dispatches file lines along with author & revision info to the provided annotation handler.

Parameters:
handler - an annotation handler that processes file lines with author & revision info
inputEncoding - a desired character set (encoding) of text lines
Throws:
SVNException

dispose

public void dispose()
Finalizes an annotation operation releasing resources involved by this generator. Should be called after reportAnnotations().


JavaSVN Home

Copyright © 2004-2006 TMate Software Ltd. All Rights Reserved.