[MRM-329] revised reporting actions

Submitted by: Teodoro Cue

git-svn-id: https://svn.apache.org/repos/asf/maven/archiva/trunk@562511 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Brett Porter 2007-08-03 16:02:00 +00:00
parent 83dfd74838
commit 0dc2c29c92
22 changed files with 734 additions and 659 deletions

View File

@ -21,11 +21,12 @@ package org.apache.maven.archiva.model;
/**
* RepositoryProblemReport
*
*
* @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a>
* @version $Id$
*/
public class RepositoryProblemReport extends RepositoryProblem
public class RepositoryProblemReport
extends RepositoryProblem
{
private static final long serialVersionUID = 4990893576717148324L;
@ -53,7 +54,7 @@ public class RepositoryProblemReport extends RepositoryProblem
public String getGroupURL()
{
return groupURL;
return groupURL;
}
public void setArtifactURL( String artifactURL )
@ -63,7 +64,7 @@ public class RepositoryProblemReport extends RepositoryProblem
public String getArtifactURL()
{
return artifactURL;
return artifactURL;
}
public void setVersionURL( String versionURL )
@ -73,6 +74,6 @@ public class RepositoryProblemReport extends RepositoryProblem
public String getVersionURL()
{
return versionURL;
return versionURL;
}
}

View File

