Author: evenisse Date: Tue Apr 3 08:43:26 2007 New Revision: 525179 URL: http://svn.apache.org/viewvc?view=rev&rev=525179 Log: [SCM-2] Add all non-deprecated commands in the manager. Now we can run a command easily in two lines: ScmRepository repository = manager.makeScmRepository( scmUrl ); manager.checkout( repository, new ScmFileSet( workingDirectory ), null);
Modified: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/manager/AbstractScmManager.java maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/manager/ScmManager.java Modified: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/manager/AbstractScmManager.java URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/manager/AbstractScmManager.java?view=diff&rev=525179&r1=525178&r2=525179 ============================================================================== --- maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/manager/AbstractScmManager.java (original) +++ maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/manager/AbstractScmManager.java Tue Apr 3 08:43:26 2007 @@ -19,6 +19,23 @@ * under the License. */ +import org.apache.maven.scm.ScmBranch; +import org.apache.maven.scm.ScmException; +import org.apache.maven.scm.ScmFileSet; +import org.apache.maven.scm.ScmVersion; +import org.apache.maven.scm.command.add.AddScmResult; +import org.apache.maven.scm.command.changelog.ChangeLogScmResult; +import org.apache.maven.scm.command.checkin.CheckInScmResult; +import org.apache.maven.scm.command.checkout.CheckOutScmResult; +import org.apache.maven.scm.command.diff.DiffScmResult; +import org.apache.maven.scm.command.edit.EditScmResult; +import org.apache.maven.scm.command.export.ExportScmResult; +import org.apache.maven.scm.command.list.ListScmResult; +import org.apache.maven.scm.command.remove.RemoveScmResult; +import org.apache.maven.scm.command.status.StatusScmResult; +import org.apache.maven.scm.command.tag.TagScmResult; +import org.apache.maven.scm.command.unedit.UnEditScmResult; +import org.apache.maven.scm.command.update.UpdateScmResult; import org.apache.maven.scm.log.ScmLogger; import org.apache.maven.scm.provider.ScmProvider; import org.apache.maven.scm.provider.ScmProviderRepository; @@ -29,6 +46,7 @@ import java.io.File; import java.util.ArrayList; +import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.List; @@ -262,5 +280,226 @@ messages.addAll( providerMessages ); return messages; + } + + /** + * + */ + public AddScmResult add( ScmRepository repository, ScmFileSet fileSet ) + throws ScmException + { + return this.getProviderByRepository( repository ).add( repository, fileSet ); + } + + /** + * + */ + public AddScmResult add( ScmRepository repository, ScmFileSet fileSet, String message ) + throws ScmException + { + return this.getProviderByRepository( repository ).add( repository, fileSet, message ); + } + + /** + * + */ + public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate, + int numDays, ScmBranch branch ) + throws ScmException + { + return this.getProviderByRepository( repository ).changeLog( repository, fileSet, startDate, endDate, numDays, + branch ); + } + + /** + * + */ + public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate, + int numDays, ScmBranch branch, String datePattern ) + throws ScmException + { + return this.getProviderByRepository( repository ).changeLog( repository, fileSet, startDate, endDate, numDays, + branch, datePattern ); + } + + /** + * + */ + public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, ScmVersion startVersion, + ScmVersion endVersion ) + throws ScmException + { + return this.getProviderByRepository( repository ).changeLog( repository, fileSet, startVersion, endVersion ); + } + + /** + * + */ + public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, ScmVersion startRevision, + ScmVersion endRevision, String datePattern ) + throws ScmException + { + return this.getProviderByRepository( repository ).changeLog( repository, fileSet, startRevision, endRevision, + datePattern ); + } + + /** + * + */ + public CheckInScmResult checkIn( ScmRepository repository, ScmFileSet fileSet, ScmVersion revision, String message ) + throws ScmException + { + return this.getProviderByRepository( repository ).checkIn( repository, fileSet, revision, message ); + } + + /** + * + */ + public CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet, ScmVersion version ) + throws ScmException + { + return this.getProviderByRepository( repository ).checkOut( repository, fileSet, version ); + } + + /** + * + */ + public CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet, ScmVersion version, + boolean recursive ) + throws ScmException + { + return this.getProviderByRepository( repository ).checkOut( repository, fileSet, version, recursive ); + } + + /** + * + */ + public DiffScmResult diff( ScmRepository repository, ScmFileSet fileSet, ScmVersion startVersion, + ScmVersion endVersion ) + throws ScmException + { + return this.getProviderByRepository( repository ).diff( repository, fileSet, startVersion, endVersion ); + } + + /** + * + */ + public EditScmResult edit( ScmRepository repository, ScmFileSet fileSet ) + throws ScmException + { + return this.getProviderByRepository( repository ).edit( repository, fileSet ); + } + + /** + * + */ + public ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, ScmVersion version ) + throws ScmException + { + return this.getProviderByRepository( repository ).export( repository, fileSet, version ); + } + + /** + * + */ + public ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, ScmVersion version, + String outputDirectory ) + throws ScmException + { + return this.getProviderByRepository( repository ).export( repository, fileSet, version, outputDirectory ); + } + + /** + * + */ + public ListScmResult list( ScmRepository repository, ScmFileSet fileSet, boolean recursive, ScmVersion version ) + throws ScmException + { + return this.getProviderByRepository( repository ).list( repository, fileSet, recursive, version ); + } + + /** + * + */ + public RemoveScmResult remove( ScmRepository repository, ScmFileSet fileSet, String message ) + throws ScmException + { + return this.getProviderByRepository( repository ).remove( repository, fileSet, message ); + } + + /** + * + */ + public StatusScmResult status( ScmRepository repository, ScmFileSet fileSet ) + throws ScmException + { + return this.getProviderByRepository( repository ).status( repository, fileSet ); + } + + /** + * + */ + public TagScmResult tag( ScmRepository repository, ScmFileSet fileSet, String tagName ) + throws ScmException + { + return this.getProviderByRepository( repository ).tag( repository, fileSet, tagName ); + } + + /** + * + */ + public UnEditScmResult unedit( ScmRepository repository, ScmFileSet fileSet ) + throws ScmException + { + return this.getProviderByRepository( repository ).unedit( repository, fileSet ); + } + + /** + * + */ + public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion version ) + throws ScmException + { + return this.getProviderByRepository( repository ).update( repository, fileSet, version ); + } + + /** + * + */ + public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion version, + boolean runChangelog ) + throws ScmException + { + return this.getProviderByRepository( repository ).update( repository, fileSet, version, runChangelog ); + } + + /** + * + */ + public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion version, + String datePattern ) + throws ScmException + { + return this.getProviderByRepository( repository ).update( repository, fileSet, version, datePattern ); + } + + /** + * + */ + public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion version, Date lastUpdate ) + throws ScmException + { + return this.getProviderByRepository( repository ).update( repository, fileSet, version, lastUpdate ); + } + + /** + * + */ + public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion version, Date lastUpdate, + String datePattern ) + throws ScmException + { + return this.getProviderByRepository( repository ).update( repository, fileSet, version, lastUpdate, + datePattern ); } } Modified: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/manager/ScmManager.java URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/manager/ScmManager.java?view=diff&rev=525179&r1=525178&r2=525179 ============================================================================== --- maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/manager/ScmManager.java (original) +++ maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/manager/ScmManager.java Tue Apr 3 08:43:26 2007 @@ -19,12 +19,30 @@ * under the License. */ +import org.apache.maven.scm.ScmBranch; +import org.apache.maven.scm.ScmException; +import org.apache.maven.scm.ScmFileSet; +import org.apache.maven.scm.ScmVersion; +import org.apache.maven.scm.command.add.AddScmResult; +import org.apache.maven.scm.command.changelog.ChangeLogScmResult; +import org.apache.maven.scm.command.checkin.CheckInScmResult; +import org.apache.maven.scm.command.checkout.CheckOutScmResult; +import org.apache.maven.scm.command.diff.DiffScmResult; +import org.apache.maven.scm.command.edit.EditScmResult; +import org.apache.maven.scm.command.export.ExportScmResult; +import org.apache.maven.scm.command.list.ListScmResult; +import org.apache.maven.scm.command.remove.RemoveScmResult; +import org.apache.maven.scm.command.status.StatusScmResult; +import org.apache.maven.scm.command.tag.TagScmResult; +import org.apache.maven.scm.command.unedit.UnEditScmResult; +import org.apache.maven.scm.command.update.UpdateScmResult; import org.apache.maven.scm.provider.ScmProvider; import org.apache.maven.scm.repository.ScmRepository; import org.apache.maven.scm.repository.ScmRepositoryException; import org.apache.maven.scm.repository.UnknownRepositoryStructure; import java.io.File; +import java.util.Date; import java.util.List; /** @@ -80,4 +98,322 @@ ScmProvider getProviderByRepository( ScmRepository repository ) throws NoSuchScmProviderException; + + /** + * Adds the given files to the source control system + * + * @param repository the source control system + * @param fileSet the files to be added + * @return an [EMAIL PROTECTED] org.apache.maven.scm.command.add.AddScmResult} that contains the files that have been added + * @throws org.apache.maven.scm.ScmException + * + */ + AddScmResult add( ScmRepository repository, ScmFileSet fileSet ) + throws ScmException; + + /** + * Adds the given files to the source control system + * + * @param repository the source control system + * @param fileSet the files to be added + * @param message a string that is a comment on the new added file + * @return an [EMAIL PROTECTED] AddScmResult} that contains the files that have been added + * @throws ScmException + */ + AddScmResult add( ScmRepository repository, ScmFileSet fileSet, String message ) + throws ScmException; + + /** + * Returns the changes that have happend in the source control system in a certain period of time. + * This can be adding, removing, updating, ... of files + * + * @param repository the source control system + * @param fileSet the files to know the changes about. Implementations can also give the changes + * from the [EMAIL PROTECTED] org.apache.maven.scm.ScmFileSet#getBasedir()} downwards. + * @param startDate the start date of the period + * @param endDate the end date of the period + * @param numDays the number days before the current time if startdate and enddate are null + * @param branch the branch/tag + * @return The SCM result of the changelog command + * @throws ScmException + */ + ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate, + int numDays, ScmBranch branch ) + throws ScmException; + + /** + * Returns the changes that have happend in the source control system in a certain period of time. + * This can be adding, removing, updating, ... of files + * + * @param repository the source control system + * @param fileSet the files to know the changes about. Implementations can also give the changes + * from the [EMAIL PROTECTED] org.apache.maven.scm.ScmFileSet#getBasedir()} downwards. + * @param startDate the start date of the period + * @param endDate the end date of the period + * @param numDays the number days before the current time if startdate and enddate are null + * @param branch the branch/tag + * @param datePattern the date pattern use in changelog output returned by scm tool + * @return The SCM result of the changelog command + * @throws ScmException + */ + ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate, + int numDays, ScmBranch branch, String datePattern ) + throws ScmException; + + /** + * Returns the changes that have happend in the source control system between two tags. + * This can be adding, removing, updating, ... of files + * + * @param repository the source control system + * @param fileSet the files to know the changes about. Implementations can also give the changes + * from the [EMAIL PROTECTED] org.apache.maven.scm.ScmFileSet#getBasedir()} downwards. + * @param startVersion the start branch/tag/revision + * @param endVersion the end branch/tag/revision + * @return The SCM result of the changelog command + * @throws ScmException + */ + ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, ScmVersion startVersion, + ScmVersion endVersion ) + throws ScmException; + + /** + * Returns the changes that have happend in the source control system between two tags. + * This can be adding, removing, updating, ... of files + * + * @param repository the source control system + * @param fileSet the files to know the changes about. Implementations can also give the changes + * from the [EMAIL PROTECTED] org.apache.maven.scm.ScmFileSet#getBasedir()} downwards. + * @param startRevision the start revision + * @param endRevision the end revision + * @param datePattern the date pattern use in changelog output returned by scm tool + * @return + * @throws ScmException + */ + ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, ScmVersion startRevision, + ScmVersion endRevision, String datePattern ) + throws ScmException; + + /** + * Save the changes you have done into the repository. This will create a new version of the file or + * directory in the repository. + * <p/> + * When the fileSet has no entries, the fileSet.getBaseDir() is recursively committed. + * When the fileSet has entries, the commit is non-recursive and only the elements in the fileSet + * are committed. + * + * @param repository the source control system + * @param fileSet the files to check in (sometimes called commit) + * @param revision branch/tag/revision + * @param message a string that is a comment on the changes that where done + * @return + * @throws ScmException + */ + CheckInScmResult checkIn( ScmRepository repository, ScmFileSet fileSet, ScmVersion revision, String message ) + throws ScmException; + + /** + * Create a copy of the repository on your local machine + * + * @param repository the source control system + * @param fileSet the files are copied to the [EMAIL PROTECTED] org.apache.maven.scm.ScmFileSet#getBasedir()} location + * @param version get the version defined by the revision, branch or tag + * @return + * @throws ScmException + */ + CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet, ScmVersion version ) + throws ScmException; + + /** + * Create a copy of the repository on your local machine. + * + * @param scmRepository the source control system + * @param scmFileSet the files are copied to the [EMAIL PROTECTED] org.apache.maven.scm.ScmFileSet#getBasedir()} location + * @param version get the version defined by the revision, branch or tag + * @param recursive whether to check out recursively + * @return + * @throws ScmException + */ + CheckOutScmResult checkOut( ScmRepository scmRepository, ScmFileSet scmFileSet, ScmVersion version, + boolean recursive ) + throws ScmException; + + /** + * Create a diff between two branch/tag/revision. + * + * @param scmRepository the source control system + * @param scmFileSet the files are copied to the [EMAIL PROTECTED] org.apache.maven.scm.ScmFileSet#getBasedir()} location + * @param startVersion the start branch/tag/revision + * @param endVersion the end branch/tag/revision + * @return + * @throws ScmException + */ + DiffScmResult diff( ScmRepository scmRepository, ScmFileSet scmFileSet, ScmVersion startVersion, + ScmVersion endVersion ) + throws ScmException; + + /** + * Make a file editable. This is used in source control systems where you look at read-only files + * and you need to make them not read-only anymore before you can edit them. This can also mean + * that no other user in the system can make the file not read-only anymore. + * + * @param repository the source control system + * @param fileSet the files to make editable + * @return + * @throws ScmException + */ + EditScmResult edit( ScmRepository repository, ScmFileSet fileSet ) + throws ScmException; + + /** + * Create an exported copy of the repository on your local machine + * + * @param repository the source control system + * @param fileSet the files are copied to the [EMAIL PROTECTED] org.apache.maven.scm.ScmFileSet#getBasedir()} location + * @param version get the version defined by the branch/tag/revision + * @return + * @throws ScmException + */ + ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, ScmVersion version ) + throws ScmException; + + /** + * Create an exported copy of the repository on your local machine + * + * @param repository the source control system + * @param fileSet the files are copied to the [EMAIL PROTECTED] org.apache.maven.scm.ScmFileSet#getBasedir()} location + * @param version get the version defined by the branch/tag/revision + * @param outputDirectory the directory where the export will be stored + * @return + * @throws ScmException + */ + ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, ScmVersion version, String outputDirectory ) + throws ScmException; + + /** + * List each element (files and directories) of <B>fileSet</B> as they exist in the repository. + * + * @param repository the source control system + * @param fileSet the files to list + * @param recursive descend recursively + * @param version use the version defined by the branch/tag/revision + * @return the list of files in the repository + */ + ListScmResult list( ScmRepository repository, ScmFileSet fileSet, boolean recursive, ScmVersion version ) + throws ScmException; + + /** + * Removes the given files from the source control system + * + * @param repository the source control system + * @param fileSet the files to be removed + * @param message + * @return + * @throws ScmException + */ + RemoveScmResult remove( ScmRepository repository, ScmFileSet fileSet, String message ) + throws ScmException; + + /** + * Returns the status of the files in the source control system. The state of each file can be one + * of the [EMAIL PROTECTED] org.apache.maven.scm.ScmFileStatus} flags. + * + * @param repository the source control system + * @param fileSet the files to know the status about. Implementations can also give the changes + * from the [EMAIL PROTECTED] org.apache.maven.scm.ScmFileSet#getBasedir()} downwards. + * @return + * @throws ScmException + */ + StatusScmResult status( ScmRepository repository, ScmFileSet fileSet ) + throws ScmException; + + /** + * Tag (or label in some systems) will tag the source file with a certain tag + * + * @param repository the source control system + * @param fileSet the files to tag. Implementations can also give the changes + * from the [EMAIL PROTECTED] org.apache.maven.scm.ScmFileSet#getBasedir()} downwards. + * @param tagName the tag name to apply to the files + * @return + * @throws ScmException + */ + TagScmResult tag( ScmRepository repository, ScmFileSet fileSet, String tagName ) + throws ScmException; + + /** + * Make a file no longer editable. This is the conterpart of [EMAIL PROTECTED] #edit(org.apache.maven.scm.repository.ScmRepository,org.apache.maven.scm.ScmFileSet)}. + * It makes the file read-only again. + * + * @param repository the source control system + * @param fileSet the files to make uneditable + * @return + * @throws ScmException + */ + UnEditScmResult unedit( ScmRepository repository, ScmFileSet fileSet ) + throws ScmException; + + /** + * Updates the copy on the local machine with the changes in the repository + * + * @param repository the source control system + * @param fileSet location of your local copy + * @param version use the version defined by the branch/tag/revision + * @return + * @throws ScmException + */ + UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion version ) + throws ScmException; + + /** + * Updates the copy on the local machine with the changes in the repository + * + * @param repository the source control system + * @param fileSet location of your local copy + * @param version use the version defined by the branch/tag/revision + * @param runChangelog Run the changelog command after the update + * @return + * @throws ScmException + */ + UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion version, boolean runChangelog ) + throws ScmException; + + /** + * Updates the copy on the local machine with the changes in the repository + * + * @param repository the source control system + * @param fileSet location of your local copy + * @param version use the version defined by the branch/tag/revision + * @param datePattern the date pattern use in changelog output returned by scm tool + * @return + * @throws ScmException + */ + UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion version, String datePattern ) + throws ScmException; + + /** + * Updates the copy on the local machine with the changes in the repository + * + * @param repository the source control system + * @param fileSet location of your local copy + * @param version use the version defined by the branch/tag/revision + * @param lastUpdate + * @return + * @throws ScmException + */ + UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion version, Date lastUpdate ) + throws ScmException; + + /** + * Updates the copy on the local machine with the changes in the repository + * + * @param repository the source control system + * @param fileSet location of your local copy + * @param version use the version defined by the branch/tag/revision + * @param lastUpdate Date of last update + * @param datePattern the date pattern use in changelog output returned by scm tool + * @return + * @throws ScmException + */ + UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion version, Date lastUpdate, + String datePattern ) + throws ScmException; }