You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm-commits@maven.apache.org by ev...@apache.org on 2007/04/11 11:35:25 UTC

svn commit: r527432 - in /maven/scm/trunk: maven-scm-api/src/main/java/org/apache/maven/scm/command/changelog/ maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/changel...

Author: evenisse
Date: Wed Apr 11 02:35:23 2007
New Revision: 527432

URL: http://svn.apache.org/viewvc?view=rev&rev=527432
Log:
[SCM-294] Merge CVS changelogs if they are equals

Modified:
    maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/changelog/ChangeLogSet.java
    maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/changelog/AbstractCvsChangeLogCommand.java
    maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/changelog/CvsChangeLogConsumer.java
    maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsexe/src/main/java/org/apache/maven/scm/provider/cvslib/cvsexe/command/changelog/CvsExeChangeLogCommand.java
    maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsjava/src/main/java/org/apache/maven/scm/provider/cvslib/cvsjava/command/changelog/CvsJavaChangeLogCommand.java

Modified: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/changelog/ChangeLogSet.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/changelog/ChangeLogSet.java?view=diff&rev=527432&r1=527431&r2=527432
==============================================================================
--- maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/changelog/ChangeLogSet.java (original)
+++ maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/changelog/ChangeLogSet.java Wed Apr 11 02:35:23 2007
@@ -20,6 +20,7 @@
  */
 
 import org.apache.maven.scm.ChangeSet;
+import org.apache.maven.scm.ScmVersion;
 
 import java.text.SimpleDateFormat;
 import java.util.Date;
@@ -40,6 +41,10 @@
 
     private Date endDate;
 
+    private ScmVersion startVersion;
+
+    private ScmVersion endVersion;
+
     /**
      * Initializes a new instance of this class.
      *
@@ -86,6 +91,36 @@
     }
 
     /**
+     * Returns the start version (revision/branch/label) for this set.
+     *
+     * @return the start version (revision/branch/label) for this set, or <code>null</code>.
+     */
+    public ScmVersion getStartVersion()
+    {
+        return startVersion;
+    }
+
+    public void setStartVersion( ScmVersion startVersion )
+    {
+        this.startVersion = startVersion;
+    }
+
+    /**
+     * Returns the end version (revision/branch/label) for this set.
+     *
+     * @return the end version (revision/branch/label) for this set, or <code>null</code>.
+     */
+    public ScmVersion getEndVersion()
+    {
+        return endVersion;
+    }
+
+    public void setEndVersion( ScmVersion endVersion )
+    {
+        this.endVersion = endVersion;
+    }
+
+    /**
      * Returns the collection of changeSet.
      *
      * @return the collection of {@link org.apache.maven.scm.ChangeSet} objects for this set.
@@ -139,6 +174,19 @@
         {
             buffer.append( " end=\"" )
                 .append( formatter.format( getEndDate() ) )
+                .append( "\"" );
+        }
+
+        if ( startVersion != null )
+        {
+            buffer.append( " startVersion=\"" )
+                .append( getStartVersion() )
+                .append( "\"" );
+        }
+        if ( endVersion != null )
+        {
+            buffer.append( " endVersion=\"" )
+                .append( getEndVersion() )
                 .append( "\"" );
         }
 

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/changelog/AbstractCvsChangeLogCommand.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/changelog/AbstractCvsChangeLogCommand.java?view=diff&rev=527432&r1=527431&r2=527432
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/changelog/AbstractCvsChangeLogCommand.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/changelog/AbstractCvsChangeLogCommand.java Wed Apr 11 02:35:23 2007
@@ -106,10 +106,11 @@
         getLogger().info( "Executing: " + cl );
         getLogger().info( "Working directory: " + cl.getWorkingDirectory().getAbsolutePath() );
 
-        return executeCvsCommand( cl, startDate, endDate, datePattern );
+        return executeCvsCommand( cl, startDate, endDate, startVersion, endVersion, datePattern );
     }
 
     protected abstract ChangeLogScmResult executeCvsCommand( Commandline cl, Date startDate, Date endDate,
+                                                             ScmVersion startVersion, ScmVersion endVersion,
                                                              String datePattern )
         throws ScmException;
 

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/changelog/CvsChangeLogConsumer.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/changelog/CvsChangeLogConsumer.java?view=diff&rev=527432&r1=527431&r2=527432
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/changelog/CvsChangeLogConsumer.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvs-commons/src/main/java/org/apache/maven/scm/provider/cvslib/command/changelog/CvsChangeLogConsumer.java Wed Apr 11 02:35:23 2007
@@ -25,6 +25,9 @@
 import org.apache.maven.scm.util.AbstractConsumer;
 
 import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Iterator;
 import java.util.List;
 import java.util.StringTokenizer;
 
@@ -112,7 +115,49 @@
 
     public List getModifications()
     {
-        return entries;
+        Collections.sort( entries, new Comparator()
+        {
+            public int compare( Object entry1, Object entry2 )
+            {
+                ChangeSet set1 = (ChangeSet) entry1;
+                ChangeSet set2 = (ChangeSet) entry2;
+                return set1.getDate().compareTo( set2.getDate() );
+            }
+        } );
+        List fixedModifications = new ArrayList();
+        ChangeSet currentEntry = null;
+        for ( Iterator entryIterator = entries.iterator(); entryIterator.hasNext(); )
+        {
+            ChangeSet entry = (ChangeSet) entryIterator.next();
+            if ( currentEntry == null )
+            {
+                currentEntry = entry;
+            }
+            else if ( areEqual( currentEntry, entry ) )
+            {
+                currentEntry.addFile( (ChangeFile) entry.getFiles().get( 0 ) );
+            }
+            else
+            {
+                fixedModifications.add( currentEntry );
+                currentEntry = entry;
+            }
+        }
+        if ( currentEntry != null )
+        {
+            fixedModifications.add( currentEntry );
+        }
+        return fixedModifications;
+    }
+
+    private boolean areEqual( ChangeSet set1, ChangeSet set2 )
+    {
+        if ( set1.getAuthor().equals( set2.getAuthor() ) && set1.getComment().equals( set2.getComment() ) &&
+            set1.getDate().equals( set2.getDate() ) )
+        {
+            return true;
+        }
+        return false;
     }
 
     public void consumeLine( String line )

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsexe/src/main/java/org/apache/maven/scm/provider/cvslib/cvsexe/command/changelog/CvsExeChangeLogCommand.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsexe/src/main/java/org/apache/maven/scm/provider/cvslib/cvsexe/command/changelog/CvsExeChangeLogCommand.java?view=diff&rev=527432&r1=527431&r2=527432
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsexe/src/main/java/org/apache/maven/scm/provider/cvslib/cvsexe/command/changelog/CvsExeChangeLogCommand.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsexe/src/main/java/org/apache/maven/scm/provider/cvslib/cvsexe/command/changelog/CvsExeChangeLogCommand.java Wed Apr 11 02:35:23 2007
@@ -20,6 +20,7 @@
  */
 
 import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmVersion;
 import org.apache.maven.scm.command.changelog.ChangeLogScmResult;
 import org.apache.maven.scm.command.changelog.ChangeLogSet;
 import org.apache.maven.scm.provider.cvslib.command.changelog.AbstractCvsChangeLogCommand;
