/* * ==================================================================== * Copyright (c) 2004-2012 TMate Software Ltd. All rights reserved. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms * are also available at http://svnkit.com/license.html * If newer versions of this license are posted there, you may use a * newer version instead, at your option. * ==================================================================== */ package org.tmatesoft.svn.core.wc; import java.io.File; import java.util.Date; import org.tmatesoft.svn.core.SVNException; /** * The <b>ISVNAnnotateHandler</b> interface should be implemented to be further * provided to <b>SVNLogClient</b>'s <b>doAnnotate()</b> methods for processing * annotation information per each text line. * * <p> * Here's an example code snippet: * <pre class="javacode"> * <span class="javakeyword">import</span> org.tmatesoft.svn.core.wc.ISVNAnnotateHandler; * <span class="javakeyword">import</span> org.tmatesoft.svn.core.wc.SVNLogClient; * ... * * SVNLogClient logClient; * ... * * logClient.doAnnotate(<span class="javakeyword">new</span> File(<span class="javastring">"path/to/WC/file"</span>), SVNRevision.HEAD, SVNRevision.create(0), * SVNRevision.HEAD, <span class="javakeyword">new</span> ISVNAnnotateHandler(){ * <span class="javakeyword">public void</span> handleLine(Date date, <span class="javakeyword">long</span> revision, * String author, String line){ * <span class="javacomment">//implement this method as you wish, for example:</span> * System.out.println(revision + * <span class="javastring">" "</span> + * author + * <span class="javastring">" "</span> + * date + * <span class="javastring">" "</span> + * line); * } * }); * ...</pre><br /> * * @version 1.3 * @author TMate Software Ltd. * @since 1.2 * @see SVNLogClient */ public interface ISVNAnnotateHandler { /** * @param date * @param revision * @param author * @param line * @throws SVNException * @deprecated use {@link #handleLine(Date, long, String, String, Date, long, String, String, int)} * instead */ public void handleLine(Date date, long revision, String author, String line) 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. * * <p/> * Parameters <code>mergedDate</code>, <code>mergedRevision</code>, <code>mergedAuthor</code> and * <code>mergedPath</code> will be set only if the corresponding method <code>doAnnotate</code> of * {@link SVNLogClient} was called with <code>includeMergedRevisions</code> set to <span class="javakeyword">true</span>. * Otherwise they are irrelevant. * * <p/> * Note: if there is no blame information for this line, <code>revision</code> will be * invalid and <code>author</code> and <code>date</code> will be <span class="javakeyword">null</span>. * * @param date the time moment when changes to <code>line</code> were committed * to the repository * @param revision the revision the changes were committed to * @param author the person who did those changes * @param line a text line of the target file (on which * {@link SVNLogClient#doAnnotate(File, SVNRevision, SVNRevision, SVNRevision, ISVNAnnotateHandler) doAnnotate()} * was invoked) * @param mergedDate date when merge changes occurred * @param mergedRevision revision in which merge changes occurred * @param mergedAuthor author of merge * @param mergedPath absolute repository path of the merged file * @param lineNumber number of the file line for which this information is annotated * @throws SVNException */ public void handleLine(Date date, long revision, String author, String line, Date mergedDate, long mergedRevision, String mergedAuthor, String mergedPath, int lineNumber) throws SVNException; /** * Handles file information for a next revision. If this method returns <span class="javakeyword">true</span> * then file contents will be annotated for <code>revision</code> as well. * * @param date the time moment when changes to <code>line</code> were committed * to the repository * @param revision the revision the changes were committed to * @param author the person who did those changes * @param 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. * @return <span class="javakeyword">true</span> to annotate the file for <code>revision</code> * @throws SVNException */ public boolean handleRevision(Date date, long revision, String author, File contents) throws SVNException; /** * Handles the EOF met after the document contents. * @since 1.2.0 */ public void handleEOF() throws SVNException; }