Coverage Report - net.sf.statsvn.util.ISvnInfoProcessor
 
Classes in this File Line Coverage Branch Coverage Complexity
ISvnInfoProcessor
N/A
N/A
1
 
 1  
 package net.sf.statsvn.util;
 2  
 
 3  
 import java.io.IOException;
 4  
 import java.io.InputStream;
 5  
 
 6  
 import net.sf.statcvs.input.LogSyntaxException;
 7  
 
 8  
 /**
 9  
  * Performs svn info queries.
 10  
  *  
 11  
  * @author jkealey
 12  
  *
 13  
  */
 14  
 public interface ISvnInfoProcessor {
 15  
 
 16  
     /**
 17  
      * Converts an absolute path in the repository to a path relative to the
 18  
      * working folder root.
 19  
      * 
 20  
      * Will return null if absolute path does not start with getModuleName();
 21  
      * 
 22  
      * @param absolute
 23  
      *            Example (assume getModuleName() returns /trunk/statsvn)
 24  
      *            /trunk/statsvn/package.html
 25  
      * @return Example: package.html
 26  
      */
 27  
     public abstract String absoluteToRelativePath(String absolute);
 28  
 
 29  
     /**
 30  
      * Converts an absolute path in the repository to a URL, using the
 31  
      * repository URL
 32  
      * 
 33  
      * @param absolute
 34  
      *            Example: /trunk/statsvn/package.html
 35  
      * @return Example: svn://svn.statsvn.org/statsvn/trunk/statsvn/package.html
 36  
      */
 37  
     public abstract String absolutePathToUrl(final String absolute);
 38  
 
 39  
     /**
 40  
      * Converts a relative path in the working folder to a URL, using the
 41  
      * working folder's root URL
 42  
      * 
 43  
      * @param relative
 44  
      *            Example: src/Messages.java
 45  
      * @return Example:
 46  
      *         svn://svn.statsvn.org/statsvn/trunk/statsvn/src/Messages.java
 47  
      * 
 48  
      */
 49  
     public abstract String relativePathToUrl(String relative);
 50  
 
 51  
     /**
 52  
      * Converts a relative path in the working folder to an absolute path in the
 53  
      * repository.
 54  
      * 
 55  
      * @param relative
 56  
      *            Example: src/Messages.java
 57  
      * @return Example: /trunk/statsvn/src/Messages.java
 58  
      * 
 59  
      */
 60  
     public abstract String relativeToAbsolutePath(final String relative);
 61  
 
 62  
     /**
 63  
      * Returns true if the file exists in the working copy (according to the svn
 64  
      * metadata, and not file system checks).
 65  
      * 
 66  
      * @param relativePath
 67  
      *            the path
 68  
      * @return <tt>true</tt> if it exists
 69  
      */
 70  
     public abstract boolean existsInWorkingCopy(final String relativePath);
 71  
 
 72  
     /**
 73  
      * Assumes #loadInfo(String) has been called. Never ends with /, might be
 74  
      * empty.
 75  
      * 
 76  
      * @return The absolute path of the root of the working folder in the
 77  
      *         repository.
 78  
      */
 79  
     public abstract String getModuleName();
 80  
 
 81  
     /**
 82  
      * Returns the revision number of the file in the working copy.
 83  
      * 
 84  
      * @param relativePath
 85  
      *            the filename
 86  
      * @return the revision number if it exists in the working copy, null
 87  
      *         otherwise.
 88  
      */
 89  
     public abstract String getRevisionNumber(final String relativePath);
 90  
 
 91  
     /**
 92  
      * Assumes #loadInfo() has been invoked.
 93  
      * 
 94  
      * @return the root of the working folder's revision number (last checked
 95  
      *         out revision number)
 96  
      */
 97  
     public abstract String getRootRevisionNumber();
 98  
 
 99  
     /**
 100  
      * Assumes #loadInfo() has been invoked.
 101  
      * 
 102  
      * @return the root of the working folder's url (example:
 103  
      *         svn://svn.statsvn.org/statsvn/trunk/statsvn)
 104  
      */
 105  
     public abstract String getRootUrl();
 106  
 
 107  
     /**
 108  
      * Assumes #loadInfo() has been invoked.
 109  
      * 
 110  
      * @return the uuid of the repository
 111  
      */
 112  
     public abstract String getRepositoryUuid();
 113  
 
 114  
     /**
 115  
      * Assumes #loadInfo() has been invoked.
 116  
      * 
 117  
      * @return the repository url (example: svn://svn.statsvn.org/statsvn)
 118  
      */
 119  
     public abstract String getRepositoryUrl();
 120  
 
 121  
     /**
 122  
      * Returns true if the path has been identified as a directory.
 123  
      * 
 124  
      * @param relativePath
 125  
      *            the path
 126  
      * @return true if it is a known directory.
 127  
      */
 128  
     public abstract boolean isDirectory(final String relativePath);
 129  
 
 130  
     /**
 131  
      * Adds a directory to the list of known directories. Used when inferring
 132  
      * implicit actions on deleted paths.
 133  
      * 
 134  
      * @param relativePath
 135  
      *            the relative path.
 136  
      */
 137  
     public abstract void addDirectory(final String relativePath);
 138  
 
 139  
     /**
 140  
      * Loads the information from svn info if needed.
 141  
      * 
 142  
      * @param stream
 143  
      *            the input stream representing 
 144  
      *            an svn info command.
 145  
      * @throws LogSyntaxException
 146  
      *             if the format of the svn info is invalid
 147  
      * @throws IOException
 148  
      *             if we can't read from the response stream.
 149  
      */
 150  
     public abstract void loadInfo(final InputStream stream) throws LogSyntaxException, IOException;
 151  
 
 152  
     /**
 153  
      * Initializes our representation of the repository.
 154  
      * 
 155  
      * @throws LogSyntaxException
 156  
      *             if the svn info --xml is malformed
 157  
      * @throws IOException
 158  
      *             if there is an error reading from the stream
 159  
      */
 160  
     public abstract void loadInfo() throws LogSyntaxException, IOException;
 161  
 
 162  
     /**
 163  
      * Converts a url to an absolute path in the repository.
 164  
      * 
 165  
      * @param url
 166  
      *            Examples: svn://svn.statsvn.org/statsvn/trunk/statsvn,
 167  
      *            svn://svn.statsvn.org/statsvn/trunk/statsvn/package.html
 168  
      * @return Example: /trunk/statsvn, /trunk/statsvn/package.html
 169  
      */
 170  
     public abstract String urlToAbsolutePath(String url);
 171  
 
 172  
     /**
 173  
      * Converts a url to a relative path in the repository.
 174  
      * 
 175  
      * @param url
 176  
      *            Examples: svn://svn.statsvn.org/statsvn/trunk/statsvn,
 177  
      *            svn://svn.statsvn.org/statsvn/trunk/statsvn/package.html
 178  
      * @return Example: ".", package.html
 179  
      */
 180  
     public abstract String urlToRelativePath(final String url);
 181  
 
 182  
     
 183  
     /**
 184  
      * Verifies that the "svn info" command can return the repository root
 185  
      * (info available in svn >= 1.3.0)
 186  
      * 
 187  
      * @throws SvnVersionMismatchException
 188  
      *             if <tt>svn info</tt> failed to provide a non-empty repository root
 189  
      */
 190  
     public abstract void checkRepoRootAvailable() throws SvnVersionMismatchException ;
 191  
 }