@@ -37,7 +38,8 @@
 public class CvsExeChangeLogCommand
     extends AbstractCvsChangeLogCommand
 {
-    protected ChangeLogScmResult executeCvsCommand( Commandline cl, Date startDate, Date endDate, String datePattern )
+    protected ChangeLogScmResult executeCvsCommand( Commandline cl, Date startDate, Date endDate, String datePattern,
+                                                    ScmVersion startVersion, ScmVersion endVersion )
         throws ScmException
     {
         CvsChangeLogConsumer consumer = new CvsChangeLogConsumer( getLogger(), datePattern );
@@ -60,7 +62,10 @@
             return new ChangeLogScmResult( cl.toString(), "The cvs command failed.", stderr.getOutput(), false );
         }
 
-        return new ChangeLogScmResult( cl.toString(),
-                                       new ChangeLogSet( consumer.getModifications(), startDate, endDate ) );
+        ChangeLogSet changeLogSet = new ChangeLogSet( consumer.getModifications(), startDate, endDate );
+        changeLogSet.setStartVersion( startVersion );
+        changeLogSet.setEndVersion( endVersion );
+
+        return new ChangeLogScmResult( cl.toString(), changeLogSet );
     }
 }

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsjava/src/main/java/org/apache/maven/scm/provider/cvslib/cvsjava/command/changelog/CvsJavaChangeLogCommand.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsjava/src/main/java/org/apache/maven/scm/provider/cvslib/cvsjava/command/changelog/CvsJavaChangeLogCommand.java?view=diff&rev=527432&r1=527431&r2=527432
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsjava/src/main/java/org/apache/maven/scm/provider/cvslib/cvsjava/command/changelog/CvsJavaChangeLogCommand.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-cvs/maven-scm-provider-cvsjava/src/main/java/org/apache/maven/scm/provider/cvslib/cvsjava/command/changelog/CvsJavaChangeLogCommand.java Wed Apr 11 02:35:23 2007
@@ -20,6 +20,7 @@
  */
 
 import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmVersion;
 import org.apache.maven.scm.command.changelog.ChangeLogScmResult;
 import org.apache.maven.scm.command.changelog.ChangeLogSet;
 import org.apache.maven.scm.provider.cvslib.command.changelog.AbstractCvsChangeLogCommand;
@@ -40,7 +41,8 @@
 public class CvsJavaChangeLogCommand
     extends AbstractCvsChangeLogCommand
 {
-    protected ChangeLogScmResult executeCvsCommand( Commandline cl, Date startDate, Date endDate, String datePattern )
+    protected ChangeLogScmResult executeCvsCommand( Commandline cl, Date startDate, Date endDate,
+                                                    ScmVersion startVersion, ScmVersion endVersion, String datePattern )
         throws ScmException
     {
         CvsLogListener logListener = new CvsLogListener();
@@ -75,8 +77,11 @@
                                            false );
         }
 
-        return new ChangeLogScmResult( cl.toString(),
-                                       new ChangeLogSet( consumer.getModifications(), startDate, endDate ) );
+        ChangeLogSet changeLogSet = new ChangeLogSet( consumer.getModifications(), startDate, endDate );
+        changeLogSet.setStartVersion( startVersion );
+        changeLogSet.setEndVersion( endVersion );
+
+        return new ChangeLogScmResult( cl.toString(), changeLogSet );
     }
 
     protected void addDateRangeParameter( Commandline cl, String dateRange )