You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ol...@apache.org on 2011/12/07 22:07:37 UTC

svn commit: r1211633 - in /maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm: ChangeFile.java ChangeSet.java ScmFileStatus.java

Author: olamy
Date: Wed Dec  7 21:07:37 2011
New Revision: 1211633

URL: http://svn.apache.org/viewvc?rev=1211633&view=rev
Log:
[SCM-649] Enhance SCM changelog model to hold more data about changes
patch regarding model change.
patch modified with adding @since on added fields
Submitted by Petr Kozelka.

Modified:
    maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ChangeFile.java
    maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ChangeSet.java
    maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ScmFileStatus.java

Modified: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ChangeFile.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ChangeFile.java?rev=1211633&r1=1211632&r2=1211633&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ChangeFile.java (original)
+++ maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ChangeFile.java Wed Dec  7 21:07:37 2011
@@ -45,6 +45,25 @@ public class ChangeFile
     private String revision;
 
     /**
+     * edit type on the file
+     * note: perhaps we should use a different type, ideally enum ? this one seems to target quite different usecases ...
+     * @since 1.7
+     */
+    private ScmFileStatus action;
+
+    /**
+     * the name before copying or moving
+     * @since 1.7
+     */
+    private String originalName;
+
+    /**
+     * the revision from which we {@link ScmFileStatus copied} or {@link ScmFileStatus moved} this file or directory
+     * @since 1.7
+     */
+    private String originalRevision;
+
+    /**
      * Constructor for the ChangeFile object without all details available
      *
      * @param name file name
@@ -78,23 +97,40 @@ public class ChangeFile
     }
 
     /**
-     * Gets the revision attribute of the ChangeLogFile object.
+     * Setter for property name.
      *
-     * @return the latest revision of the file
+     * @param name New value of property name.
      */
-    public String getRevision()
+    public void setName( String name )
     {
-        return revision;
+        this.name = name;
+    }
+
+    public String getOriginalName() {
+        return originalName;
+    }
+
+    public void setOriginalName( String originalName ) {
+
+        this.originalName = originalName;
+    }
+
+    public String getOriginalRevision() {
+        return originalRevision;
+    }
+
+    public void setOriginalRevision(String originalRevision) {
+        this.originalRevision = originalRevision;
     }
 
     /**
-     * Setter for property name.
+     * Gets the revision attribute of the ChangeLogFile object.
      *
-     * @param name New value of property name.
+     * @return the latest revision of the file
      */
-    public void setName( String name )
+    public String getRevision()
     {
-        this.name = name;
+        return revision;
     }
 
     /**
@@ -107,6 +143,14 @@ public class ChangeFile
         this.revision = revision;
     }
 
+    public ScmFileStatus getAction() {
+        return action;
+    }
+
+    public void setAction( ScmFileStatus action ) {
+        this.action = action;
+    }
+
     /**
      * Provide a version of the object as a string for debugging purposes
      *
@@ -114,13 +158,29 @@ public class ChangeFile
      */
     public String toString()
     {
-        StringBuilder buffer = new StringBuilder( getName() );
+        StringBuilder buffer = new StringBuilder(  );
+
+        if ( getAction() != null )
+        {
+            buffer.append( "[" ).append( getAction() ).append( "]:" );
+        }
 
+        buffer.append( getName() );
         if ( getRevision() != null )
         {
             buffer.append( ", " ).append( getRevision() );
         }
 
+        if ( getOriginalName() != null )
+        {
+            buffer.append( ", originalName" ).append( getOriginalName() );
+        }
+
+        if ( getOriginalRevision() != null )
+        {
+            buffer.append( ", originalRevision=" ).append( getOriginalRevision() );
+        }
+
         return buffer.toString();
     }
 }

Modified: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ChangeSet.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ChangeSet.java?rev=1211633&r1=1211632&r2=1211633&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ChangeSet.java (original)
+++ maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ChangeSet.java Wed Dec  7 21:07:37 2011
@@ -23,8 +23,11 @@ import java.io.Serializable;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.Date;
+import java.util.LinkedHashSet;
 import java.util.List;
+import java.util.Set;
 
 import org.apache.maven.scm.provider.ScmProviderRepository;
 import org.apache.maven.scm.util.FilenameUtils;
