Author: dkulp
Date: Sun Mar 11 08:09:45 2007
New Revision: 516919

URL: http://svn.apache.org/viewvc?view=rev&rev=516919
Log:
MPMD-28
Cleanup aggregate mode.   Add project names to html output.

Added:
    
maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdFileInfo.java
   (with props)
Modified:
    
maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdReport.java
    
maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdReport.java
    
maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdReportGenerator.java
    
maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdReport.java
    
maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdReportListener.java
    
maven/plugins/trunk/maven-pmd-plugin/src/main/resources/cpd-report.properties

Modified: 
maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdReport.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdReport.java?view=diff&rev=516919&r1=516918&r2=516919
==============================================================================
--- 
maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdReport.java
 (original)
+++ 
maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdReport.java
 Sun Mar 11 08:09:45 2007
@@ -271,21 +271,43 @@
             }
         }
         
-        List directories = new ArrayList(compileSourceRoots);
-        List testdirectories = new ArrayList();
+        List directories = new ArrayList();
+        
+        for ( Iterator i = compileSourceRoots.iterator(); i.hasNext(); )
+        {
+            String root = (String) i.next();
+            File sroot = new File(root);
+            directories.add( new PmdFileInfo( project, sroot, sourceXref) );
+        }
+        
         if ( includeTests )
         {
-            testdirectories.addAll(testSourceRoots);
+            for ( Iterator i = testSourceRoots.iterator(); i.hasNext(); )
+            {
+                String root = (String) i.next();
+                File sroot = new File(root);
+                directories.add( new PmdFileInfo( project, sroot, testXref) );
+            }
         }
         if ( aggregate )
         {
             for ( Iterator i = reactorProjects.iterator(); i.hasNext(); )
             {
                 MavenProject localProject = (MavenProject) i.next();
-                directories.addAll(localProject.getCompileSourceRoots());
+                for ( Iterator i2 = 
localProject.getCompileSourceRoots().iterator(); i2.hasNext(); )
+                {
+                    String root = (String) i2.next();
+                    File sroot = new File(root);
+                    directories.add( new PmdFileInfo( localProject, sroot, 
sourceXref) );
+                }
                 if ( includeTests )
                 {
-                    
testdirectories.addAll(localProject.getTestCompileSourceRoots());
+                    for ( Iterator i2 = 
localProject.getTestCompileSourceRoots().iterator(); i2.hasNext(); )
+                    {
+                        String root = (String) i2.next();
+                        File sroot = new File(root);
+                        directories.add( new PmdFileInfo( localProject, sroot, 
testXref) );
+                    }
                 }
             }
   
@@ -318,8 +340,8 @@
 
         for ( Iterator it = directories.iterator(); it.hasNext();)
         {
-            String root = (String)it.next();
-            File sourceDirectory = new File(root);
+            PmdFileInfo finfo = (PmdFileInfo) it.next();
+            File sourceDirectory = finfo.getSourceDirectory();
             if ( sourceDirectory.exists()
                 && sourceDirectory.isDirectory()
                 && !excludeRootFiles.contains(sourceDirectory))
@@ -327,25 +349,11 @@
                 List newfiles = FileUtils.getFiles( sourceDirectory, 
including, excludesStr.toString() );
                 for ( Iterator it2 = newfiles.iterator(); it2.hasNext(); )
                 {
-                    files.put( it2.next(), new Object[] { sourceDirectory , 
sourceXref });
-                }
-            }
-        }        
-        for ( Iterator it = testdirectories.iterator(); it.hasNext();)
-        {
-            String root = (String)it.next();
-            File testDirectory = new File(root);
-            if ( testDirectory.exists()
-                && testDirectory.isDirectory()
-                && !excludeRootFiles.contains(testDirectory))
-            {
-                List newfiles = FileUtils.getFiles( testDirectory, including, 
excludesStr.toString() );
-                for ( Iterator it2 = newfiles.iterator(); it2.hasNext(); )
-                {
-                    files.put( it2.next(), new Object[] { testDirectory , 
testXref });
+                    files.put( it2.next(), finfo);
                 }
             }
         }        
+                
         return files;
     }
 

Modified: 
maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdReport.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdReport.java?view=diff&rev=516919&r1=516918&r2=516919
==============================================================================
--- 
maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdReport.java
 (original)
+++ 
maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdReport.java
 Sun Mar 11 08:09:45 2007
@@ -106,7 +106,7 @@
             cpd.go();
 
             CpdReportGenerator gen =
-                new CpdReportGenerator( getSink(), files, getBundle( locale ) 
);
+                new CpdReportGenerator( getSink(), files, getBundle( locale ), 
aggregate );
             gen.generate( cpd.getMatches() );
 
             if ( !isHtml() )

Modified: 
maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdReportGenerator.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdReportGenerator.java?view=diff&rev=516919&r1=516918&r2=516919
==============================================================================
--- 
maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdReportGenerator.java
 (original)
+++ 
maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdReportGenerator.java
 Sun Mar 11 08:09:45 2007
