Author: carlos
Date: Fri Dec 22 07:56:26 2006
New Revision: 489678

URL: http://svn.apache.org/viewvc?view=rev&rev=489678
Log:
[MRM-262] Reporting adds duplicated entries on each run

Added:
    
maven/archiva/trunk/archiva-reports-standard/src/test/java/org/apache/maven/archiva/reporting/database/ReportingDatabaseTest.java
   (with props)
Modified:
    
maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/database/ReportingDatabase.java
    maven/archiva/trunk/archiva-reports-standard/src/main/mdo/reporting.mdo

Modified: 
maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/database/ReportingDatabase.java
URL: 
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/database/ReportingDatabase.java?view=diff&rev=489678&r1=489677&r2=489678
==============================================================================
--- 
maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/database/ReportingDatabase.java
 (original)
+++ 
maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/database/ReportingDatabase.java
 Fri Dec 22 07:56:26 2006
@@ -92,8 +92,12 @@
     public void addFailure( Artifact artifact, String processor, String 
problem, String reason )
     {
         ArtifactResults results = getArtifactResults( artifact );
-        results.addFailure( createResult( processor, problem, reason ) );
-        numFailures++;
+        Result result = createResult( processor, problem, reason );
+        if ( !results.getFailures().contains( result ) )
+        {
+            results.addFailure( result );
+            numFailures++;
+        }
         updateTimings();
 
         if ( filteredDatabases.containsKey( problem ) )
@@ -107,8 +111,12 @@
     public void addNotice( Artifact artifact, String processor, String 
problem, String reason )
     {
         ArtifactResults results = getArtifactResults( artifact );
-        results.addNotice( createResult( processor, problem, reason ) );
-        numNotices++;
+        Result result = createResult( processor, problem, reason );
+        if ( !results.getNotices().contains( result ) )
+        {
+            results.addNotice( result );
+            numNotices++;
+        }
         updateTimings();
 
         if ( filteredDatabases.containsKey( problem ) )
@@ -122,8 +130,12 @@
     public void addWarning( Artifact artifact, String processor, String 
problem, String reason )
     {
         ArtifactResults results = getArtifactResults( artifact );
-        results.addWarning( createResult( processor, problem, reason ) );
-        numWarnings++;
+        Result result = createResult( processor, problem, reason );
+        if ( !results.getWarnings().contains( result ) )
+        {
+            results.addWarning( result );
+            numWarnings++;
+        }
         updateTimings();
 
         if ( filteredDatabases.containsKey( problem ) )
@@ -134,7 +146,7 @@
         }
     }
 
-    private ArtifactResults getArtifactResults( Artifact artifact )
+    ArtifactResults getArtifactResults( Artifact artifact )
     {
         return getArtifactResults( artifact.getGroupId(), 
artifact.getArtifactId(), artifact.getVersion(),
                                    artifact.getType(), 
artifact.getClassifier() );
@@ -203,8 +215,12 @@
         {
             metadataWithProblems.add( results );
         }
-        results.addFailure( createResult( processor, problem, reason ) );
-        numFailures++;
+        Result result = createResult( processor, problem, reason );
+        if ( !results.getFailures().contains( result ) )
+        {
+            results.addFailure( result );
+            numFailures++;
+        }
         updateTimings();
 
         if ( filteredDatabases.containsKey( problem ) )
@@ -222,8 +238,12 @@
         {
             metadataWithProblems.add( results );
         }
-        results.addWarning( createResult( processor, problem, reason ) );
-        numWarnings++;
+        Result result = createResult( processor, problem, reason );
+        if ( !results.getWarnings().contains( result ) )
+        {
+            results.addWarning( result );
+            numWarnings++;
+        }
         updateTimings();
 
         if ( filteredDatabases.containsKey( problem ) )
@@ -241,8 +261,12 @@
         {
             metadataWithProblems.add( results );
         }
-        results.addNotice( createResult( processor, problem, reason ) );
-        numNotices++;
+        Result result = createResult( processor, problem, reason );
+        if ( !results.getNotices().contains( result ) )
+        {
+            results.addNotice( result );
+            numNotices++;
+        }
         updateTimings();
 
         if ( filteredDatabases.containsKey( problem ) )
@@ -346,7 +370,7 @@
         metadataWithProblems.remove( results );
     }
 
-    private MetadataResults getMetadataResults( RepositoryMetadata metadata, 
long lastModified )
+    MetadataResults getMetadataResults( RepositoryMetadata metadata, long 
lastModified )
     {
         return getMetadataResults( metadata.getGroupId(), 
metadata.getArtifactId(), metadata.getBaseVersion(),
                                    lastModified );

Modified: 
maven/archiva/trunk/archiva-reports-standard/src/main/mdo/reporting.mdo
URL: 
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-reports-standard/src/main/mdo/reporting.mdo?view=diff&rev=489678&r1=489677&r2=489678
==============================================================================
--- maven/archiva/trunk/archiva-reports-standard/src/main/mdo/reporting.mdo 
(original)
+++ maven/archiva/trunk/archiva-reports-standard/src/main/mdo/reporting.mdo Fri 
Dec 22 07:56:26 2006
@@ -238,6 +238,41 @@
           </description>
         </field>
       </fields>
+
+      <codeSegments>
+        <codeSegment>
+          <version>1.0.0</version>
+          <code><![CDATA[
+            public boolean equals( Object obj )
+            {
+                if ( obj instanceof Result )
+                {
+                    if ( this == obj )
+                    {
+                        return true;
+                    }
+                    Result rhs = (Result) obj;
+                    return new org.apache.commons.lang.builder.EqualsBuilder()
+                        .append( problem, rhs.problem )
+                        .append( processor, rhs.processor )
+                        .append( reason, rhs.reason )
+                        .isEquals();
+                }
+                return false;
+            }
+
+            public int hashCode()
+            {
+                return new org.apache.commons.lang.builder.HashCodeBuilder( 
19, 43 )
+                    .append( getReason() )
+                    .append( getProcessor() )
+                    .append( getProblem() )
+                    .toHashCode();
+            }
+          ]]></code>
+        </codeSegment>
+      </codeSegments>
+
     </class>
   </classes>
 </model>

Added: 
maven/archiva/trunk/archiva-reports-standard/src/test/java/org/apache/maven/archiva/reporting/database/ReportingDatabaseTest.java
URL: 
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-reports-standard/src/test/java/org/apache/maven/archiva/reporting/database/ReportingDatabaseTest.java?view=auto&rev=489678
==============================================================================
--- 
maven/archiva/trunk/archiva-reports-standard/src/test/java/org/apache/maven/archiva/reporting/database/ReportingDatabaseTest.java
 (added)
+++ 
maven/archiva/trunk/archiva-reports-standard/src/test/java/org/apache/maven/archiva/reporting/database/ReportingDatabaseTest.java
 Fri Dec 22 07:56:26 2006
@@ -0,0 +1,146 @@
+package org.apache.maven.archiva.reporting.database;
+
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import junit.framework.TestCase;
+
+import org.apache.maven.archiva.reporting.model.ArtifactResults;
+import org.apache.maven.archiva.reporting.model.MetadataResults;
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.DefaultArtifact;
+import 
org.apache.maven.artifact.repository.metadata.ArtifactRepositoryMetadata;
+import org.apache.maven.artifact.repository.metadata.RepositoryMetadata;
+import org.apache.maven.artifact.versioning.VersionRange;
+
+/**
+ * Test for [EMAIL PROTECTED] ReportingDatabase}.
+ * 
+ * @author <a href="mailto:[EMAIL PROTECTED]">Carlos Sanchez</a>
+ * @version $Id$
+ */
+public class ReportingDatabaseTest
+    extends TestCase
+{
+    private Artifact artifact;
+    private String processor, problem, reason;
+    private ReportingDatabase reportingDatabase;
+    private RepositoryMetadata metadata;
+
+    protected void setUp()
+        throws Exception
+    {
+        super.setUp();
+        artifact = new DefaultArtifact( "group", "artifact", 
VersionRange.createFromVersion( "1.0" ), "scope", "type",
+                                        "classifier", null );
+        processor = "processor";
+        problem = "problem";
+        reason = "reason";
+        reportingDatabase = new ReportingDatabase( null );
+
+        metadata = new ArtifactRepositoryMetadata( artifact );
+    }
+
+    public void testAddNoticeArtifactStringStringString()
+    {
+        reportingDatabase.addNotice( artifact, processor, problem, reason );
+        ArtifactResults artifactResults = 
reportingDatabase.getArtifactResults( artifact );
+
+        assertEquals( 1, reportingDatabase.getNumNotices() );
+        assertEquals( 1, artifactResults.getNotices().size() );
+
+        reportingDatabase.addNotice( artifact, processor, problem, reason );
+        artifactResults = reportingDatabase.getArtifactResults( artifact );
+
+        assertEquals( 1, reportingDatabase.getNumNotices() );
+        assertEquals( 1, artifactResults.getNotices().size() );
+    }
+
+    public void testAddWarningArtifactStringStringString()
+    {
+        reportingDatabase.addWarning( artifact, processor, problem, reason );
+        ArtifactResults artifactResults = 
reportingDatabase.getArtifactResults( artifact );
+
+        assertEquals( 1, reportingDatabase.getNumWarnings() );
+        assertEquals( 1, artifactResults.getWarnings().size() );
+
+        reportingDatabase.addWarning( artifact, processor, problem, reason );
+        artifactResults = reportingDatabase.getArtifactResults( artifact );
+
+        assertEquals( 1, reportingDatabase.getNumWarnings() );
+        assertEquals( 1, artifactResults.getWarnings().size() );
+    }
+
+    public void testAddFailureArtifactStringStringString()
+    {
+        reportingDatabase.addFailure( artifact, processor, problem, reason );
+        ArtifactResults artifactResults = 
reportingDatabase.getArtifactResults( artifact );
+
+        assertEquals( 1, reportingDatabase.getNumFailures() );
+        assertEquals( 1, artifactResults.getFailures().size() );
+
+        reportingDatabase.addFailure( artifact, processor, problem, reason );
+        artifactResults = reportingDatabase.getArtifactResults( artifact );
+
+        assertEquals( 1, reportingDatabase.getNumFailures() );
+        assertEquals( 1, artifactResults.getFailures().size() );
+    }
+
+    public void testAddNoticeRepositoryMetadataStringStringString()
+    {
+        reportingDatabase.addNotice( metadata, processor, problem, reason );
+        MetadataResults metadataResults = 
reportingDatabase.getMetadataResults( metadata, System.currentTimeMillis() );
+
+        assertEquals( 1, reportingDatabase.getNumNotices() );
+        assertEquals( 1, metadataResults.getNotices().size() );
+
+        reportingDatabase.addNotice( metadata, processor, problem, reason );
+        metadataResults = reportingDatabase.getMetadataResults( metadata, 
System.currentTimeMillis() );
+
+        assertEquals( 1, reportingDatabase.getNumNotices() );
+        assertEquals( 1, metadataResults.getNotices().size() );
+    }
+
+    public void testAddWarningRepositoryMetadataStringStringString()
+    {
+        reportingDatabase.addWarning( metadata, processor, problem, reason );
+        MetadataResults metadataResults = 
reportingDatabase.getMetadataResults( metadata, System.currentTimeMillis() );
+
+        assertEquals( 1, reportingDatabase.getNumWarnings() );
+        assertEquals( 1, metadataResults.getWarnings().size() );
+
+        reportingDatabase.addWarning( metadata, processor, problem, reason );
+        metadataResults = reportingDatabase.getMetadataResults( metadata, 
System.currentTimeMillis() );
+
+        assertEquals( 1, reportingDatabase.getNumWarnings() );
+        assertEquals( 1, metadataResults.getWarnings().size() );
+    }
+
+    public void testAddFailureRepositoryMetadataStringStringString()
+    {
+        reportingDatabase.addFailure( metadata, processor, problem, reason );
+        MetadataResults metadataResults = 
reportingDatabase.getMetadataResults( metadata, System.currentTimeMillis() );
+
+        assertEquals( 1, reportingDatabase.getNumFailures() );
+        assertEquals( 1, metadataResults.getFailures().size() );
+
+        reportingDatabase.addFailure( metadata, processor, problem, reason );
+        metadataResults = reportingDatabase.getMetadataResults( metadata, 
System.currentTimeMillis() );
+
+        assertEquals( 1, reportingDatabase.getNumFailures() );
+        assertEquals( 1, metadataResults.getFailures().size() );
+    }
+}

Propchange: 
maven/archiva/trunk/archiva-reports-standard/src/test/java/org/apache/maven/archiva/reporting/database/ReportingDatabaseTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/archiva/trunk/archiva-reports-standard/src/test/java/org/apache/maven/archiva/reporting/database/ReportingDatabaseTest.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"


Reply via email to