Author: brett
Date: Wed Dec 16 03:47:02 2009
New Revision: 891113
URL: http://svn.apache.org/viewvc?rev=891113&view=rev
Log:
[MRM-1301] add back summary statistics for per-type counts
Modified:
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/reports/GenerateReportAction.java
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/statisticsReport.jsp
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/reports/GenerateReportActionTest.java
archiva/branches/MRM-1025/archiva-modules/plugins/repository-statistics/pom.xml
archiva/branches/MRM-1025/archiva-modules/plugins/repository-statistics/src/main/java/org/apache/archiva/metadata/repository/stats/DefaultRepositoryStatisticsManager.java
archiva/branches/MRM-1025/archiva-modules/plugins/repository-statistics/src/main/java/org/apache/archiva/metadata/repository/stats/RepositoryStatistics.java
archiva/branches/MRM-1025/archiva-modules/plugins/repository-statistics/src/test/java/org/apache/archiva/metadata/repository/stats/RepositoryStatisticsManagerTest.java
Modified:
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/reports/GenerateReportAction.java
URL:
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/reports/GenerateReportAction.java?rev=891113&r1=891112&r2=891113&view=diff
==============================================================================
---
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/reports/GenerateReportAction.java
(original)
+++
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/reports/GenerateReportAction.java
Wed Dec 16 03:47:02 2009
@@ -298,8 +298,8 @@
}
input = new StringBuffer(
- "Repository,Total File Count,Total Size,Artifact Count,Group
Count,Project Count," +
- "Plugins,Archetypes,Jars,Wars,Deployments,Downloads\n" );
+ "Repository,Total File Count,Total Size,Artifact Count,Group
Count,Project Count,Plugins,Archetypes," +
+ "Jars,Wars\n" );
// multiple repos
for ( String repo : selectedRepositories )
@@ -322,14 +322,11 @@
input.append( repositoryStats.getTotalArtifactFileSize()
).append( "," );
input.append( repositoryStats.getTotalArtifactCount()
).append( "," );
input.append( repositoryStats.getTotalGroupCount() ).append(
"," );
- input.append( repositoryStats.getTotalProjectCount()
);//.append( "," );
- // TODO
-// input.append( repositoryStats.getPluginCount() ).append( ","
);
-// input.append( repositoryStats.getArchetypeCount() ).append(
"," );
-// input.append( repositoryStats.getJarCount() ).append( "," );
-// input.append( repositoryStats.getWarCount() ).append( "," );
-// input.append( repositoryStats.getDeploymentCount() ).append(
"," );
-// input.append( repositoryStats.getDownloadCount() ).append(
"\n" );
+ input.append( repositoryStats.getTotalProjectCount() ).append(
"," );
+ input.append( repositoryStats.getTotalCountForType(
"maven-plugin" ) ).append( "," );
+ input.append( repositoryStats.getTotalCountForType(
"maven-archetype" ) ).append( "," );
+ input.append( repositoryStats.getTotalCountForType( "jar" )
).append( "," );
+ input.append( repositoryStats.getTotalCountForType( "war" ) );
input.append( "\n" );
}
}
@@ -356,8 +353,8 @@
}
input = new StringBuffer(
- "Date of Scan,Total File Count,Total Size,Artifact
Count,Group Count,Project Count," +
- "Plugins,Archetypes,Jars,Wars,Deployments,Downloads\n"
);
+ "Date of Scan,Total File Count,Total Size,Artifact
Count,Group Count,Project Count,Plugins," +
+ "Archetypes,Jars,Wars\n" );
for ( RepositoryStatistics repositoryStats : stats )
{
@@ -366,14 +363,11 @@
input.append( repositoryStats.getTotalArtifactFileSize()
).append( "," );
input.append( repositoryStats.getTotalArtifactCount()
).append( "," );
input.append( repositoryStats.getTotalGroupCount()
).append( "," );
- input.append( repositoryStats.getTotalProjectCount()
);//.append( "," );
- // TODO
-// input.append( repositoryStats.getPluginCount() ).append( ","
);
-// input.append( repositoryStats.getArchetypeCount() ).append(
"," );
-// input.append( repositoryStats.getJarCount() ).append( "," );
-// input.append( repositoryStats.getWarCount() ).append( "," );
-// input.append( repositoryStats.getDeploymentCount() ).append(
"," );
-// input.append( repositoryStats.getDownloadCount() );
+ input.append( repositoryStats.getTotalProjectCount()
).append( "," );
+ input.append( repositoryStats.getTotalCountForType(
"maven-plugin" ) ).append( "," );
+ input.append( repositoryStats.getTotalCountForType(
"maven-archetype" ) ).append( "," );
+ input.append( repositoryStats.getTotalCountForType( "jar"
) ).append( "," );
+ input.append( repositoryStats.getTotalCountForType( "war"
) );
input.append( "\n" );
}
Modified:
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/statisticsReport.jsp
URL:
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/statisticsReport.jsp?rev=891113&r1=891112&r2=891113&view=diff
==============================================================================
---
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/statisticsReport.jsp
(original)
+++
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/statisticsReport.jsp
Wed Dec 16 03:47:02 2009
@@ -150,14 +150,10 @@
<th>Artifact Count</th>
<th>Group Count</th>
<th>Project Count</th>
- <%-- TODO
<th>Plugins</th>
<th>Archetypes</th>
<th>Jars</th>
<th>Wars</th>
- <th>Deployments</th>
- <th>Downloads</th>
- --%>
</tr>
<c:forEach var="stats" items="${repositoryStatistics}" varStatus="i">
@@ -168,15 +164,11 @@
<td align="right">${stats.totalArtifactCount}</td>
<td align="right">${stats.totalGroupCount}</td>
<td align="right">${stats.totalProjectCount}</td>
- <%-- TODO
- <td align="right">${stats.pluginCount}</td>
- <td align="right">${stats.archetypeCount}</td>
- <td align="right">${stats.jarCount}</td>
- <td align="right">${stats.warCount}</td>
- <td align="right">${stats.deploymentCount}</td>
- <td align="right">${stats.downloadCount}</td>
- --%>
- </tr>
+ <td align="right">${stats.totalCountForType['maven-plugin']}</td>
+ <td align="right">${stats.totalCountForType['maven-archetype']}</td>
+ <td align="right">${stats.totalCountForType['jar']}</td>
+ <td align="right">${stats.totalCountForType['war']}</td>
+ </tr>
</c:forEach>
</table>
</c:when>
@@ -191,15 +183,11 @@
<th>Artifact Count</th>
<th>Group Count</th>
<th>Project Count</th>
- <%-- TODO
<th>Plugins</th>
<th>Archetypes</th>
<th>Jars</th>
<th>Wars</th>
- <th>Deployments</th>
- <th>Downloads</th>
- --%>
- </tr>
+ </tr>
<c:forEach var="stats" items="${repositoryStatistics}">
<tr>
@@ -209,14 +197,10 @@
<td align="right">${stats.totalArtifactCount}</td>
<td align="right">${stats.totalGroupCount}</td>
<td align="right">${stats.totalProjectCount}</td>
- <%-- TODO
- <td align="right">${stats.pluginCount}</td>
- <td align="right">${stats.archetypeCount}</td>
- <td align="right">${stats.jarCount}</td>
- <td align="right">${stats.warCount}</td>
- <td align="right">${stats.deploymentCount}</td>
- <td align="right">${stats.downloadCount}</td>
- --%>
+ <td align="right">${stats.totalCountForType['maven-plugin']}</td>
+ <td align="right">${stats.totalCountForType['maven-archetype']}</td>
+ <td align="right">${stats.totalCountForType['jar']}</td>
+ <td align="right">${stats.totalCountForType['war']}</td>
</tr>
</c:forEach>
</table>
Modified:
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/reports/GenerateReportActionTest.java
URL:
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/reports/GenerateReportActionTest.java?rev=891113&r1=891112&r2=891113&view=diff
==============================================================================
---
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/reports/GenerateReportActionTest.java
(original)
+++
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/reports/GenerateReportActionTest.java
Wed Dec 16 03:47:02 2009
@@ -262,12 +262,9 @@
assertFalse( action.hasActionErrors() );
assertFalse( action.hasFieldErrors() );
-// assertEquals(
-// "Date of Scan,Total File Count,Total Size,Artifact Count,Group
Count,Project Count,Plugins,Archetypes,Jars,Wars,Deployments,Downloads\n" +
-// date + ",0,0,0,0,0,1,0,1,1,0,0\n", IOUtils.toString(
action.getInputStream() ) );
assertEquals(
- "Date of Scan,Total File Count,Total Size,Artifact Count,Group
Count,Project Count,Plugins,Archetypes,Jars,Wars,Deployments,Downloads\n" +
- date + ",0,0,0,0,0\n", IOUtils.toString(
action.getInputStream() ) );
+ "Date of Scan,Total File Count,Total Size,Artifact Count,Group
Count,Project Count,Plugins,Archetypes,Jars,Wars\n" +
+ date + ",0,0,0,0,0,0,0,0,0\n", IOUtils.toString(
action.getInputStream() ) );
repositoryStatisticsManagerControl.verify();
}
@@ -581,12 +578,10 @@
private void assertMultiRepoCsvResult()
throws IOException
{
-// assertEquals(
-// "Repository,Total File Count,Total Size,Artifact Count,Group
Count,Project Count,Plugins,Archetypes,Jars,Wars,Deployments,Downloads\n" +
-// "snapshots,0,0,0,0,0,1,0,1,1,0,0\n" +
"internal,0,0,0,0,0,1,0,1,1,0,0\n",
assertEquals(
- "Repository,Total File Count,Total Size,Artifact Count,Group
Count,Project Count,Plugins,Archetypes,Jars,Wars,Deployments,Downloads\n" +
- "snapshots,0,0,0,0,0\n" + "internal,0,0,0,0,0\n",
IOUtils.toString( action.getInputStream() ) );
+ "Repository,Total File Count,Total Size,Artifact Count,Group
Count,Project Count,Plugins,Archetypes,Jars,Wars\n" +
+ "snapshots,0,0,0,0,0,0,0,0,0\n" +
"internal,0,0,0,0,0,0,0,0,0\n",
+ IOUtils.toString( action.getInputStream() ) );
}
private RepositoryProblemFacet createProblem( String groupId, String
artifactId, String repoId )
Modified:
archiva/branches/MRM-1025/archiva-modules/plugins/repository-statistics/pom.xml
URL:
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/plugins/repository-statistics/pom.xml?rev=891113&r1=891112&r2=891113&view=diff
==============================================================================
---
archiva/branches/MRM-1025/archiva-modules/plugins/repository-statistics/pom.xml
(original)
+++
archiva/branches/MRM-1025/archiva-modules/plugins/repository-statistics/pom.xml
Wed Dec 16 03:47:02 2009
@@ -51,5 +51,9 @@
<artifactId>jcl-over-slf4j</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.apache.archiva</groupId>
+ <artifactId>archiva-repository-layer</artifactId>
+ </dependency>
</dependencies>
</project>
Modified:
archiva/branches/MRM-1025/archiva-modules/plugins/repository-statistics/src/main/java/org/apache/archiva/metadata/repository/stats/DefaultRepositoryStatisticsManager.java
URL:
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/plugins/repository-statistics/src/main/java/org/apache/archiva/metadata/repository/stats/DefaultRepositoryStatisticsManager.java?rev=891113&r1=891112&r2=891113&view=diff
==============================================================================
---
archiva/branches/MRM-1025/archiva-modules/plugins/repository-statistics/src/main/java/org/apache/archiva/metadata/repository/stats/DefaultRepositoryStatisticsManager.java
(original)
+++
archiva/branches/MRM-1025/archiva-modules/plugins/repository-statistics/src/main/java/org/apache/archiva/metadata/repository/stats/DefaultRepositoryStatisticsManager.java
Wed Dec 16 03:47:02 2009
@@ -28,6 +28,10 @@
import org.apache.archiva.metadata.model.ArtifactMetadata;
import org.apache.archiva.metadata.repository.MetadataRepository;
+import org.apache.maven.archiva.repository.ManagedRepositoryContent;
+import org.apache.maven.archiva.repository.RepositoryContentFactory;
+import org.apache.maven.archiva.repository.RepositoryException;
+import org.apache.maven.archiva.repository.layout.LayoutException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -44,6 +48,11 @@
*/
private MetadataRepository metadataRepository;
+ /**
+ * @plexus.requirement
+ */
+ private RepositoryContentFactory repositoryContentFactory;
+
public RepositoryStatistics getLastStatistics( String repositoryId )
{
// TODO: consider a more efficient implementation that directly gets
the last one from the content repository
@@ -61,11 +70,12 @@
}
}
- private void walkRepository( RepositoryStatistics stats, String
repositoryId, String ns )
+ private void walkRepository( RepositoryStatistics stats, String
repositoryId, String ns,
+ ManagedRepositoryContent repositoryContent )
{
for ( String namespace : metadataRepository.getNamespaces(
repositoryId, ns ) )
{
- walkRepository( stats, repositoryId, ns + "." + namespace );
+ walkRepository( stats, repositoryId, ns + "." + namespace,
repositoryContent );
}
Collection<String> projects = metadataRepository.getProjects(
repositoryId, ns );
@@ -84,7 +94,18 @@
stats.setTotalArtifactCount(
stats.getTotalArtifactCount() + 1 );
stats.setTotalArtifactFileSize(
stats.getTotalArtifactFileSize() + artifact.getSize() );
- // TODO: add by type
+ // TODO: need a maven2 metadata repository API
equivalent
+ try
+ {
+ String type =
repositoryContent.toArtifactReference(
+ ns.replace( '.', '/' ) + "/" + project + "/" +
version + "/" +
+ artifact.getId() ).getType();
+ stats.setTotalCountForType( type,
stats.getTotalCountForType( type ) + 1 );
+ }
+ catch ( LayoutException e )
+ {
+ // ignore
+ }
}
}
}
@@ -92,7 +113,8 @@
}
- public void addStatisticsAfterScan( String repositoryId, Date startTime,
Date endTime, long totalFiles, long newFiles )
+ public void addStatisticsAfterScan( String repositoryId, Date startTime,
Date endTime, long totalFiles,
+ long newFiles )
{
RepositoryStatistics repositoryStatistics = new RepositoryStatistics();
repositoryStatistics.setScanStartTime( startTime );
@@ -112,7 +134,16 @@
// it on the fly
for ( String ns : metadataRepository.getRootNamespaces( repositoryId )
)
{
- walkRepository( repositoryStatistics, repositoryId, ns );
+ ManagedRepositoryContent content;
+ try
+ {
+ content =
repositoryContentFactory.getManagedRepositoryContent( repositoryId );
+ }
+ catch ( RepositoryException e )
+ {
+ throw new RuntimeException( e );
+ }
+ walkRepository( repositoryStatistics, repositoryId, ns, content );
}
log.info( "Repository walk for statistics executed in " + (
System.currentTimeMillis() - startWalk ) + "ms" );
@@ -157,4 +188,9 @@
{
this.metadataRepository = metadataRepository;
}
+
+ public void setRepositoryContentFactory( RepositoryContentFactory
repositoryContentFactory )
+ {
+ this.repositoryContentFactory = repositoryContentFactory;
+ }
}
Modified:
archiva/branches/MRM-1025/archiva-modules/plugins/repository-statistics/src/main/java/org/apache/archiva/metadata/repository/stats/RepositoryStatistics.java
URL:
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/plugins/repository-statistics/src/main/java/org/apache/archiva/metadata/repository/stats/RepositoryStatistics.java?rev=891113&r1=891112&r2=891113&view=diff
==============================================================================
---
archiva/branches/MRM-1025/archiva-modules/plugins/repository-statistics/src/main/java/org/apache/archiva/metadata/repository/stats/RepositoryStatistics.java
(original)
+++
archiva/branches/MRM-1025/archiva-modules/plugins/repository-statistics/src/main/java/org/apache/archiva/metadata/repository/stats/RepositoryStatistics.java
Wed Dec 16 03:47:02 2009
@@ -50,6 +50,8 @@
static final DateFormat SCAN_TIMESTAMP = new SimpleDateFormat(
"yyyyMMdd.HHmmss.SSS" );
+ private Map<String, Long> totalCountForType = new HashMap<String, Long>();
+
public Date getScanEndTime()
{
return scanEndTime;
@@ -156,6 +158,10 @@
properties.put( "totalGroupCount", String.valueOf( totalGroupCount ) );
properties.put( "totalProjectCount", String.valueOf( totalProjectCount
) );
properties.put( "newFileCount", String.valueOf( newFileCount ) );
+ for ( Map.Entry<String, Long> entry : totalCountForType.entrySet() )
+ {
+ properties.put( "count-" + entry.getKey(), String.valueOf(
entry.getValue() ) );
+ }
return properties;
}
@@ -169,15 +175,14 @@
totalGroupCount = Long.valueOf( properties.get( "totalGroupCount" ) );
totalProjectCount = Long.valueOf( properties.get( "totalProjectCount"
) );
newFileCount = Long.valueOf( properties.get( "newFileCount" ) );
- }
-
- @Override
- public String toString()
- {
- return "RepositoryStatistics{" + "scanEndTime=" + scanEndTime + ",
scanStartTime=" + scanStartTime +
- ", totalArtifactCount=" + totalArtifactCount + ",
totalArtifactFileSize=" + totalArtifactFileSize +
- ", totalFileCount=" + totalFileCount + ", totalGroupCount=" +
totalGroupCount + ", totalProjectCount=" +
- totalProjectCount + ", newFileCount=" + newFileCount + '}';
+ totalCountForType.clear();
+ for ( Map.Entry<String, String> entry : properties.entrySet() )
+ {
+ if ( entry.getKey().startsWith( "count-" ) )
+ {
+ totalCountForType.put( entry.getKey().substring( 6 ),
Long.valueOf( entry.getValue() ) );
+ }
+ }
}
@Override
@@ -226,6 +231,10 @@
{
return false;
}
+ if ( !totalCountForType.equals( that.totalCountForType ) )
+ {
+ return false;
+ }
return true;
}
@@ -241,6 +250,32 @@
result = 31 * result + (int) ( totalGroupCount ^ ( totalGroupCount >>>
32 ) );
result = 31 * result + (int) ( totalProjectCount ^ ( totalProjectCount
>>> 32 ) );
result = 31 * result + (int) ( newFileCount ^ ( newFileCount >>> 32 )
);
+ result = 31 * result + totalCountForType.hashCode();
return result;
}
+
+ @Override
+ public String toString()
+ {
+ return "RepositoryStatistics{" + "scanEndTime=" + scanEndTime + ",
scanStartTime=" + scanStartTime +
+ ", totalArtifactCount=" + totalArtifactCount + ",
totalArtifactFileSize=" + totalArtifactFileSize +
+ ", totalFileCount=" + totalFileCount + ", totalGroupCount=" +
totalGroupCount + ", totalProjectCount=" +
+ totalProjectCount + ", newFileCount=" + newFileCount + ",
totalCountForType=" + totalCountForType + '}';
+ }
+
+ public Map<String, Long> getTotalCountForType()
+ {
+ return totalCountForType;
+ }
+
+ public long getTotalCountForType( String type )
+ {
+ Long value = totalCountForType.get( type );
+ return value != null ? value : 0;
+ }
+
+ public void setTotalCountForType( String type, long count )
+ {
+ totalCountForType.put( type, count );
+ }
}
Modified:
archiva/branches/MRM-1025/archiva-modules/plugins/repository-statistics/src/test/java/org/apache/archiva/metadata/repository/stats/RepositoryStatisticsManagerTest.java
URL:
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/plugins/repository-statistics/src/test/java/org/apache/archiva/metadata/repository/stats/RepositoryStatisticsManagerTest.java?rev=891113&r1=891112&r2=891113&view=diff
==============================================================================
---
archiva/branches/MRM-1025/archiva-modules/plugins/repository-statistics/src/test/java/org/apache/archiva/metadata/repository/stats/RepositoryStatisticsManagerTest.java
(original)
+++
archiva/branches/MRM-1025/archiva-modules/plugins/repository-statistics/src/test/java/org/apache/archiva/metadata/repository/stats/RepositoryStatisticsManagerTest.java
Wed Dec 16 03:47:02 2009
@@ -31,7 +31,11 @@
import junit.framework.TestCase;
import org.apache.archiva.metadata.model.ArtifactMetadata;
import org.apache.archiva.metadata.repository.MetadataRepository;
+import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
+import org.apache.maven.archiva.repository.RepositoryContentFactory;
+import
org.apache.maven.archiva.repository.content.ManagedDefaultRepositoryContent;
import org.easymock.MockControl;
+import org.easymock.classextension.MockClassControl;
public class RepositoryStatisticsManagerTest
extends TestCase
@@ -61,6 +65,18 @@
metadataRepositoryControl = MockControl.createControl(
MetadataRepository.class );
metadataRepository = (MetadataRepository)
metadataRepositoryControl.getMock();
repositoryStatisticsManager.setMetadataRepository( metadataRepository
);
+
+ ManagedRepositoryConfiguration repository = new
ManagedRepositoryConfiguration();
+ repository.setId( TEST_REPO_ID );
+ repository.setLocation( "" );
+ ManagedDefaultRepositoryContent content = new
ManagedDefaultRepositoryContent();
+ content.setRepository( repository );
+ MockControl control = MockClassControl.createControl(
RepositoryContentFactory.class );
+ RepositoryContentFactory contentFactory = (RepositoryContentFactory)
control.getMock();
+ contentFactory.getManagedRepositoryContent( TEST_REPO_ID );
+ control.setDefaultReturnValue( content );
+ control.replay();
+ repositoryStatisticsManager.setRepositoryContentFactory(
contentFactory );
}
public void testGetLatestStats()