@@ -27,6 +27,7 @@
 import net.sourceforge.pmd.PMD;
 import net.sourceforge.pmd.cpd.Match;
 
+import org.apache.maven.project.MavenProject;
 import org.codehaus.doxia.sink.Sink;
 import org.codehaus.plexus.util.StringUtils;
 
@@ -43,12 +44,15 @@
     private Map fileMap;
 
     private ResourceBundle bundle;
+    
+    private boolean aggregate;
 
-    public CpdReportGenerator( Sink sink, Map fileMap, ResourceBundle bundle )
+    public CpdReportGenerator( Sink sink, Map fileMap, ResourceBundle bundle, 
boolean aggregate )
     {
         this.sink = sink;
         this.fileMap = fileMap;
         this.bundle = bundle;
+        this.aggregate = aggregate;
     }
 
     /**
@@ -118,18 +122,20 @@
             String filename1 = match.getFirstMark().getTokenSrcID();
             
             File file = new File( filename1 );
-            Object fileInfo[] = (Object[]) fileMap.get( file );
-            File sourceDirectory = (File) fileInfo[0];
-            String xrefLocation = (String) fileInfo[1];
+            PmdFileInfo fileInfo = (PmdFileInfo) fileMap.get( file );
+            File sourceDirectory = fileInfo.getSourceDirectory();
+            String xrefLocation = fileInfo.getXrefLocation();
+            MavenProject projectFile1 = fileInfo.getProject();
             
             filename1 = StringUtils.substring( filename1, 
sourceDirectory.getAbsolutePath().length() + 1 );
 
             String filename2 = match.getSecondMark().getTokenSrcID();
             file = new File( filename2 );
-            fileInfo = (Object[]) fileMap.get( file );
-            sourceDirectory = (File) fileInfo[0];
-            String xrefLocation2 = (String) fileInfo[1];
+            fileInfo = (PmdFileInfo) fileMap.get( file );
+            sourceDirectory = fileInfo.getSourceDirectory();
+            String xrefLocation2 = fileInfo.getXrefLocation();
             filename2 = StringUtils.substring( filename2, 
sourceDirectory.getAbsolutePath().length() + 1 );
+            MavenProject projectFile2 = fileInfo.getProject();
 
             String code = match.getSourceCodeSlice();
             int line1 = match.getFirstMark().getBeginLine();
@@ -141,6 +147,12 @@
             sink.tableHeaderCell();
             sink.text( bundle.getString( "report.cpd.column.file" ) );
             sink.tableHeaderCell_();
+            if ( aggregate )
+            {
+                sink.tableHeaderCell();
+                sink.text( bundle.getString( "report.cpd.column.project" ) );
+                sink.tableHeaderCell_();
+            }
             sink.tableHeaderCell();
             sink.text( bundle.getString( "report.cpd.column.line" ) );
             sink.tableHeaderCell_();
@@ -151,6 +163,12 @@
             sink.tableCell();
             sink.text( filename1 );
             sink.tableCell_();
+            if ( aggregate )
+            {
+                sink.tableCell();
+                sink.text( projectFile1.getName() );
+                sink.tableCell_();
+            }
             sink.tableCell();
 
             if ( xrefLocation != null )
@@ -172,7 +190,16 @@
             sink.tableCell();
             sink.text( filename2 );
             sink.tableCell_();
+            if ( aggregate )
+            {
+                sink.tableCell();
+                sink.text( projectFile2.getName() );
+                sink.tableCell_();
+            }
             sink.tableCell();
+            
+            
+            
             if ( xrefLocation != null )
             {
                 sink.link( xrefLocation2 + "/" + filename2.replaceAll( 
"\\.java$", ".html" ).replace( '\\', '/' ) + "#" +
@@ -189,8 +216,13 @@
             // Source snippet
             sink.tableRow();
 
+            
+            int colspan = 2;
+            if ( aggregate ) {
+                colspan = 3;
+            }        
             // TODO Cleaner way to do this?
-            sink.rawText( "<td colspan='2'>" );
+            sink.rawText( "<td colspan='" + colspan + "'>" );
             sink.verbatim( false );
             sink.text( code );
             sink.verbatim_();

Added: 
maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdFileInfo.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdFileInfo.java?view=auto&rev=516919
==============================================================================
--- 
maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdFileInfo.java
 (added)
+++ 
maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdFileInfo.java
 Sun Mar 11 08:09:45 2007
@@ -0,0 +1,40 @@
+package org.apache.maven.plugin.pmd;
+
+import java.io.File;
+
+import org.apache.maven.project.MavenProject;
+
+public class PmdFileInfo {
+    
+    MavenProject project;
+    File sourceDir;
+    String xref;
+    
+    
+    public PmdFileInfo(MavenProject project,
+                       File dir,
+                       String x) 
+    {
+        this.project = project;
+        this.sourceDir = dir;
+        this.xref = x;
+    }
+    
+    
+    public String getXrefLocation()
+    {
+        return xref;
+    }
+    
+    public File getSourceDirectory() 
+    {
+        return sourceDir;
+    }
+    
+    public MavenProject getProject() 
+    {
+        return project;
+    }
+    
+
+}

Propchange: 
maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdFileInfo.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdFileInfo.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: 
maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdReport.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdReport.java?view=diff&rev=516919&r1=516918&r2=516919
==============================================================================
--- 
maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdReport.java
 (original)
+++ 
maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdReport.java
 Sun Mar 11 08:09:45 2007
@@ -138,7 +138,7 @@
             RuleContext ruleContext = new RuleContext();
             Report report = new Report();
             // TODO: use source roots instead
-            PmdReportListener reportSink = new PmdReportListener( sink, 
getBundle( locale ) );
+            PmdReportListener reportSink = new PmdReportListener( sink, 
getBundle( locale ), aggregate );
 
             report.addListener( reportSink );
             ruleContext.setReport( report );
@@ -193,14 +193,12 @@
             {
                 Map.Entry entry = (Map.Entry) i.next();
                 File file = (File) entry.getKey();
-                Object fileInfo[] = (Object[]) entry.getValue();
-                File sourceDir = (File) fileInfo[0];
-                String xrefLoc = (String) fileInfo[1];
+                PmdFileInfo fileInfo = (PmdFileInfo) entry.getValue();
+                File sourceDir = fileInfo.getSourceDirectory();
 
                 // TODO: lazily call beginFile in case there are no rules
 
-                reportSink.beginFile( file , sourceDir );
-                reportSink.setXrefLocation( xrefLoc );
+                reportSink.beginFile( file , fileInfo );
                 ruleContext.setSourceCodeFilename( file.getAbsolutePath() );
                 for ( int idx = 0; idx < rulesets.length; idx++ )
                 {

Modified: 
maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdReportListener.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdReportListener.java?view=diff&rev=516919&r1=516918&r2=516919
==============================================================================
--- 
maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdReportListener.java
 (original)
+++ 
maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdReportListener.java
 Sun Mar 11 08:09:45 2007
@@ -52,19 +52,22 @@
 
     private ResourceBundle bundle;
 
-    private String xrefLocation;
+    private PmdFileInfo fileInfo;
 
     private List violations = new ArrayList();
 
+    private boolean aggregate;
+    
     // The number of erroneous files
     private int fileCount = 0;
 
     //private List metrics = new ArrayList();
 
-    public PmdReportListener( Sink sink, ResourceBundle bundle )
+    public PmdReportListener( Sink sink, ResourceBundle bundle, boolean 
aggregate )
     {
         this.sink = sink;
         this.bundle = bundle;
+        this.aggregate = aggregate;
     }
 
     private String getTitle()
@@ -78,7 +81,12 @@
         {
             sink.section2();
             sink.sectionTitle2();
-            sink.text( currentFilename );
+            String title = currentFilename;
+            if ( aggregate ) 
+            {
+                title = fileInfo.getProject().getName() + " - " + 
currentFilename;
+            }
+            sink.text( title );
             sink.sectionTitle2_();
 
             sink.table();
@@ -137,6 +145,7 @@
 
     private void outputLineLink( int line )
     {
+        String xrefLocation = fileInfo.getXrefLocation();
         if ( xrefLocation != null )
         {
             sink.link( xrefLocation + "/" + currentFilename.replaceAll( 
"\\.java$", ".html" ) + "#" + line );
@@ -191,9 +200,11 @@
         // TODO files summary
     }
 
-    public void beginFile( File file, File sourceDir )
+    public void beginFile( File file, PmdFileInfo finfo )
     {
-        currentFilename = StringUtils.substring( file.getAbsolutePath(), 
sourceDir.getAbsolutePath().length() + 1 );
+        fileInfo = finfo;
+        currentFilename = StringUtils.substring( file.getAbsolutePath(),
+                                                 
finfo.getSourceDirectory().getAbsolutePath().length() + 1 );
         currentFilename = StringUtils.replace( currentFilename, "\\", "/" );
         fileInitialized = false;
     }
@@ -289,13 +300,4 @@
         sink.close();
     }
 
-    public String getXrefLocation()
-    {
-        return xrefLocation;
-    }
-
-    public void setXrefLocation( String xrefLocation )
-    {
-        this.xrefLocation = xrefLocation;
-    }
 }

Modified: 
maven/plugins/trunk/maven-pmd-plugin/src/main/resources/cpd-report.properties
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/resources/cpd-report.properties?view=diff&rev=516919&r1=516918&r2=516919
==============================================================================
--- 
maven/plugins/trunk/maven-pmd-plugin/src/main/resources/cpd-report.properties 
(original)
+++ 
maven/plugins/trunk/maven-pmd-plugin/src/main/resources/cpd-report.properties 
Sun Mar 11 08:09:45 2007
@@ -19,6 +19,7 @@
 report.cpd.description=Duplicate code detection.
 report.cpd.title=CPD Results
 report.cpd.column.file=File
+report.cpd.column.project=Project
 report.cpd.column.line=Line
 report.cpd.cpdlink=The following document contains the results of PMD's 
 report.cpd.dupes=Duplications


Reply via email to