@ -20,84 +20,85 @@ package org.apache.maven.archiva.database;
*/
/**
* DeclarativeConstraint
* DeclarativeConstraint
*
* @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a>
* @version $Id$
*/
public interface DeclarativeConstraint extends Constraint
public interface DeclarativeConstraint
extends Constraint
{
/**
* Get the declared imports used for this query. (optional)
*
* <p/>
* NOTE: This is DAO implementation specific.
*
*
* @return the imports. (can be null)
*/
public abstract String[] getDeclaredImports();
/**
* Get the declared parameters used for this query. (optional)
*
* <p/>
* NOTE: This is DAO implementation specific.
*
*
* @return the parameters. (can be null)
*/
public abstract String[] getDeclaredParameters();
/**
* The JDOQL filter to apply to the query. (optional)
*
* <p/>
* NOTE: This is DAO implementation specific.
*
*
* @return the filter to apply. (can be null)
*/
public abstract String getFilter();
/**
* Get the parameters used for this query. (required if using {@link #getDeclaredParameters()} )
*
* <p/>
* NOTE: This is DAO implementation specific.
*
*
* @return the parameters. (can be null)
*/
public abstract Object[] getParameters();
/**
* Get the sort direction name.
*
*
* @return the sort direction name. ("ASC" or "DESC") (only valid if {@link #getSortColumn()} is specified.)
*/
public abstract String getSortDirection();
/**
* Get the sort column name.
*
*
* @return the sort column name. (can be null)
*/
public abstract String getSortColumn();
/**
* Get the variables used within the query.
*
* <p/>
* NOTE: This is DAO implementation specific.
*
*
* @return the variables used within the query.
*/
public abstract String[] getVariables();
/**
* Get the SELECT WHERE (condition) value for the constraint.
*
*
* @return the equivalent of the SELECT WHERE (condition) value for this constraint. (can be null)
*/
public abstract String getWhereCondition();
/**
* Get the declared range used for this query. (optional)
*
* <p/>
* NOTE: This is DAO implementation specific.
*
*
* @return the range. (can be null)
*/
public abstract int[] getRange();

View File

@ -22,15 +22,20 @@ package org.apache.maven.archiva.database.constraints;
import org.apache.maven.archiva.database.Constraint;
/**
* RangeConstraint
* RangeConstraint
*/
public class RangeConstraint
extends AbstractDeclarativeConstraint
implements Constraint
{
public RangeConstraint()
{
this.range = null;
}
public RangeConstraint( int[] range )
{
this.range = range;
this.range = range;
}
public String getSortColumn()

View File

@ -24,16 +24,29 @@ import org.apache.maven.archiva.database.Constraint;
/**
* RepositoryProblemByGroupIdConstraint
*/
public class RepositoryProblemByGroupIdConstraint extends RangeConstraint implements Constraint
public class RepositoryProblemByGroupIdConstraint
extends RangeConstraint
implements Constraint
{
private String whereClause;
private void createWhereClause( String desiredGroupId )
{
whereClause = "groupId == desiredGroupId";
declParams = new String[]{"String desiredGroupId"};
params = new Object[]{desiredGroupId};
}
public RepositoryProblemByGroupIdConstraint( String desiredGroupId )
{
super();
createWhereClause( desiredGroupId );
}
public RepositoryProblemByGroupIdConstraint( int[] range, String desiredGroupId )
{
super( range );
whereClause = "groupId == desiredGroupId";
declParams = new String[] { "String desiredGroupId" };
params = new Object[] { desiredGroupId };
createWhereClause( desiredGroupId );
}
public String getSortColumn()

View File

@ -24,16 +24,29 @@ import org.apache.maven.archiva.database.Constraint;
/**
* RepositoryProblemByRepositoryIdConstraint
*/
public class RepositoryProblemByRepositoryIdConstraint extends RangeConstraint implements Constraint
public class RepositoryProblemByRepositoryIdConstraint
extends RangeConstraint
implements Constraint
{
private String whereClause;
private void createWhereClause( String desiredRepositoryId )
{
whereClause = "repositoryId == desiredRepositoryId";
declParams = new String[]{"String desiredRepositoryId"};
params = new Object[]{desiredRepositoryId};
}
public RepositoryProblemByRepositoryIdConstraint( String desiredRepositoryId )
{
super();
createWhereClause( desiredRepositoryId );
}
public RepositoryProblemByRepositoryIdConstraint( int[] range, String desiredRepositoryId )
{
super( range );
whereClause = "repositoryId == desiredRepositoryId";
declParams = new String[] { "String desiredRepositoryId" };
params = new Object[] { desiredRepositoryId };
createWhereClause( desiredRepositoryId );
}
public String getSortColumn()

View File

@ -22,23 +22,36 @@ package org.apache.maven.archiva.database.constraints;
import org.apache.maven.archiva.database.Constraint;
/**
* RepositoryProblemByArtifactIdConstraint
* RepositoryProblemConstraint
*/
public class RepositoryProblemByArtifactIdConstraint extends RangeConstraint implements Constraint
public class RepositoryProblemConstraint
extends RangeConstraint
implements Constraint
{
private String whereClause;
public RepositoryProblemByArtifactIdConstraint( int[] range, String desiredArtifactId )
private void createWhereClause( String desiredGroupId, String desiredRepositoryId )
{
whereClause = "groupId == desiredGroupId && repositoryId == desiredRepositoryId";
declParams = new String[]{"String desiredGroupId", "String desiredRepositoryId"};
params = new Object[]{desiredGroupId, desiredRepositoryId};
}
public RepositoryProblemConstraint( String desiredGroupId, String desiredRepositoryId )
{
super();
createWhereClause( desiredGroupId, desiredRepositoryId );
}
public RepositoryProblemConstraint( int[] range, String desiredGroupId, String desiredRepositoryId )
{
super( range );
whereClause = "artifactId == desiredArtifactId";
declParams = new String[] { "String desiredArtifactId" };
params = new Object[] { desiredArtifactId };
createWhereClause( desiredGroupId, desiredRepositoryId );
}
public String getSortColumn()
{
return "groupId";
return "artifactId";
}
public String getWhereCondition()

View File

@ -0,0 +1,57 @@
package org.apache.maven.archiva.database.constraints;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 org.apache.maven.archiva.database.Constraint;
/**
* UniqueFieldConstraint
*/
public class UniqueFieldConstraint
extends AbstractSimpleConstraint
implements Constraint
{
private String sql;
public UniqueFieldConstraint( String className, String fieldName )
{
sql = "SELECT " + fieldName + " FROM " + className + " GROUP BY " + fieldName + " ORDER BY " + fieldName +
" ASCENDING";
}
public UniqueFieldConstraint( String className, String fieldName, String fieldNamePrefix )
{
sql = "SELECT " + fieldName + " FROM " + className + " WHERE " + fieldName +
".startsWith( fieldPrefix ) PARAMETERS String fieldPrefix GROUP BY " + fieldName + " ORDER BY " +
fieldName + " ASCENDING";
super.params = new Object[]{fieldNamePrefix};
}
public Class getResultClass()
{
return String.class;
}
public String getSelectSql()
{
return sql;
}
}

View File

@ -0,0 +1,88 @@
package org.apache.maven.archiva.database.constraints;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 org.apache.maven.archiva.database.AbstractArchivaDatabaseTestCase;
import org.apache.maven.archiva.database.ArchivaDAO;
import org.apache.maven.archiva.database.Constraint;
import org.apache.maven.archiva.database.RepositoryProblemDAO;
import org.apache.maven.archiva.model.RepositoryProblem;
import java.util.List;
/**
* RangeConstraintTest
*/
public class RangeConstraintTest
extends AbstractArchivaDatabaseTestCase
{
private RepositoryProblemDAO repoProblemDao;
protected void setUp()
throws Exception
{
super.setUp();
ArchivaDAO dao = (ArchivaDAO) lookup( ArchivaDAO.ROLE, "jdo" );
repoProblemDao = dao.getRepositoryProblemDAO();
}
public RepositoryProblem createRepoProblem()
{
RepositoryProblem repoProblem = new RepositoryProblem();
repoProblem.setGroupId( "groupId" );
repoProblem.setArtifactId( "artifactId" );
repoProblem.setMessage( "message" );
repoProblem.setOrigin( "origin" );
repoProblem.setPath( "path" );
repoProblem.setRepositoryId( "repositoryId" );
repoProblem.setType( "type" );
repoProblem.setVersion( "version" );
return repoProblem;
}
public void testConstraint()
throws Exception
{
repoProblemDao.saveRepositoryProblem( createRepoProblem() );
repoProblemDao.saveRepositoryProblem( createRepoProblem() );
repoProblemDao.saveRepositoryProblem( createRepoProblem() );
repoProblemDao.saveRepositoryProblem( createRepoProblem() );
repoProblemDao.saveRepositoryProblem( createRepoProblem() );
assertConstraint( 0, new RangeConstraint( new int[]{5, 10} ) );
assertConstraint( 1, new RangeConstraint( new int[]{0, 1} ) );
assertConstraint( 2, new RangeConstraint( new int[]{0, 2} ) );
assertConstraint( 3, new RangeConstraint( new int[]{0, 3} ) );
assertConstraint( 4, new RangeConstraint( new int[]{0, 4} ) );
assertConstraint( 5, new RangeConstraint( new int[]{0, 5} ) );
assertConstraint( 5, new RangeConstraint() );
}
private void assertConstraint( int expectedHits, Constraint constraint )
throws Exception
{
List results = repoProblemDao.queryRepositoryProblems( constraint );
assertNotNull( "Range Constraint: Not Null", results );
assertEquals( "Range Constraint: Results.size", expectedHits, results.size() );
}
}

View File

@ -0,0 +1,93 @@
package org.apache.maven.archiva.database.constraints;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 org.apache.maven.archiva.database.AbstractArchivaDatabaseTestCase;
import org.apache.maven.archiva.database.ArchivaDAO;
import org.apache.maven.archiva.database.Constraint;
import org.apache.maven.archiva.database.RepositoryProblemDAO;
import org.apache.maven.archiva.model.RepositoryProblem;
import java.util.List;
/**
* RepositoryProblemByGroupIdConstraintTest
*/
public class RepositoryProblemByGroupIdConstraintTest
extends AbstractArchivaDatabaseTestCase
{
private static final String GROUP_ID_1 = "org.apache.maven.archiva.test.1";
private static final String GROUP_ID_2 = "org.apache.maven.archiva.test.2";
private static final String GROUP_ID_3 = "org.apache.maven.archiva.test.3";
private RepositoryProblemDAO repoProblemDao;
protected void setUp()
throws Exception
{
super.setUp();
ArchivaDAO dao = (ArchivaDAO) lookup( ArchivaDAO.ROLE, "jdo" );
repoProblemDao = dao.getRepositoryProblemDAO();
}
public RepositoryProblem createRepoProblem( String groupId )
{
RepositoryProblem repoProblem = new RepositoryProblem();
repoProblem.setGroupId( groupId );
repoProblem.setArtifactId( "artifactId" );
repoProblem.setMessage( "message" );
repoProblem.setOrigin( "origin" );
repoProblem.setPath( "path" );
repoProblem.setRepositoryId( "repositoryId" );
repoProblem.setType( "type" );
repoProblem.setVersion( "version" );
return repoProblem;
}
public void testConstraint()
throws Exception
{
repoProblemDao.saveRepositoryProblem( createRepoProblem( GROUP_ID_1 ) );
repoProblemDao.saveRepositoryProblem( createRepoProblem( GROUP_ID_2 ) );
repoProblemDao.saveRepositoryProblem( createRepoProblem( GROUP_ID_2 ) );
repoProblemDao.saveRepositoryProblem( createRepoProblem( GROUP_ID_3 ) );
repoProblemDao.saveRepositoryProblem( createRepoProblem( GROUP_ID_3 ) );
repoProblemDao.saveRepositoryProblem( createRepoProblem( GROUP_ID_3 ) );
assertConstraint( 1, new RepositoryProblemByGroupIdConstraint( GROUP_ID_1 ) );
assertConstraint( 2, new RepositoryProblemByGroupIdConstraint( GROUP_ID_2 ) );
assertConstraint( 3, new RepositoryProblemByGroupIdConstraint( GROUP_ID_3 ) );
}
private void assertConstraint( int expectedHits, Constraint constraint )
throws Exception
{
List results = repoProblemDao.queryRepositoryProblems( constraint );
assertNotNull( "Repository Problems by Group Id: Not Null", results );
assertEquals( "Repository Problems by Group Id: Results.size", expectedHits, results.size() );
}
}

View File

@ -0,0 +1,93 @@
package org.apache.maven.archiva.database.constraints;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 org.apache.maven.archiva.database.AbstractArchivaDatabaseTestCase;
import org.apache.maven.archiva.database.ArchivaDAO;
import org.apache.maven.archiva.database.Constraint;
import org.apache.maven.archiva.database.RepositoryProblemDAO;
import org.apache.maven.archiva.model.RepositoryProblem;
import java.util.List;
/**
* RepositoryProblemByRepositoryIdConstraintTest
*/
public class RepositoryProblemByRepositoryIdConstraintTest
extends AbstractArchivaDatabaseTestCase
{
private static final String REPO_ID_1 = "test-repo-1";
private static final String REPO_ID_2 = "test-repo-2";
private static final String REPO_ID_3 = "test-repo-3";
private RepositoryProblemDAO repoProblemDao;
protected void setUp()
throws Exception
{
super.setUp();
ArchivaDAO dao = (ArchivaDAO) lookup( ArchivaDAO.ROLE, "jdo" );
repoProblemDao = dao.getRepositoryProblemDAO();
}
public RepositoryProblem createRepoProblem( String repoId )
{
RepositoryProblem repoProblem = new RepositoryProblem();
repoProblem.setGroupId( "groupId" );
repoProblem.setArtifactId( "artifactId" );
repoProblem.setMessage( "message" );
repoProblem.setOrigin( "origin" );
repoProblem.setPath( "path" );
repoProblem.setRepositoryId( repoId );
repoProblem.setType( "type" );
repoProblem.setVersion( "version" );
return repoProblem;
}
public void testConstraint()
throws Exception
{
repoProblemDao.saveRepositoryProblem( createRepoProblem( REPO_ID_1 ) );
repoProblemDao.saveRepositoryProblem( createRepoProblem( REPO_ID_2 ) );
repoProblemDao.saveRepositoryProblem( createRepoProblem( REPO_ID_2 ) );
repoProblemDao.saveRepositoryProblem( createRepoProblem( REPO_ID_3 ) );
repoProblemDao.saveRepositoryProblem( createRepoProblem( REPO_ID_3 ) );
repoProblemDao.saveRepositoryProblem( createRepoProblem( REPO_ID_3 ) );
assertConstraint( 1, new RepositoryProblemByRepositoryIdConstraint( REPO_ID_1 ) );
assertConstraint( 2, new RepositoryProblemByRepositoryIdConstraint( REPO_ID_2 ) );
assertConstraint( 3, new RepositoryProblemByRepositoryIdConstraint( REPO_ID_3 ) );
}
private void assertConstraint( int expectedHits, Constraint constraint )
throws Exception
{
List results = repoProblemDao.queryRepositoryProblems( constraint );
assertNotNull( "Repository Problems by Repository Id: Not Null", results );
assertEquals( "Repository Problems by Repository Id: Results.size", expectedHits, results.size() );
}
}

View File

@ -0,0 +1,122 @@
package org.apache.maven.archiva.database.constraints;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 org.apache.maven.archiva.database.AbstractArchivaDatabaseTestCase;
import org.apache.maven.archiva.database.ArchivaDAO;
import org.apache.maven.archiva.database.Constraint;
import org.apache.maven.archiva.database.RepositoryProblemDAO;
import org.apache.maven.archiva.model.RepositoryProblem;
import java.util.List;
/**
* RepositoryProblemConstraintTest
*/
public class RepositoryProblemConstraintTest
extends AbstractArchivaDatabaseTestCase
{
private static final String GROUP_ID_1 = "org.apache.maven.archiva.test.1";
private static final String GROUP_ID_2 = "org.apache.maven.archiva.test.2";
private static final String GROUP_ID_3 = "org.apache.maven.archiva.test.3";
private static final String GROUP_ID_4 = "org.apache.maven.archiva.test.4";
private static final String REPO_ID_1 = "test-repo-1";
private static final String REPO_ID_2 = "test-repo-2";
private static final String REPO_ID_3 = "test-repo-3";
private static final String REPO_ID_4 = "test-repo-4";
private RepositoryProblemDAO repoProblemDao;
protected void setUp()
throws Exception
{
super.setUp();
ArchivaDAO dao = (ArchivaDAO) lookup( ArchivaDAO.ROLE, "jdo" );
repoProblemDao = dao.getRepositoryProblemDAO();
}
public RepositoryProblem createRepoProblem( String groupId, String repoId )
{
RepositoryProblem repoProblem = new RepositoryProblem();
repoProblem.setGroupId( groupId );
repoProblem.setArtifactId( "artifactId" );
repoProblem.setMessage( "message" );
repoProblem.setOrigin( "origin" );
repoProblem.setPath( "path" );
repoProblem.setRepositoryId( repoId );
repoProblem.setType( "type" );
repoProblem.setVersion( "version" );
return repoProblem;
}
public void testGroupIdConstraint()
throws Exception
{
repoProblemDao.saveRepositoryProblem( createRepoProblem( GROUP_ID_1, REPO_ID_1 ) );
repoProblemDao.saveRepositoryProblem( createRepoProblem( GROUP_ID_2, REPO_ID_1 ) );
repoProblemDao.saveRepositoryProblem( createRepoProblem( GROUP_ID_2, REPO_ID_1 ) );
repoProblemDao.saveRepositoryProblem( createRepoProblem( GROUP_ID_3, REPO_ID_1 ) );
repoProblemDao.saveRepositoryProblem( createRepoProblem( GROUP_ID_3, REPO_ID_1 ) );
repoProblemDao.saveRepositoryProblem( createRepoProblem( GROUP_ID_3, REPO_ID_1 ) );
assertConstraint( 1, new RepositoryProblemConstraint( GROUP_ID_1, REPO_ID_1 ) );
assertConstraint( 2, new RepositoryProblemConstraint( GROUP_ID_2, REPO_ID_1 ) );
assertConstraint( 3, new RepositoryProblemConstraint( GROUP_ID_3, REPO_ID_1 ) );
assertConstraint( 0, new RepositoryProblemConstraint( GROUP_ID_4, REPO_ID_1 ) );
}
public void testRepoIdConstraint()
throws Exception
{
repoProblemDao.saveRepositoryProblem( createRepoProblem( GROUP_ID_1, REPO_ID_1 ) );
repoProblemDao.saveRepositoryProblem( createRepoProblem( GROUP_ID_1, REPO_ID_2 ) );
repoProblemDao.saveRepositoryProblem( createRepoProblem( GROUP_ID_1, REPO_ID_2 ) );
repoProblemDao.saveRepositoryProblem( createRepoProblem( GROUP_ID_1, REPO_ID_3 ) );
repoProblemDao.saveRepositoryProblem( createRepoProblem( GROUP_ID_1, REPO_ID_3 ) );
repoProblemDao.saveRepositoryProblem( createRepoProblem( GROUP_ID_1, REPO_ID_3 ) );
assertConstraint( 1, new RepositoryProblemConstraint( GROUP_ID_1, REPO_ID_1 ) );
assertConstraint( 2, new RepositoryProblemConstraint( GROUP_ID_1, REPO_ID_2 ) );
assertConstraint( 3, new RepositoryProblemConstraint( GROUP_ID_1, REPO_ID_3 ) );
assertConstraint( 0, new RepositoryProblemConstraint( GROUP_ID_1, REPO_ID_4 ) );
}
private void assertConstraint( int expectedHits, Constraint constraint )
throws Exception
{
List results = repoProblemDao.queryRepositoryProblems( constraint );
assertNotNull( "Repository Problems: Not Null", results );
assertEquals( "Repository Problems: Results.size", expectedHits, results.size() );
}
}

View File

@ -0,0 +1,117 @@
package org.apache.maven.archiva.database.constraints;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 org.apache.maven.archiva.database.AbstractArchivaDatabaseTestCase;
import org.apache.maven.archiva.database.ArchivaDAO;
import org.apache.maven.archiva.database.ArtifactDAO;
import org.apache.maven.archiva.database.RepositoryProblemDAO;
import org.apache.maven.archiva.database.SimpleConstraint;
import org.apache.maven.archiva.model.ArchivaArtifact;
import org.apache.maven.archiva.model.ArchivaArtifactModel;
import org.apache.maven.archiva.model.RepositoryProblem;
import java.util.Date;
import java.util.List;
/**
* UniqueFieldConstraintTest
*/
public class UniqueFieldConstraintTest
extends AbstractArchivaDatabaseTestCase
{
private static final String GROUP_ID_1 = "org.apache.maven.archiva.test.1";
private static final String GROUP_ID_2 = "org.apache.maven.archiva.test.2";
private static final String GROUP_ID_3 = "org.apache.maven.archiva.test.3";
private ArchivaDAO archivaDao;
private ArtifactDAO artifactDao;
private RepositoryProblemDAO repoProblemDao;
protected void setUp()
throws Exception
{
super.setUp();
archivaDao = (ArchivaDAO) lookup( ArchivaDAO.ROLE, "jdo" );
artifactDao = archivaDao.getArtifactDAO();
repoProblemDao = archivaDao.getRepositoryProblemDAO();
}
public ArchivaArtifact createArtifact( String groupId )
{
ArchivaArtifact artifact = artifactDao.createArtifact( groupId, "artifactId", "version", "classifier", "jar" );
artifact.getModel().setLastModified( new Date() );
artifact.getModel().setRepositoryId( "repoId" );
return artifact;
}
public RepositoryProblem createRepoProblem( String groupId )
{
RepositoryProblem repoProblem = new RepositoryProblem();
repoProblem.setGroupId( groupId );
repoProblem.setArtifactId( "artifactId" );
repoProblem.setMessage( "message" );
repoProblem.setOrigin( "origin" );
repoProblem.setPath( "path" );
repoProblem.setRepositoryId( "repoId" );
repoProblem.setType( "type" );
repoProblem.setVersion( "version" );
return repoProblem;
}
public void testArtifact()
throws Exception
{
artifactDao.saveArtifact( createArtifact( GROUP_ID_1 ) );
artifactDao.saveArtifact( createArtifact( GROUP_ID_2 ) );
artifactDao.saveArtifact( createArtifact( GROUP_ID_3 ) );
assertConstraint( 1, new UniqueFieldConstraint( ArchivaArtifactModel.class.getName(), "artifactId" ) );
assertConstraint( 3, new UniqueFieldConstraint( ArchivaArtifactModel.class.getName(), "groupId" ) );
}
public void testRepoProblem()
throws Exception
{
repoProblemDao.saveRepositoryProblem( createRepoProblem( GROUP_ID_1 ) );
repoProblemDao.saveRepositoryProblem( createRepoProblem( GROUP_ID_2 ) );
repoProblemDao.saveRepositoryProblem( createRepoProblem( GROUP_ID_3 ) );
assertConstraint( 1, new UniqueFieldConstraint( RepositoryProblem.class.getName(), "artifactId" ) );
assertConstraint( 3, new UniqueFieldConstraint( RepositoryProblem.class.getName(), "groupId" ) );
}
private void assertConstraint( int expectedHits, SimpleConstraint constraint )
throws Exception
{
List results = archivaDao.query( constraint );
assertNotNull( "Repository Problems: Not Null", results );
assertEquals( "Repository Problems: Results.size", expectedHits, results.size() );
}
}

View File

@ -1,238 +0,0 @@
<?xml version="1.0"?>
<!DOCTYPE jasperReport PUBLIC "-//JasperReports//DTD Report Design//EN" "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
<jasperReport name="ArchivaReport"
pageWidth="1800">
<field name="groupId" class="java.lang.String"/>
<field name="artifactId" class="java.lang.String"/>
<field name="version" class="java.lang.String"/>
<field name="message" class="java.lang.String"/>
<field name="origin" class="java.lang.String"/>
<field name="path" class="java.lang.String"/>
<field name="type" class="java.lang.String"/>
<field name="groupURL" class="java.lang.String"/>
<field name="artifactURL" class="java.lang.String"/>
<field name="versionURL" class="java.lang.String"/>
<field name="prev" class="java.lang.String"/>
<field name="next" class="java.lang.String"/>
<field name="page" class="java.lang.Integer"/>
<field name="isLastPage" class="java.lang.Boolean"/>
<title>
<band height="50">
<staticText>
<reportElement x="0" y="0" width="2240" height="50"/>
<textElement textAlignment="Center">
<font size="14" isBold="true"/>
</textElement>
<text><![CDATA[All Problematic Artifacts]]></text>
</staticText>
</band>
</title>
<pageHeader>
<band></band>
</pageHeader>
<columnHeader>
<band height="20">
<staticText>
<reportElement x="0" y="0" width="300" height="20"/>
<box leftBorder="Thin"
leftPadding="10"
rightBorder="Thin"
rightPadding="10"
topBorder="Thin"
bottomBorder="Thin"/>
<textElement textAlignment="Center">
<font size="12"/>
</textElement>
<text><![CDATA[Group Id]]></text>
</staticText>
<staticText>
<reportElement x="300" y="0" width="300" height="20"/>
<box leftPadding="10"
rightBorder="Thin"
rightPadding="10"
topBorder="Thin"
bottomBorder="Thin"/>
<textElement textAlignment="Center">
<font size="12"/>
</textElement>
<text><![CDATA[Artifact Id]]></text>
</staticText>
<staticText>
<reportElement x="600" y="0" width="300" height="20"/>
<box leftPadding="10"
rightBorder="Thin"
rightPadding="10"
topBorder="Thin"
bottomBorder="Thin"/>
<textElement textAlignment="Center">
<font size="12"/>
</textElement>
<text><![CDATA[Version]]></text>
</staticText>
<staticText>
<reportElement x="900" y="0" width="300" height="20"/>
<box leftPadding="10"
rightBorder="Thin"
rightPadding="10"
topBorder="Thin"
bottomBorder="Thin"/>
<textElement textAlignment="Center">
<font size="12"/>
</textElement>
<text><![CDATA[Message]]></text>
</staticText>
<staticText>
<reportElement x="1200" y="0" width="300" height="20"/>
<box leftPadding="10"
rightBorder="Thin"
rightPadding="10"
topBorder="Thin"
bottomBorder="Thin"/>
<textElement textAlignment="Center">
<font size="12"/>
</textElement>
<text><![CDATA[Origin]]></text>
</staticText>
<staticText>
<reportElement x="1500" y="0" width="300" height="20"/>
<box leftPadding="10"
rightBorder="Thin"
rightPadding="10"
topBorder="Thin"
bottomBorder="Thin"/>
<textElement textAlignment="Center">
<font size="12"/>
</textElement>
<text><![CDATA[Repository Path]]></text>
</staticText>
<staticText>
<reportElement x="1800" y="0" width="300" height="20"/>
<box leftPadding="10"
rightBorder="Thin"
rightPadding="10"
topBorder="Thin"
bottomBorder="Thin"/>
<textElement textAlignment="Center">
<font size="12"/>
</textElement>
<text><![CDATA[Type]]></text>
</staticText>
</band>
</columnHeader>
<detail>
<band height="20">
<textField isBlankWhenNull="true" hyperlinkType="Reference" hyperlinkTarget="Self">
<reportElement x="0" y="0" width="300" height="15"/>
<box leftBorder="Thin"
leftPadding="10"
rightBorder="Thin"
rightPadding="10"
bottomBorder="Thin"/>
<textFieldExpression>
<![CDATA[$F{groupId}]]>
</textFieldExpression>
<hyperlinkReferenceExpression><![CDATA[$F{groupURL}]]></hyperlinkReferenceExpression>
</textField>
<textField isBlankWhenNull="true" hyperlinkType="Reference" hyperlinkTarget="Self">
<reportElement x="300" y="0" width="300" height="15"/>
<box leftPadding="10"
rightBorder="Thin"
rightPadding="10"
bottomBorder="Thin"/>
<textFieldExpression>
<![CDATA[$F{artifactId}]]>
</textFieldExpression>
<hyperlinkReferenceExpression><![CDATA[$F{artifactURL}]]></hyperlinkReferenceExpression>
</textField>
<textField isBlankWhenNull="true" hyperlinkType="Reference" hyperlinkTarget="Self">
<reportElement x="600" y="0" width="300" height="15"/>
<box leftPadding="10"
rightBorder="Thin"
rightPadding="10"
bottomBorder="Thin"/>
<textFieldExpression>
<![CDATA[$F{version}]]>
</textFieldExpression>
<hyperlinkReferenceExpression><![CDATA[$F{versionURL}]]></hyperlinkReferenceExpression>
</textField>
<textField isBlankWhenNull="true" isStretchWithOverflow="true">
<reportElement x="900" y="0" width="300" height="15"/>
<box leftPadding="10"
rightBorder="Thin"
rightPadding="10"
bottomBorder="Thin"/>
<textFieldExpression>
<![CDATA[$F{message}]]>
</textFieldExpression>
</textField>
<textField isBlankWhenNull="true">
<reportElement x="1200" y="0" width="300" height="15"/>
<box leftPadding="10"
rightBorder="Thin"
rightPadding="10"
bottomBorder="Thin"/>
<textFieldExpression>
<![CDATA[$F{origin}]]>
</textFieldExpression>
</textField>
<textField isBlankWhenNull="true" isStretchWithOverflow="true">
<reportElement x="1500" y="0" width="300" height="15"/>
<box leftPadding="10"
rightBorder="Thin"
rightPadding="10"
bottomBorder="Thin"/>
<textFieldExpression>
<![CDATA[$F{path}]]>
</textFieldExpression>
</textField>
<textField isBlankWhenNull="true">
<reportElement x="1800" y="0" width="300" height="15"/>
<box leftPadding="10"
rightBorder="Thin"
rightPadding="10"
bottomBorder="Thin"/>
<textFieldExpression>
<![CDATA[$F{type}]]>
</textFieldExpression>
</textField>
</band>
</detail>
<columnFooter>
<band></band>
</columnFooter>
<pageFooter>
<band height="15">
<textField>
<reportElement x="0" y="0" width="50" height="15"/>
<textFieldExpression>
<![CDATA["Page: " + $F{page}]]>
</textFieldExpression>
</textField>
<textField hyperlinkType="Reference" hyperlinkTarget="Self">
<reportElement x="50" y="0" width="50" height="15">
<printWhenExpression>
<![CDATA[$F{page}.intValue() != 1]]>
</printWhenExpression>
</reportElement>
<textFieldExpression>
<![CDATA["prev"]]>
</textFieldExpression>
<hyperlinkReferenceExpression><![CDATA[$F{prev}]]></hyperlinkReferenceExpression>
</textField>
<textField hyperlinkType="Reference" hyperlinkTarget="Self">
<reportElement x="100" y="0" width="50" height="15">
<printWhenExpression>
<![CDATA[$F{isLastPage} != true]]>
</printWhenExpression>
</reportElement>
<textFieldExpression>
<![CDATA["next"]]>
</textFieldExpression>
<hyperlinkReferenceExpression><![CDATA[$F{next}]]></hyperlinkReferenceExpression>
</textField>
</band>
</pageFooter>
<summary>
<band></band>
</summary>
</jasperReport>

View File

@ -1,35 +0,0 @@
package org.apache.maven.archiva.web.action.reports;
import org.apache.maven.archiva.database.constraints.RangeConstraint;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*/
/**
* All problematic artifacts reporting.
*
* @plexus.component role="com.opensymphony.xwork.Action" role-hint="allProblematicArtifactsAction"
*/
public class AllProblematicArtifactsAction extends AbstractReportAction
{
protected void configureConstraint()
{
this.constraint = new RangeConstraint( range );
}
}

View File

@ -19,13 +19,13 @@ package org.apache.maven.archiva.web.action.reports;
* under the License.
*/
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import com.opensymphony.webwork.interceptor.ServletRequestAware;
import org.apache.maven.archiva.database.ArchivaDAO;
import org.apache.maven.archiva.database.Constraint;
import org.apache.maven.archiva.database.constraints.RangeConstraint;
import org.apache.maven.archiva.database.constraints.RepositoryProblemByGroupIdConstraint;
import org.apache.maven.archiva.database.constraints.RepositoryProblemByRepositoryIdConstraint;
import org.apache.maven.archiva.database.constraints.RepositoryProblemConstraint;
import org.apache.maven.archiva.model.RepositoryProblem;
import org.apache.maven.archiva.model.RepositoryProblemReport;
import org.apache.maven.archiva.security.ArchivaRoleConstants;
@ -35,12 +35,16 @@ import org.codehaus.plexus.redback.xwork.interceptor.SecureActionBundle;
import org.codehaus.plexus.redback.xwork.interceptor.SecureActionException;
import org.codehaus.plexus.xwork.action.PlexusActionSupport;
import com.opensymphony.webwork.interceptor.ServletRequestAware;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;
/**
* Abstract reporting.
* @plexus.component role="com.opensymphony.xwork.Action" role-hint="generateReportAction"
*/
public abstract class AbstractReportAction extends PlexusActionSupport implements SecureAction, ServletRequestAware
public class GenerateReportAction
extends PlexusActionSupport
implements SecureAction, ServletRequestAware
{
/**
* @plexus.requirement role-hint="jdo"
@ -53,6 +57,10 @@ public abstract class AbstractReportAction extends PlexusActionSupport implement
protected List reports = new ArrayList();
protected String groupId;
protected String repositoryId;
protected String prev;
protected String next;
@ -67,13 +75,10 @@ public abstract class AbstractReportAction extends PlexusActionSupport implement
public static final String BLANK = "blank";
public String execute() throws Exception
public String execute()
throws Exception
{
range[0] = ( page - 1 ) * rowCount;
range[1] = ( page * rowCount ) + 1; // Add 1 to check if it's the last page or not.
configureConstraint();
List problemArtifacts = dao.getRepositoryProblemDAO().queryRepositoryProblems( constraint );
List problemArtifacts = dao.getRepositoryProblemDAO().queryRepositoryProblems( configureConstraint() );
String contextPath =
request.getRequestURL().substring( 0, request.getRequestURL().indexOf( request.getRequestURI() ) );
@ -85,10 +90,8 @@ public abstract class AbstractReportAction extends PlexusActionSupport implement
problemArtifactReport = new RepositoryProblemReport( problemArtifact );
problemArtifactReport.setGroupURL( contextPath + "/browse/" + problemArtifact.getGroupId() );
problemArtifactReport.setArtifactURL( contextPath + "/browse/" + problemArtifact.getGroupId() + "/"
+ problemArtifact.getArtifactId() );
problemArtifactReport.setVersionURL( contextPath + "/browse/" + problemArtifact.getGroupId() + "/"
+ problemArtifact.getArtifactId() + "/" + problemArtifact.getVersion() );
problemArtifactReport.setArtifactURL(
contextPath + "/browse/" + problemArtifact.getGroupId() + "/" + problemArtifact.getArtifactId() );
reports.add( problemArtifactReport );
}
@ -102,8 +105,10 @@ public abstract class AbstractReportAction extends PlexusActionSupport implement
reports.remove( rowCount );
}
prev = request.getRequestURL() + "?page=" + ( page - 1 ) + "&rowCount=" + rowCount;
next = request.getRequestURL() + "?page=" + ( page + 1 ) + "&rowCount=" + rowCount;
prev = request.getRequestURL() + "?page=" + ( page - 1 ) + "&rowCount=" + rowCount + "&groupId=" + groupId +
"&repositoryId=" + repositoryId;
next = request.getRequestURL() + "?page=" + ( page + 1 ) + "&rowCount=" + rowCount + "&groupId=" + groupId +
"&repositoryId=" + repositoryId;
if ( reports.size() == 0 && page == 1 )
{
@ -115,10 +120,35 @@ public abstract class AbstractReportAction extends PlexusActionSupport implement
}
}
/**
* To be implemented by sub-reports to configure specific constraints.
*/
abstract protected void configureConstraint();
private Constraint configureConstraint()
{
Constraint constraint;
range[0] = ( page - 1 ) * rowCount;
range[1] = ( page * rowCount ) + 1; // Add 1 to check if it's the last page or not.
if ( groupId != null && ( !groupId.equals( "" ) ) )
{
if ( repositoryId != null && ( !repositoryId.equals( "" ) ) )
{
constraint = new RepositoryProblemConstraint( range, groupId, repositoryId );
}
else
{
constraint = new RepositoryProblemByGroupIdConstraint( range, groupId );
}
}
else if ( repositoryId != null && ( !repositoryId.equals( "" ) ) )
{
constraint = new RepositoryProblemByRepositoryIdConstraint( range, repositoryId );
}
else
{
constraint = new RangeConstraint( range );
}
return constraint;
}
public void setServletRequest( HttpServletRequest request )
{
@ -130,6 +160,26 @@ public abstract class AbstractReportAction extends PlexusActionSupport implement
return reports;
}
public String getGroupId()
{
return groupId;
}
public void setGroupId( String groupId )
{
this.groupId = groupId;
}
public String getRepositoryId()
{
return repositoryId;
}
public void setRepositoryId( String repositoryId )
{
this.repositoryId = repositoryId;
}
public String getPrev()
{
return prev;
@ -165,7 +215,8 @@ public abstract class AbstractReportAction extends PlexusActionSupport implement
return isLastPage;
}
public SecureActionBundle getSecureActionBundle() throws SecureActionException
public SecureActionBundle getSecureActionBundle()
throws SecureActionException
{
SecureActionBundle bundle = new SecureActionBundle();

View File

@ -1,42 +0,0 @@
package org.apache.maven.archiva.web.action.reports;
import org.apache.maven.archiva.database.constraints.RepositoryProblemByArtifactIdConstraint;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*/
/**
* By artifact id reporting.
*
* @plexus.component role="com.opensymphony.xwork.Action" role-hint="reportsByArtifactIdAction"
*/
public class ReportsByArtifactIdAction extends AbstractReportAction
{
private String artifactId;
protected void configureConstraint()
{
this.constraint = new RepositoryProblemByArtifactIdConstraint( range, artifactId );
}
public void setArtifactId( String artifactId )
{
this.artifactId = artifactId;
}
}

View File

@ -1,43 +0,0 @@
package org.apache.maven.archiva.web.action.reports;
import org.apache.maven.archiva.database.constraints.RangeConstraint;
import org.apache.maven.archiva.database.constraints.RepositoryProblemByGroupIdConstraint;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*/
/**
* By group id reporting.
*
* @plexus.component role="com.opensymphony.xwork.Action" role-hint="reportsByGroupIdAction"
*/
public class ReportsByGroupIdAction extends AbstractReportAction
{
private String groupId;
protected void configureConstraint()
{
this.constraint = new RepositoryProblemByGroupIdConstraint( range, groupId );
}
public void setGroupId( String groupId )
{
this.groupId = groupId;
}
}

View File

@ -1,42 +0,0 @@
package org.apache.maven.archiva.web.action.reports;
import org.apache.maven.archiva.database.constraints.RepositoryProblemByRepositoryIdConstraint;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*/
/**
* By repository id reporting.
*
* @plexus.component role="com.opensymphony.xwork.Action" role-hint="reportsByRepositoryIdAction"
*/
public class ReportsByRepositoryIdAction extends AbstractReportAction
{
private String repositoryId;
protected void configureConstraint()
{
this.constraint = new RepositoryProblemByRepositoryIdConstraint( range, repositoryId );
}
public void setRepositoryId( String repositoryId )
{
this.repositoryId = repositoryId;
}
}

View File

@ -1,49 +0,0 @@
package org.apache.maven.archiva.web.action.reports;
import java.util.Collection;
import org.apache.maven.archiva.database.ArchivaDAO;
import org.codehaus.plexus.xwork.action.PlexusActionSupport;
/**
* Show reports.
*
* @plexus.component role="com.opensymphony.xwork.Action" role-hint="showReportsAction"
*/
public class ShowReportsAction extends PlexusActionSupport
{
/**
* @plexus.requirement role-hint="jdo"
*/
protected ArchivaDAO dao;
private Collection groupIds;
private Collection artifactIds;
private Collection repositoryIds;
public String execute() throws Exception
{
/*
* TODO Use combo box for groupIds, artifactIds and repositoryIds instead of a text field.
*/
return SUCCESS;
}
public Collection getGroupIds()
{
return groupIds;
}
public Collection getArtifactIds()
{
return artifactIds;
}
public Collection getRepositoryIds()
{
return repositoryIds;
}
}

View File

@ -395,34 +395,7 @@
<result>/WEB-INF/jsp/reports/showReports.jsp</result>
</action>
<action name="allProblematicArtifacts" class="allProblematicArtifactsAction">
<result name="success" type="jasper">
<param name="location">/WEB-INF/jasperreports/report.jasper</param>
<param name="dataSource">reports</param>
<param name="format">HTML</param>
</result>
<result name="blank">/WEB-INF/jsp/reports/blankReport.jsp</result>
</action>
<action name="byGroupId" class="reportsByGroupIdAction">
<result name="success" type="jasper">
<param name="location">/WEB-INF/jasperreports/report.jasper</param>
<param name="dataSource">reports</param>
<param name="format">HTML</param>
</result>
<result name="blank">/WEB-INF/jsp/reports/blankReport.jsp</result>
</action>
<action name="byArtifactId" class="reportsByArtifactIdAction">
<result name="success" type="jasper">
<param name="location">/WEB-INF/jasperreports/report.jasper</param>
<param name="dataSource">reports</param>
<param name="format">HTML</param>
</result>
<result name="blank">/WEB-INF/jsp/reports/blankReport.jsp</result>
</action>
<action name="byRepositoryId" class="reportsByRepositoryIdAction">
<action name="generateReportAction" class="generateReportAction">
<result name="success" type="jasper">
<param name="location">/WEB-INF/jasperreports/report.jasper</param>
<param name="dataSource">reports</param>

View File

@ -1,36 +0,0 @@
<%--
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
~ distributed with this work for additional information
~ regarding copyright ownership. The ASF licenses this file
~ to you 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.
--%>
<%@ taglib prefix="ww" uri="/webwork" %>
<html>
<head>
<title>Reports</title>
<ww:head/>
</head>
<body>
<h1>Reports</h1>
<div id="contentArea">
<ww:text name="The operation generated an empty report."/>
</div>
</body>
</html>

View File

@ -1,80 +0,0 @@
<%--
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
~ distributed with this work for additional information
~ regarding copyright ownership. The ASF licenses this file
~ to you 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.
--%>
<%@ taglib prefix="ww" uri="/webwork" %>
<html>
<head>
<title>Reports</title>
<ww:head/>
</head>
<body>
<script>
function getRowCount()
{
document.getElementById("rowCount1_id").value = document.getElementById("rowCountSource_id").value;
document.getElementById("rowCount2_id").value = document.getElementById("rowCountSource_id").value;
document.getElementById("rowCount3_id").value = document.getElementById("rowCountSource_id").value;
document.getElementById("rowCount4_id").value = document.getElementById("rowCountSource_id").value;
}
</script>
<h1>Reports</h1>
<div id="contentArea">
<h2>Global Settings</h2>
<ww:textfield id="rowCountSource_id" label="Row Count" value="100"/>
<br><br>
<h2>All Problematic Artifacts</h2>
<ww:form onsubmit="getRowCount();" action="allProblematicArtifacts" namespace="/report">
<ww:hidden id="rowCount1_id" name="rowCount"/>
<ww:submit value="Show All Problematic Artifacts"/>
</ww:form>
<br>
<h2>Problematic Artifacts by Group Id</h2>
<ww:form action="byGroupId" namespace="/report">
<ww:hidden id="rowCount2_id" name="rowCount"/>
<ww:textfield name="groupId"/>
<ww:submit value="Problematic Artifacts by Group Id"/>
</ww:form>
<br>
<h2>Problematic Artifacts by Artifact Id</h2>
<ww:form action="byArtifactId" namespace="/report">
<ww:hidden id="rowCount3_id" name="rowCount"/>
<ww:textfield name="artifactId"/>
<ww:submit value="Problematic Artifacts by Artifact Id"/>
</ww:form>
<br>
<h2>Problematic Artifacts by Repository Id</h2>
<ww:form action="byRepositoryId" namespace="/report">
<ww:hidden id="rowCount4_id" name="rowCount"/>
<ww:textfield name="repositoryId"/>
<ww:submit value="Problematic Artifacts by Repository Id"/>
</ww:form>
</div>
</body>
</html>