@@ -120,6 +123,18 @@ public class ChangeSet
     private String revision;
 
     /**
+     * Revision from which this one originates
+     * @since 1.7
+     */
+    private String parentRevision;
+
+    /**
+     * Revisions that were merged into this one
+     * @since 1.7
+     */
+    private Set<String> mergedRevisions;
+
+    /**
      * @param strDate         Date the changes were committed
      * @param userDatePattern pattern of date
      * @param comment         comment provided at commit time
@@ -416,13 +431,44 @@ public class ChangeSet
     {
         this.revision = revision;
     }
-    
-    
+
+    public String getParentRevision() {
+        return parentRevision;
+    }
+
+    public void setParentRevision(String parentRevision) {
+        this.parentRevision = parentRevision;
+    }
+
+    public void addMergedRevision(String mergedRevision) {
+        if (mergedRevisions == null) {
+            mergedRevisions = new LinkedHashSet<String>();
+        }
+        mergedRevisions.add(mergedRevision);
+    }
+
+    public Set<String> getMergedRevisions() {
+        return mergedRevisions == null ? Collections.<String>emptySet() : mergedRevisions;
+    }
+
+    public void setMergedRevisions(Set<String> mergedRevisions) {
+        this.mergedRevisions = mergedRevisions;
+    }
+
     /** {@inheritDoc} */
     public String toString()
     {
         StringBuilder result = new StringBuilder( author == null ? " null " : author );
         result.append( "\n" ).append( date == null ? "null " : date.toString() ).append( "\n" );
+        // parent(s)
+        if ( parentRevision != null ) {
+            result.append( "parent: " ).append( parentRevision );
+            if ( !mergedRevisions.isEmpty() ) {
+                result.append( " + " );
+                result.append( mergedRevisions );
+            }
+            result.append( "\n" );
+        }
         if ( files != null )
         {
             for ( ChangeFile file : files )
@@ -460,13 +506,34 @@ public class ChangeSet
             .append( author )
             .append( "]]></author>\n" );
 
+        if ( parentRevision != null) {
+            buffer.append( "\t\t<parent>" ).append( getParentRevision() ).append( "</parent>\n" );
+        }
+        for ( String mergedRevision : getMergedRevisions() )
+        {
+            buffer.append( "\t\t<merge>" ).append( mergedRevision ).append( "</merge>\n" );
+        }
+
         if ( files != null )
         {
             for ( ChangeFile file : files )
             {
-                buffer.append( "\t\t<file>\n" ).append( "\t\t\t<name>" ).append( escapeValue( file.getName() ) )
-                    .append( "</name>\n" ).append( "\t\t\t<revision>" ).append( file.getRevision() )
-                    .append( "</revision>\n" );
+                buffer.append( "\t\t<file>\n" );
+                if ( file.getAction() != null )
+                {
+                    buffer.append( "\t\t\t<action>" ).append( file.getAction() ).append( "</action>\n" );
+                }
+                buffer.append( "\t\t\t<name>" ).append( escapeValue( file.getName() ) ).append( "</name>\n" );
+                buffer.append( "\t\t\t<revision>" ).append( file.getRevision() ).append( "</revision>\n" );
+                if ( file.getOriginalName() != null )
+                {
+                    buffer.append( "\t\t\t<orig-name>" ).append( escapeValue( file.getOriginalName() ) ).append( "</orig-name>\n" );
+                }
+                if ( file.getOriginalRevision() != null )
+                {
+                    buffer.append( "\t\t\t<orig-revision>" ).append( file.getOriginalRevision() ).append(
+                        "</orig-revision>\n" );
+                }
                 buffer.append( "\t\t</file>\n" );
             }
         }
@@ -502,6 +569,8 @@ public class ChangeSet
         result = prime * result + ( ( author == null ) ? 0 : author.hashCode() );
         result = prime * result + ( ( comment == null ) ? 0 : comment.hashCode() );
         result = prime * result + ( ( date == null ) ? 0 : date.hashCode() );
+        result = prime * result + ( ( parentRevision == null ) ? 0 : parentRevision.hashCode() );
+        result = prime * result + ( ( mergedRevisions == null ) ? 0 : mergedRevisions.hashCode() );
         result = prime * result + ( ( files == null ) ? 0 : files.hashCode() );
         return result;
     }

Modified: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ScmFileStatus.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ScmFileStatus.java?rev=1211633&r1=1211632&r2=1211633&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ScmFileStatus.java (original)
+++ maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ScmFileStatus.java Wed Dec  7 21:07:37 2011
@@ -58,6 +58,18 @@ public final class ScmFileStatus
     public static final ScmFileStatus MODIFIED = new ScmFileStatus( "modified" );
 
     /**
+     * The file has been renamed or moved in the working tree.
+     * @since 1.7
+     */
+    public static final ScmFileStatus RENAMED = new ScmFileStatus( "renamed" );
+
+    /**
+     * The file has been copied in the working tree.
+     * @since 1.7
+     */
+    public static final ScmFileStatus COPIED = new ScmFileStatus( "copied" );
+
+    /**
      * The file is missing in the working tree.
      */
     public static final ScmFileStatus MISSING = new ScmFileStatus( "missing" );