Author: brett
Date: Thu Dec 9 07:58:00 2010
New Revision: 1043850
URL: http://svn.apache.org/viewvc?rev=1043850&view=rev
Log:
[MRM-1443] count the repository statistics directly
Modified:
archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/test/java/org/apache/archiva/consumers/lucene/stubs/ArchivaDAOStub.java
archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/stubs/ArchivaDAOStub.java
archiva/branches/archiva-1.3.x/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/ArchivaDAO.java
archiva/branches/archiva-1.3.x/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/ArtifactDAO.java
archiva/branches/archiva-1.3.x/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/SimpleConstraint.java
archiva/branches/archiva-1.3.x/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/constraints/AbstractSimpleConstraint.java
archiva/branches/archiva-1.3.x/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/constraints/UniqueArtifactIdConstraint.java
archiva/branches/archiva-1.3.x/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/constraints/UniqueGroupIdConstraint.java
archiva/branches/archiva-1.3.x/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/jdo/JdoAccess.java
archiva/branches/archiva-1.3.x/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/jdo/JdoArchivaDAO.java
archiva/branches/archiva-1.3.x/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/jdo/JdoArtifactDAO.java
archiva/branches/archiva-1.3.x/archiva-modules/archiva-scheduled/src/main/java/org/apache/maven/archiva/scheduled/executors/ArchivaRepositoryScanningTaskExecutor.java
archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-rss/src/test/java/org/apache/archiva/rss/stubs/ArtifactDAOStub.java
archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/AbstractManagedRepositoryArchivaDAOStub.java
archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/ArchivaDAOStub.java
archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/ArtifactDAOStub.java
archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/rss/ArtifactDAOStub.java
Modified:
archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/test/java/org/apache/archiva/consumers/lucene/stubs/ArchivaDAOStub.java
URL:
http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/test/java/org/apache/archiva/consumers/lucene/stubs/ArchivaDAOStub.java?rev=1043850&r1=1043849&r2=1043850&view=diff
==============================================================================
---
archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/test/java/org/apache/archiva/consumers/lucene/stubs/ArchivaDAOStub.java
(original)
+++
archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/test/java/org/apache/archiva/consumers/lucene/stubs/ArchivaDAOStub.java
Thu Dec 9 07:58:00 2010
@@ -19,9 +19,6 @@ package org.apache.archiva.consumers.luc
* under the License.
*/
-import java.io.Serializable;
-import java.util.List;
-
import org.apache.maven.archiva.database.ArchivaDAO;
import org.apache.maven.archiva.database.ArtifactDAO;
import org.apache.maven.archiva.database.ProjectModelDAO;
@@ -29,6 +26,9 @@ import org.apache.maven.archiva.database
import org.apache.maven.archiva.database.RepositoryProblemDAO;
import org.apache.maven.archiva.database.SimpleConstraint;
+import java.io.Serializable;
+import java.util.List;
+
/**
* Using a stub for faster tests! Not really used for the unit tests, just for
dependency injection.
*/
@@ -54,6 +54,11 @@ public class ArchivaDAOStub
return null;
}
+ public long count( SimpleConstraint constraint )
+ {
+ return 0; //To change body of implemented methods use File | Settings
| File Templates.
+ }
+
public RepositoryProblemDAO getRepositoryProblemDAO()
{
// TODO Auto-generated method stub
Modified:
archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/stubs/ArchivaDAOStub.java
URL:
http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/stubs/ArchivaDAOStub.java?rev=1043850&r1=1043849&r2=1043850&view=diff
==============================================================================
---
archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/stubs/ArchivaDAOStub.java
(original)
+++
archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/stubs/ArchivaDAOStub.java
Thu Dec 9 07:58:00 2010
@@ -19,9 +19,6 @@ package org.apache.maven.archiva.proxy.s
* under the License.
*/
-import java.io.Serializable;
-import java.util.List;
-
import org.apache.maven.archiva.database.ArchivaDAO;
import org.apache.maven.archiva.database.ArtifactDAO;
import org.apache.maven.archiva.database.ProjectModelDAO;
@@ -29,6 +26,9 @@ import org.apache.maven.archiva.database
import org.apache.maven.archiva.database.RepositoryProblemDAO;
import org.apache.maven.archiva.database.SimpleConstraint;
+import java.io.Serializable;
+import java.util.List;
+
/**
* Using a stub for faster tests! Not really used for the unit tests, just for
dependency injection.
*/
@@ -54,6 +54,11 @@ public class ArchivaDAOStub
return null;
}
+ public long count( SimpleConstraint constraint )
+ {
+ return 0; //To change body of implemented methods use File | Settings
| File Templates.
+ }
+
public RepositoryProblemDAO getRepositoryProblemDAO()
{
// TODO Auto-generated method stub
Modified:
archiva/branches/archiva-1.3.x/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/ArchivaDAO.java
URL:
http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/ArchivaDAO.java?rev=1043850&r1=1043849&r2=1043850&view=diff
==============================================================================
---
archiva/branches/archiva-1.3.x/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/ArchivaDAO.java
(original)
+++
archiva/branches/archiva-1.3.x/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/ArchivaDAO.java
Thu Dec 9 07:58:00 2010
@@ -54,4 +54,6 @@ public interface ArchivaDAO
RepositoryProblemDAO getRepositoryProblemDAO();
RepositoryContentStatisticsDAO getRepositoryContentStatisticsDAO();
+
+ long count( SimpleConstraint constraint );
}
Modified:
archiva/branches/archiva-1.3.x/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/ArtifactDAO.java
URL:
http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/ArtifactDAO.java?rev=1043850&r1=1043849&r2=1043850&view=diff
==============================================================================
---
archiva/branches/archiva-1.3.x/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/ArtifactDAO.java
(original)
+++
archiva/branches/archiva-1.3.x/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/ArtifactDAO.java
Thu Dec 9 07:58:00 2010
@@ -66,4 +66,6 @@ public interface ArtifactDAO
public void deleteArtifact( ArchivaArtifact artifact )
throws ArchivaDatabaseException;
+
+ long countArtifacts( DeclarativeConstraint constraint );
}
Modified:
archiva/branches/archiva-1.3.x/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/SimpleConstraint.java
URL:
http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/SimpleConstraint.java?rev=1043850&r1=1043849&r2=1043850&view=diff
==============================================================================
---
archiva/branches/archiva-1.3.x/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/SimpleConstraint.java
(original)
+++
archiva/branches/archiva-1.3.x/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/SimpleConstraint.java
Thu Dec 9 07:58:00 2010
@@ -56,4 +56,6 @@ public interface SimpleConstraint extend
* @return true if result classes are persistable.
*/
public boolean isResultsPersistable();
+
+ String getCountSql();
}
Modified:
archiva/branches/archiva-1.3.x/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/constraints/AbstractSimpleConstraint.java
URL:
http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/constraints/AbstractSimpleConstraint.java?rev=1043850&r1=1043849&r2=1043850&view=diff
==============================================================================
---
archiva/branches/archiva-1.3.x/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/constraints/AbstractSimpleConstraint.java
(original)
+++
archiva/branches/archiva-1.3.x/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/constraints/AbstractSimpleConstraint.java
Thu Dec 9 07:58:00 2010
@@ -45,4 +45,9 @@ public abstract class AbstractSimpleCons
{
return false;
}
+
+ public String getCountSql()
+ {
+ throw new UnsupportedOperationException( "count not supported" );
+ }
}
Modified:
archiva/branches/archiva-1.3.x/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/constraints/UniqueArtifactIdConstraint.java
URL:
http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/constraints/UniqueArtifactIdConstraint.java?rev=1043850&r1=1043849&r2=1043850&view=diff
==============================================================================
---
archiva/branches/archiva-1.3.x/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/constraints/UniqueArtifactIdConstraint.java
(original)
+++
archiva/branches/archiva-1.3.x/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/constraints/UniqueArtifactIdConstraint.java
Thu Dec 9 07:58:00 2010
@@ -34,7 +34,9 @@ public class UniqueArtifactIdConstraint
implements Constraint
{
private StringBuffer sql = new StringBuffer();
-
+
+ private StringBuffer countSql = new StringBuffer();
+
private Class<?> resultClass;
/**
@@ -51,6 +53,13 @@ public class UniqueArtifactIdConstraint
appendWhereSelectedGroupId( sql );
appendGroupBy( sql );
+ countSql.append( "SELECT count(artifactId) FROM " ).append(
ArchivaArtifactModel.class.getName() );
+ countSql.append( " WHERE " );
+ SqlBuilder.appendWhereSelectedRepositories( countSql, "repositoryId",
selectedRepositoryIds );
+ countSql.append( " && " );
+ appendWhereSelectedGroupId( countSql );
+ appendGroupBy( countSql );
+
super.params = new Object[] { groupId };
}
@@ -66,6 +75,11 @@ public class UniqueArtifactIdConstraint
appendWhereSelectedGroupId( sql );
appendGroupBy( sql );
+ countSql.append( "SELECT count(artifactId) FROM " ).append(
ArchivaArtifactModel.class.getName() );
+ countSql.append( " WHERE " );
+ appendWhereSelectedGroupId( countSql );
+ appendGroupBy( countSql );
+
super.params = new Object[] { groupId };
}
@@ -79,7 +93,19 @@ public class UniqueArtifactIdConstraint
{
appendSelect( sql, isUnique );
sql.append( " WHERE repositoryId == \"" + repoId + "\"" );
-
+
+ if( isUnique )
+ {
+ countSql.append( "SELECT count(this) FROM " ).append(
ArchivaArtifactModel.class.getName() );
+ countSql.append( " WHERE repositoryId == \"" ).append( repoId
).append( "\"" );
+ countSql.append( " GROUP BY groupId, artifactId" );
+ }
+ else
+ {
+ countSql.append( "SELECT count(artifactId) FROM " ).append(
ArchivaArtifactModel.class.getName() );
+ countSql.append( " WHERE repositoryId == \"" ).append( repoId
).append( "\"" );
+ }
+
resultClass = Object[].class;
}
@@ -99,6 +125,12 @@ public class UniqueArtifactIdConstraint
return sql.toString();
}
+ @Override
+ public String getCountSql()
+ {
+ return countSql.toString();
+ }
+
private void appendGroupBy( StringBuffer buf )
{
buf.append( " GROUP BY artifactId ORDER BY artifactId ASCENDING" );
Modified:
archiva/branches/archiva-1.3.x/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/constraints/UniqueGroupIdConstraint.java
URL:
http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/constraints/UniqueGroupIdConstraint.java?rev=1043850&r1=1043849&r2=1043850&view=diff
==============================================================================
---
archiva/branches/archiva-1.3.x/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/constraints/UniqueGroupIdConstraint.java
(original)
+++
archiva/branches/archiva-1.3.x/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/constraints/UniqueGroupIdConstraint.java
Thu Dec 9 07:58:00 2010
@@ -38,13 +38,11 @@ public class UniqueGroupIdConstraint
public UniqueGroupIdConstraint()
{
/* this assumes search for no groupId prefix */
- appendSelect( sql );
appendGroupBy( sql );
}
public UniqueGroupIdConstraint( List<String> selectedRepositories )
{
- appendSelect( sql );
sql.append( " WHERE " );
SqlBuilder.appendWhereSelectedRepositories( sql, "repositoryId",
selectedRepositories );
appendGroupBy( sql );
@@ -52,7 +50,6 @@ public class UniqueGroupIdConstraint
public UniqueGroupIdConstraint( List<String> selectedRepositories, String
groupIdPrefix )
{
- appendSelect( sql );
sql.append( " WHERE " );
SqlBuilder.appendWhereSelectedRepositories( sql, "repositoryId",
selectedRepositories );
sql.append( " && " );
@@ -64,7 +61,6 @@ public class UniqueGroupIdConstraint
public UniqueGroupIdConstraint( String groupIdPrefix )
{
- appendSelect( sql );
sql.append( " WHERE " );
appendWhereGroupIdStartsWith( sql );
appendGroupBy( sql );
@@ -80,7 +76,19 @@ public class UniqueGroupIdConstraint
public String getSelectSql()
{
- return sql.toString();
+ StringBuffer buf = new StringBuffer();
+ appendSelect( buf );
+ buf.append( sql );
+ return buf.toString();
+ }
+
+ @Override
+ public String getCountSql()
+ {
+ StringBuffer buf = new StringBuffer();
+ buf.append( "SELECT count(groupId) FROM " ).append(
ArchivaArtifactModel.class.getName() );
+ buf.append( sql );
+ return buf.toString();
}
private void appendGroupBy( StringBuffer buf )
Modified:
archiva/branches/archiva-1.3.x/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/jdo/JdoAccess.java
URL:
http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/jdo/JdoAccess.java?rev=1043850&r1=1043849&r2=1043850&view=diff
==============================================================================
---
archiva/branches/archiva-1.3.x/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/jdo/JdoAccess.java
(original)
+++
archiva/branches/archiva-1.3.x/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/jdo/JdoAccess.java
Thu Dec 9 07:58:00 2010
@@ -34,7 +34,6 @@ import org.codehaus.plexus.personality.p
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.List;
-
import javax.jdo.Extent;
import javax.jdo.JDOException;
import javax.jdo.JDOHelper;
@@ -210,12 +209,12 @@ public class JdoAccess
PersistenceManager pm = getPersistenceManager();
Transaction tx = pm.currentTransaction();
+ List<?> result = null;
+
try
{
tx.begin();
- List<?> result = null;
-
if ( constraint != null )
{
if ( constraint instanceof DeclarativeConstraint )
@@ -239,13 +238,13 @@ public class JdoAccess
result = (List<?>) pm.detachCopyAll( result );
tx.commit();
-
- return result;
}
finally
{
rollbackIfActive( tx );
}
+
+ return result;
}
public List<?> queryObjects( SimpleConstraint constraint )
@@ -304,12 +303,16 @@ public class JdoAccess
pm.getFetchPlan().addGroup( constraint.getFetchLimits() );
}
+ List<?> objects;
if ( constraint.getParameters() != null )
{
- return processParameterizedQuery( query,
constraint.getParameters() );
+ objects = processParameterizedQuery( query,
constraint.getParameters() );
}
-
- return (List<?>) query.execute();
+ else
+ {
+ objects = (List<?>) query.execute();
+ }
+ return objects;
}
private List<?> processConstraint( PersistenceManager pm, Class<?> clazz,
DeclarativeConstraint constraint )
@@ -595,4 +598,120 @@ public class JdoAccess
return jdoFactory;
}
+ public long countObjects( SimpleConstraint constraint )
+ {
+ PersistenceManager pm = getPersistenceManager();
+ Transaction tx = pm.currentTransaction();
+
+ try
+ {
+ tx.begin();
+
+ Query query = pm.newQuery( constraint.getCountSql() );
+
+ if ( constraint.getFetchLimits() != null )
+ {
+ pm.getFetchPlan().addGroup( constraint.getFetchLimits() );
+ }
+
+ List<?> objects;
+ if ( constraint.getParameters() != null )
+ {
+ objects = processParameterizedQuery( query,
constraint.getParameters() );
+ }
+ else
+ {
+ objects = (List<?>) query.execute();
+ }
+
+ Long result = !objects.isEmpty() ? (Long) objects.get( 0 ) : 0;
+
+ tx.commit();
+
+ return result;
+ }
+ finally
+ {
+ rollbackIfActive( tx );
+ }
+ }
+
+ public long countObjects( Class<?> clazz, DeclarativeConstraint constraint
)
+ {
+ PersistenceManager pm = getPersistenceManager();
+ Transaction tx = pm.currentTransaction();
+
+ Long result = null;
+
+ try
+ {
+ tx.begin();
+
+ Extent extent = pm.getExtent( clazz, true );
+ Query query = pm.newQuery( extent );
+
+ if ( constraint.getFilter() != null )
+ {
+ query.setFilter( constraint.getFilter() );
+ }
+
+ if ( constraint.getVariables() != null )
+ {
+ query.declareVariables( StringUtils.join(
constraint.getVariables(), "; " ) );
+ }
+
+ if ( constraint.getFetchLimits() != null )
+ {
+ pm.getFetchPlan().addGroup( constraint.getFetchLimits() );
+ }
+
+ if ( constraint.getWhereCondition() != null )
+ {
+ query.setFilter( constraint.getWhereCondition() );
+ }
+
+ if ( constraint.getDeclaredImports() != null )
+ {
+ query.declareImports( StringUtils.join(
constraint.getDeclaredImports(), ", " ) );
+ }
+
+ if ( constraint.getRange() != null )
+ {
+ query.setRange( constraint.getRange()[0],
constraint.getRange()[1] );
+ }
+
+ query.setResult( "count(this)" );
+
+ if ( constraint.getDeclaredParameters() != null )
+ {
+ if ( constraint.getParameters() == null )
+ {
+ throw new JDOException( "Unable to use query, there are
declared parameters, "
+ + "but no parameter objects to use." );
+ }
+
+ if ( constraint.getParameters().length !=
constraint.getDeclaredParameters().length )
+ {
+ throw new JDOException( "Unable to use query, there are <"
+ constraint.getDeclaredParameters().length
+ + "> declared parameters, yet there are <" +
constraint.getParameters().length
+ + "> parameter objects to use. This should be equal."
);
+ }
+
+ query.declareParameters( StringUtils.join(
constraint.getDeclaredParameters(), ", " ) );
+
+ result = (Long) query.executeWithArray(
constraint.getParameters() );
+ }
+ else
+ {
+ result = (Long) query.execute();
+ }
+ tx.commit();
+ }
+ finally
+ {
+ rollbackIfActive( tx );
+ }
+
+ return result;
+ }
}
Modified:
archiva/branches/archiva-1.3.x/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/jdo/JdoArchivaDAO.java
URL:
http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/jdo/JdoArchivaDAO.java?rev=1043850&r1=1043849&r2=1043850&view=diff
==============================================================================
---
archiva/branches/archiva-1.3.x/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/jdo/JdoArchivaDAO.java
(original)
+++
archiva/branches/archiva-1.3.x/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/jdo/JdoArchivaDAO.java
Thu Dec 9 07:58:00 2010
@@ -94,4 +94,9 @@ public class JdoArchivaDAO
{
return repositoryContentStatisticsDAO;
}
+
+ public long count( SimpleConstraint constraint )
+ {
+ return jdo.countObjects( constraint );
+ }
}
Modified:
archiva/branches/archiva-1.3.x/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/jdo/JdoArtifactDAO.java
URL:
http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/jdo/JdoArtifactDAO.java?rev=1043850&r1=1043849&r2=1043850&view=diff
==============================================================================
---
archiva/branches/archiva-1.3.x/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/jdo/JdoArtifactDAO.java
(original)
+++
archiva/branches/archiva-1.3.x/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/jdo/JdoArtifactDAO.java
Thu Dec 9 07:58:00 2010
@@ -19,17 +19,18 @@ package org.apache.maven.archiva.databas
* under the License.
*/
-import java.util.ArrayList;
-import java.util.List;
-
import org.apache.maven.archiva.database.ArchivaDatabaseException;
import org.apache.maven.archiva.database.ArtifactDAO;
import org.apache.maven.archiva.database.Constraint;
+import org.apache.maven.archiva.database.DeclarativeConstraint;
import org.apache.maven.archiva.database.ObjectNotFoundException;
import org.apache.maven.archiva.model.ArchivaArtifact;
import org.apache.maven.archiva.model.ArchivaArtifactModel;
import org.apache.maven.archiva.model.jpox.ArchivaArtifactModelKey;
+import java.util.ArrayList;
+import java.util.List;
+
/**
* JdoArtifactDAO
*
@@ -86,15 +87,15 @@ public class JdoArtifactDAO
throws ObjectNotFoundException, ArchivaDatabaseException
{
List<ArchivaArtifactModel> results = (List<ArchivaArtifactModel>)
jdo.queryObjects( ArchivaArtifactModel.class, constraint );
- if ( results == null )
- {
- return null;
- }
- List<ArchivaArtifact> ret = new ArrayList<ArchivaArtifact>();
- for ( ArchivaArtifactModel model : results )
+ List<ArchivaArtifact> ret = null;
+ if ( results != null )
{
- ret.add( new ArchivaArtifact( model ) );
+ ret = new ArrayList<ArchivaArtifact>();
+ for ( ArchivaArtifactModel model : results )
+ {
+ ret.add( new ArchivaArtifact( model ) );
+ }
}
return ret;
@@ -117,4 +118,9 @@ public class JdoArtifactDAO
{
jdo.removeObject( artifact.getModel() );
}
+
+ public long countArtifacts( DeclarativeConstraint constraint )
+ {
+ return jdo.countObjects( ArchivaArtifactModel.class, constraint );
+ }
}
Modified:
archiva/branches/archiva-1.3.x/archiva-modules/archiva-scheduled/src/main/java/org/apache/maven/archiva/scheduled/executors/ArchivaRepositoryScanningTaskExecutor.java
URL:
http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-scheduled/src/main/java/org/apache/maven/archiva/scheduled/executors/ArchivaRepositoryScanningTaskExecutor.java?rev=1043850&r1=1043849&r2=1043850&view=diff
==============================================================================
---
archiva/branches/archiva-1.3.x/archiva-modules/archiva-scheduled/src/main/java/org/apache/maven/archiva/scheduled/executors/ArchivaRepositoryScanningTaskExecutor.java
(original)
+++
archiva/branches/archiva-1.3.x/archiva-modules/archiva-scheduled/src/main/java/org/apache/maven/archiva/scheduled/executors/ArchivaRepositoryScanningTaskExecutor.java
Thu Dec 9 07:58:00 2010
@@ -19,23 +19,16 @@ package org.apache.maven.archiva.schedul
* under the License.
*/
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.maven.archiva.configuration.ArchivaConfiguration;
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
import org.apache.maven.archiva.database.ArchivaDAO;
-import org.apache.maven.archiva.database.ArchivaDatabaseException;
-import org.apache.maven.archiva.database.ObjectNotFoundException;
import
org.apache.maven.archiva.database.constraints.ArtifactsByRepositoryConstraint;
import
org.apache.maven.archiva.database.constraints.MostRecentRepositoryScanStatistics;
import
org.apache.maven.archiva.database.constraints.UniqueArtifactIdConstraint;
import org.apache.maven.archiva.database.constraints.UniqueGroupIdConstraint;
-import org.apache.maven.archiva.model.ArchivaArtifact;
import org.apache.maven.archiva.model.RepositoryContentStatistics;
import org.apache.maven.archiva.repository.RepositoryException;
import org.apache.maven.archiva.repository.scanner.RepositoryContentConsumers;
@@ -50,6 +43,10 @@ import org.codehaus.plexus.taskqueue.exe
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
/**
* ArchivaRepositoryScanningTaskExecutor
*
@@ -171,21 +168,9 @@ public class ArchivaRepositoryScanningTa
dbstats.setWhenGathered( stats.getWhenGathered() );
// total artifact count
- try
- {
- // note that when gathered is the end of the scan, so we look for
all those before that time
- List<ArchivaArtifact> artifacts =
dao.getArtifactDAO().queryArtifacts(
- new ArtifactsByRepositoryConstraint( arepo.getId(),
stats.getWhenGathered(), "groupId", true ) );
- dbstats.setTotalArtifactCount( artifacts.size() );
- }
- catch ( ObjectNotFoundException oe )
- {
- log.error( "Object not found in the database : " + oe.getMessage()
);
- }
- catch ( ArchivaDatabaseException ae )
- {
- log.error( "Error occurred while querying artifacts for artifact
count : " + ae.getMessage() );
- }
+ // note that when gathered is the end of the scan, so we look for all
those before that time
+ dbstats.setTotalArtifactCount( dao.getArtifactDAO().countArtifacts(
+ new ArtifactsByRepositoryConstraint( arepo.getId(),
stats.getWhenGathered(), "groupId", true ) ) );
// total repo size -- TODO: needs to exclude ignored files (eg .svn)
long size = FileUtils.sizeOfDirectory( new File( arepo.getLocation() )
);
@@ -195,12 +180,9 @@ public class ArchivaRepositoryScanningTa
List<String> repos = new ArrayList<String>();
repos.add( arepo.getId() );
- List<String> groupIds = (List<String>) dao.query( new
UniqueGroupIdConstraint( repos ) );
- dbstats.setTotalGroupCount( groupIds.size() );
+ dbstats.setTotalGroupCount( dao.count( new UniqueGroupIdConstraint(
repos ) ) );
- List<Object[]> artifactIds =
- (List<Object[]>) dao.query( new UniqueArtifactIdConstraint(
arepo.getId(), true ) );
- dbstats.setTotalProjectCount( artifactIds.size() );
+ dbstats.setTotalProjectCount( dao.count( new
UniqueArtifactIdConstraint( arepo.getId(), true ) ) );
return dbstats;
}
Modified:
archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-rss/src/test/java/org/apache/archiva/rss/stubs/ArtifactDAOStub.java
URL:
http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-rss/src/test/java/org/apache/archiva/rss/stubs/ArtifactDAOStub.java?rev=1043850&r1=1043849&r2=1043850&view=diff
==============================================================================
---
archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-rss/src/test/java/org/apache/archiva/rss/stubs/ArtifactDAOStub.java
(original)
+++
archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-rss/src/test/java/org/apache/archiva/rss/stubs/ArtifactDAOStub.java
Thu Dec 9 07:58:00 2010
@@ -19,14 +19,15 @@ package org.apache.archiva.rss.stubs;
* under the License.
*/
-import java.util.List;
-
import org.apache.maven.archiva.database.ArchivaDatabaseException;
import org.apache.maven.archiva.database.ArtifactDAO;
import org.apache.maven.archiva.database.Constraint;
+import org.apache.maven.archiva.database.DeclarativeConstraint;
import org.apache.maven.archiva.database.ObjectNotFoundException;
import org.apache.maven.archiva.model.ArchivaArtifact;
+import java.util.List;
+
/**
* ArtifactDAO stub.
*
@@ -51,6 +52,11 @@ public class ArtifactDAOStub
}
+ public long countArtifacts( DeclarativeConstraint constraint )
+ {
+ return artifacts.size();
+ }
+
public ArchivaArtifact getArtifact( String groupId, String artifactId,
String version, String classifier,
String type, String repositoryId )
throws ObjectNotFoundException, ArchivaDatabaseException
Modified:
archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/AbstractManagedRepositoryArchivaDAOStub.java
URL:
http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/AbstractManagedRepositoryArchivaDAOStub.java?rev=1043850&r1=1043849&r2=1043850&view=diff
==============================================================================
---
archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/AbstractManagedRepositoryArchivaDAOStub.java
(original)
+++
archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/AbstractManagedRepositoryArchivaDAOStub.java
Thu Dec 9 07:58:00 2010
@@ -19,9 +19,6 @@ package org.apache.maven.archiva.web.act
* under the License.
*/
-import java.io.Serializable;
-import java.util.List;
-
import org.apache.maven.archiva.database.ArchivaDAO;
import org.apache.maven.archiva.database.ArtifactDAO;
import org.apache.maven.archiva.database.ProjectModelDAO;
@@ -30,6 +27,9 @@ import org.apache.maven.archiva.database
import org.apache.maven.archiva.database.SimpleConstraint;
import org.apache.maven.archiva.model.RepositoryContentStatistics;
+import java.io.Serializable;
+import java.util.List;
+
/**
* AbstractManagedRepositoryArchivaDAOStub
*
@@ -82,4 +82,9 @@ public class AbstractManagedRepositoryAr
{
return repoContentStatisticsDAO;
}
+
+ public long count( SimpleConstraint constraint )
+ {
+ return query( constraint ).size();
+ }
}
Modified:
archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/ArchivaDAOStub.java
URL:
http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/ArchivaDAOStub.java?rev=1043850&r1=1043849&r2=1043850&view=diff
==============================================================================
---
archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/ArchivaDAOStub.java
(original)
+++
archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/ArchivaDAOStub.java
Thu Dec 9 07:58:00 2010
@@ -1,9 +1,5 @@
package org.apache.maven.archiva.web.action.admin.repositories;
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-
import junit.framework.Assert;
import org.apache.maven.archiva.configuration.ArchivaConfiguration;
import org.apache.maven.archiva.database.ArchivaDAO;
@@ -18,6 +14,10 @@ import org.apache.maven.archiva.database
import org.apache.maven.archiva.database.constraints.UniqueVersionConstraint;
import org.apache.maven.archiva.model.RepositoryContentStatistics;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
@@ -121,6 +121,11 @@ public class ArchivaDAOStub
return repositoryContentStatisticsDAO;
}
+ public long count( SimpleConstraint constraint )
+ {
+ return query( constraint ).size();
+ }
+
public void setArtifactDao( ArtifactDAO artifactDao )
{
this.artifactDao = artifactDao;
Modified:
archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/ArtifactDAOStub.java
URL:
http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/ArtifactDAOStub.java?rev=1043850&r1=1043849&r2=1043850&view=diff
==============================================================================
---
archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/ArtifactDAOStub.java
(original)
+++
archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/ArtifactDAOStub.java
Thu Dec 9 07:58:00 2010
@@ -19,16 +19,17 @@ package org.apache.maven.archiva.web.act
* under the License.
*/
-import java.util.ArrayList;
-import java.util.List;
-
import org.apache.maven.archiva.database.ArchivaDatabaseException;
import org.apache.maven.archiva.database.ArtifactDAO;
import org.apache.maven.archiva.database.Constraint;
+import org.apache.maven.archiva.database.DeclarativeConstraint;
import org.apache.maven.archiva.database.ObjectNotFoundException;
import org.apache.maven.archiva.model.ArchivaArtifact;
import org.apache.maven.archiva.model.ArchivaArtifactModel;
+import java.util.ArrayList;
+import java.util.List;
+
/**
* ArtifactDAOStub
*
@@ -52,6 +53,11 @@ public class ArtifactDAOStub
}
+ public long countArtifacts( DeclarativeConstraint constraint )
+ {
+ return queryArtifacts( constraint ).size();
+ }
+
public ArchivaArtifact getArtifact( String groupId, String artifactId,
String version, String classifier,
String type, String repositoryId )
throws ObjectNotFoundException, ArchivaDatabaseException
@@ -61,7 +67,6 @@ public class ArtifactDAOStub
}
public List<ArchivaArtifact> queryArtifacts( Constraint constraint )
- throws ObjectNotFoundException, ArchivaDatabaseException
{
List<ArchivaArtifact> artifacts = new ArrayList<ArchivaArtifact>();
Modified:
archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/rss/ArtifactDAOStub.java
URL:
http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/rss/ArtifactDAOStub.java?rev=1043850&r1=1043849&r2=1043850&view=diff
==============================================================================
---
archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/rss/ArtifactDAOStub.java
(original)
+++
archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/rss/ArtifactDAOStub.java
Thu Dec 9 07:58:00 2010
@@ -19,17 +19,17 @@ package org.apache.maven.archiva.web.rss
* under the License.
*/
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
-
import org.apache.maven.archiva.database.ArchivaDatabaseException;
import org.apache.maven.archiva.database.ArtifactDAO;
import org.apache.maven.archiva.database.Constraint;
-import org.apache.maven.archiva.database.ObjectNotFoundException;
+import org.apache.maven.archiva.database.DeclarativeConstraint;
import org.apache.maven.archiva.model.ArchivaArtifact;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
/**
* Stub used for RssFeedServlet unit test.
*
@@ -53,16 +53,19 @@ public class ArtifactDAOStub
}
+ public long countArtifacts( DeclarativeConstraint constraint )
+ {
+ return queryArtifacts( constraint ).size();
+ }
+
public ArchivaArtifact getArtifact( String groupId, String artifactId,
String version, String classifier,
String type, String repositoryId )
- throws ObjectNotFoundException, ArchivaDatabaseException
{
// TODO Auto-generated method stub
return null;
}
public List<ArchivaArtifact> queryArtifacts( Constraint constraint )
- throws ObjectNotFoundException, ArchivaDatabaseException
{
List<ArchivaArtifact> artifacts = new ArrayList<ArchivaArtifact>();