Return-Path: Delivered-To: apmail-archiva-commits-archive@www.apache.org Received: (qmail 80002 invoked from network); 14 Dec 2009 02:06:30 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 14 Dec 2009 02:06:30 -0000 Received: (qmail 40769 invoked by uid 500); 14 Dec 2009 02:06:30 -0000 Delivered-To: apmail-archiva-commits-archive@archiva.apache.org Received: (qmail 40695 invoked by uid 500); 14 Dec 2009 02:06:30 -0000 Mailing-List: contact commits-help@archiva.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@archiva.apache.org Delivered-To: mailing list commits@archiva.apache.org Received: (qmail 40686 invoked by uid 99); 14 Dec 2009 02:06:29 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 14 Dec 2009 02:06:29 +0000 X-ASF-Spam-Status: No, hits=-2.6 required=5.0 tests=BAYES_00 X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 14 Dec 2009 02:06:27 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 252AF23889B6; Mon, 14 Dec 2009 02:06:07 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r890155 - in /archiva/branches/MRM-1296/archiva-modules: archiva-base/archiva-model/ archiva-base/archiva-model/src/main/mdo/ archiva-database/src/main/java/org/apache/maven/archiva/database/ archiva-database/src/main/java/org/apache/maven/... Date: Mon, 14 Dec 2009 02:06:06 -0000 To: commits@archiva.apache.org From: oching@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20091214020607.252AF23889B6@eris.apache.org> Author: oching Date: Mon Dec 14 02:06:05 2009 New Revision: 890155 URL: http://svn.apache.org/viewvc?rev=890155&view=rev Log: [MRM-1296] Audit Log Report o created data model, dao and query constraint object for audit logs o save events in database Added: archiva/branches/MRM-1296/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/ArchivaAuditLogsDao.java archiva/branches/MRM-1296/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/constraints/MostRecentArchivaAuditLogsConstraint.java archiva/branches/MRM-1296/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/jdo/JdoArchivaAuditLogsDao.java Modified: archiva/branches/MRM-1296/archiva-modules/archiva-base/archiva-model/pom.xml archiva/branches/MRM-1296/archiva-modules/archiva-base/archiva-model/src/main/mdo/archiva-base.xml archiva/branches/MRM-1296/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/PlexusActionSupport.java archiva/branches/MRM-1296/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/UploadAction.java archiva/branches/MRM-1296/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/reports/ViewAuditLogReportAction.java archiva/branches/MRM-1296/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/auditLogReport.jsp Modified: archiva/branches/MRM-1296/archiva-modules/archiva-base/archiva-model/pom.xml URL: http://svn.apache.org/viewvc/archiva/branches/MRM-1296/archiva-modules/archiva-base/archiva-model/pom.xml?rev=890155&r1=890154&r2=890155&view=diff ============================================================================== --- archiva/branches/MRM-1296/archiva-modules/archiva-base/archiva-model/pom.xml (original) +++ archiva/branches/MRM-1296/archiva-modules/archiva-base/archiva-model/pom.xml Mon Dec 14 02:06:05 2009 @@ -70,7 +70,7 @@ org.codehaus.modello modello-maven-plugin - 1.2.1 + 1.2.3 false src/main/mdo/archiva-base.xml Modified: archiva/branches/MRM-1296/archiva-modules/archiva-base/archiva-model/src/main/mdo/archiva-base.xml URL: http://svn.apache.org/viewvc/archiva/branches/MRM-1296/archiva-modules/archiva-base/archiva-model/src/main/mdo/archiva-base.xml?rev=890155&r1=890154&r2=890155&view=diff ============================================================================== --- archiva/branches/MRM-1296/archiva-modules/archiva-base/archiva-model/src/main/mdo/archiva-base.xml (original) +++ archiva/branches/MRM-1296/archiva-modules/archiva-base/archiva-model/src/main/mdo/archiva-base.xml Mon Dec 14 02:06:05 2009 @@ -5,7 +5,7 @@ xsd.target-namespace="http://archiva.apache.org/model/1.2.0"> archiva-base-model ArchivaBaseModel - 1.2.1 + 1.2.3 Archiva Model @@ -75,6 +75,14 @@ * + + archivaAuditLogs + 1.3.0+ + + ArchivaAuditLogs + * + + @@ -2278,5 +2286,70 @@ + + ArchivaAuditLogs + 1.2.3+ + + + repositoryId + 1.2.3+ + false + true + String + + The repository id where the operation was done. + + + + eventDate + 1.2.3+ + false + true + Date + + The timestamp on when the event happened. + + + + artifact + 1.2.3+ + false + false + String + + The affected artifact, if there is one. + + + + event + 1.2.3+ + false + false + String + + The event that happened. + + + + username + 1.2.3+ + false + true + String + + The user who executed the event. + + + + + + 1.2.3+ + + + + Added: archiva/branches/MRM-1296/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/ArchivaAuditLogsDao.java URL: http://svn.apache.org/viewvc/archiva/branches/MRM-1296/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/ArchivaAuditLogsDao.java?rev=890155&view=auto ============================================================================== --- archiva/branches/MRM-1296/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/ArchivaAuditLogsDao.java (added) +++ archiva/branches/MRM-1296/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/ArchivaAuditLogsDao.java Mon Dec 14 02:06:05 2009 @@ -0,0 +1,35 @@ +package org.apache.maven.archiva.database; + +/* + * 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 java.util.List; + +import org.apache.maven.archiva.model.ArchivaAuditLogs; + +public interface ArchivaAuditLogsDao +{ + public List queryAuditLogs( Constraint constraint ) + throws ObjectNotFoundException, ArchivaDatabaseException; + + public ArchivaAuditLogs saveAuditLogs( ArchivaAuditLogs logs ); + + public void deleteAuditLogs( ArchivaAuditLogs logs ) + throws ArchivaDatabaseException; +} Added: archiva/branches/MRM-1296/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/constraints/MostRecentArchivaAuditLogsConstraint.java URL: http://svn.apache.org/viewvc/archiva/branches/MRM-1296/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/constraints/MostRecentArchivaAuditLogsConstraint.java?rev=890155&view=auto ============================================================================== --- archiva/branches/MRM-1296/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/constraints/MostRecentArchivaAuditLogsConstraint.java (added) +++ archiva/branches/MRM-1296/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/constraints/MostRecentArchivaAuditLogsConstraint.java Mon Dec 14 02:06:05 2009 @@ -0,0 +1,43 @@ +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.model.ArchivaAuditLogs; + +public class MostRecentArchivaAuditLogsConstraint + extends AbstractSimpleConstraint +{ + private String sql; + + public MostRecentArchivaAuditLogsConstraint() + { + sql = "SELECT FROM " + ArchivaAuditLogs.class.getName() + " ORDER BY eventDate DESCENDING RANGE 0,1"; + } + + public Class getResultClass() + { + return ArchivaAuditLogs.class; + } + + public String getSelectSql() + { + return sql; + } +} Added: archiva/branches/MRM-1296/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/jdo/JdoArchivaAuditLogsDao.java URL: http://svn.apache.org/viewvc/archiva/branches/MRM-1296/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/jdo/JdoArchivaAuditLogsDao.java?rev=890155&view=auto ============================================================================== --- archiva/branches/MRM-1296/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/jdo/JdoArchivaAuditLogsDao.java (added) +++ archiva/branches/MRM-1296/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/jdo/JdoArchivaAuditLogsDao.java Mon Dec 14 02:06:05 2009 @@ -0,0 +1,61 @@ +package org.apache.maven.archiva.database.jdo; + +/* + * 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 java.util.List; + +import org.apache.maven.archiva.database.ArchivaAuditLogsDao; +import org.apache.maven.archiva.database.ArchivaDatabaseException; +import org.apache.maven.archiva.database.Constraint; +import org.apache.maven.archiva.database.ObjectNotFoundException; +import org.apache.maven.archiva.model.ArchivaAuditLogs; + +/** + * JdoArchivaAuditLogsDao + * + * @version + * + * @plexus.component role-hint="jdo" + */ +public class JdoArchivaAuditLogsDao + implements ArchivaAuditLogsDao +{ + /** + * @plexus.requirement role-hint="archiva" + */ + private JdoAccess jdo; + + public void deleteAuditLogs( ArchivaAuditLogs logs ) + throws ArchivaDatabaseException + { + jdo.removeObject( logs ); + } + + public List queryAuditLogs( Constraint constraint ) + throws ObjectNotFoundException, ArchivaDatabaseException + { + return (List) jdo.queryObjects( ArchivaAuditLogs.class, constraint ); + } + + public ArchivaAuditLogs saveAuditLogs( ArchivaAuditLogs logs ) + { + return (ArchivaAuditLogs) jdo.saveObject( logs ); + } +} Modified: archiva/branches/MRM-1296/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/PlexusActionSupport.java URL: http://svn.apache.org/viewvc/archiva/branches/MRM-1296/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/PlexusActionSupport.java?rev=890155&r1=890154&r2=890155&view=diff ============================================================================== --- archiva/branches/MRM-1296/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/PlexusActionSupport.java (original) +++ archiva/branches/MRM-1296/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/PlexusActionSupport.java Mon Dec 14 02:06:05 2009 @@ -20,11 +20,14 @@ */ import java.util.ArrayList; +import java.util.Calendar; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; +import org.apache.maven.archiva.database.ArchivaAuditLogsDao; +import org.apache.maven.archiva.model.ArchivaAuditLogs; import org.apache.maven.archiva.repository.audit.AuditEvent; import org.apache.maven.archiva.repository.audit.AuditListener; import org.apache.maven.archiva.repository.audit.Auditable; @@ -53,6 +56,11 @@ */ private List auditListeners = new ArrayList(); + /** + * @plexus.requirement role-hint="jdo" + */ + private ArchivaAuditLogsDao auditLogsDao; + private String principal; @SuppressWarnings("unchecked") @@ -85,6 +93,15 @@ { listener.auditEvent( event ); } + + ArchivaAuditLogs auditLogs = new ArchivaAuditLogs(); + auditLogs.setArtifact( resource ); + auditLogs.setEvent( action ); + auditLogs.setEventDate( Calendar.getInstance().getTime() ); + auditLogs.setRepositoryId( repositoryId ); + auditLogs.setUsername( getPrincipal() ); + + auditLogsDao.saveAuditLogs( auditLogs ); } protected void triggerAuditEvent( String resource, String action ) Modified: archiva/branches/MRM-1296/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/UploadAction.java URL: http://svn.apache.org/viewvc/archiva/branches/MRM-1296/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/UploadAction.java?rev=890155&r1=890154&r2=890155&view=diff ============================================================================== --- archiva/branches/MRM-1296/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/UploadAction.java (original) +++ archiva/branches/MRM-1296/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/UploadAction.java Mon Dec 14 02:06:05 2009 @@ -41,6 +41,7 @@ import org.apache.maven.archiva.configuration.ArchivaConfiguration; import org.apache.maven.archiva.configuration.Configuration; import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; +import org.apache.maven.archiva.database.ArchivaAuditLogsDao; import org.apache.maven.archiva.model.ArchivaProjectModel; import org.apache.maven.archiva.model.ArchivaRepositoryMetadata; import org.apache.maven.archiva.model.ArtifactReference; @@ -149,7 +150,7 @@ * @plexus.requirement */ private ArchivaTaskScheduler scheduler; - + private ChecksumAlgorithm[] algorithms = new ChecksumAlgorithm[]{ChecksumAlgorithm.SHA1, ChecksumAlgorithm.MD5}; private ProjectModelWriter pomWriter = new ProjectModel400Writer(); Modified: archiva/branches/MRM-1296/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/reports/ViewAuditLogReportAction.java URL: http://svn.apache.org/viewvc/archiva/branches/MRM-1296/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/reports/ViewAuditLogReportAction.java?rev=890155&r1=890154&r2=890155&view=diff ============================================================================== --- archiva/branches/MRM-1296/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/reports/ViewAuditLogReportAction.java (original) +++ archiva/branches/MRM-1296/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/reports/ViewAuditLogReportAction.java Mon Dec 14 02:06:05 2009 @@ -25,6 +25,12 @@ import javax.servlet.http.HttpServletRequest; +import org.apache.maven.archiva.database.ArchivaAuditLogsDao; +import org.apache.maven.archiva.database.ArchivaDatabaseException; +import org.apache.maven.archiva.database.Constraint; +import org.apache.maven.archiva.database.ObjectNotFoundException; +import org.apache.maven.archiva.database.constraints.MostRecentArchivaAuditLogsConstraint; +import org.apache.maven.archiva.model.ArchivaAuditLogs; import org.apache.maven.archiva.security.AccessDeniedException; import org.apache.maven.archiva.security.ArchivaSecurityException; import org.apache.maven.archiva.security.PrincipalNotFoundException; @@ -51,6 +57,11 @@ */ private UserRepositories userRepositories; + /** + * @plexus.requirement role-hint="jdo" + */ + private ArchivaAuditLogsDao auditLogsDao; + private String repository; private List repositories; @@ -61,16 +72,8 @@ private int rowCount = 30; - public int getRowCount() - { - return rowCount; - } - - public void setRowCount( int rowCount ) - { - this.rowCount = rowCount; - } - + private List auditLogs = new ArrayList(); + public SecureActionBundle getSecureActionBundle() throws SecureActionException { @@ -87,12 +90,25 @@ { repositories = getObservableRepositories(); + Constraint constraint = new MostRecentArchivaAuditLogsConstraint(); + try + { + this.auditLogs = auditLogsDao.queryAuditLogs( constraint ); + } + catch( ObjectNotFoundException e ) + { + log.warn( "No audit logs found." ); + } + catch ( ArchivaDatabaseException e ) + { + log.warn( "Error occurred while querying audit logs." ); + } } public String execute() throws Exception - { + { return SUCCESS; } @@ -156,4 +172,24 @@ { this.artifactId = artifactId; } + + public List getAuditLogs() + { + return auditLogs; + } + + public void setAuditLogs( List auditLogs ) + { + this.auditLogs = auditLogs; + } + + public int getRowCount() + { + return rowCount; + } + + public void setRowCount( int rowCount ) + { + this.rowCount = rowCount; + } } Modified: archiva/branches/MRM-1296/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/auditLogReport.jsp URL: http://svn.apache.org/viewvc/archiva/branches/MRM-1296/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/auditLogReport.jsp?rev=890155&r1=890154&r2=890155&view=diff ============================================================================== --- archiva/branches/MRM-1296/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/auditLogReport.jsp (original) +++ archiva/branches/MRM-1296/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/auditLogReport.jsp Mon Dec 14 02:06:05 2009 @@ -19,6 +19,7 @@ <%@ taglib prefix="s" uri="/struts-tags" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib uri="http://www.extremecomponents.org" prefix="ec" %> @@ -44,7 +45,7 @@
- +
@@ -80,7 +81,27 @@
-
+ + + + + + + + + + + + + + + + + + + + +
EventRepositoryArtifactEvent DateUsername
${auditLog.event}${auditLog.repositoryId}${auditLog.artifact}${auditLog.eventDate}${auditLog.username}