archiva-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From och...@apache.org
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 GMT
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 @@
         <groupId>org.codehaus.modello</groupId>
         <artifactId>modello-maven-plugin</artifactId>
         <configuration>
-          <version>1.2.1</version>
+          <version>1.2.3</version>
           <packageWithVersion>false</packageWithVersion>
           <models>
             <model>src/main/mdo/archiva-base.xml</model>

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">
   <id>archiva-base-model</id>
   <name>ArchivaBaseModel</name>
-  <version>1.2.1</version>
+  <version>1.2.3</version>
   <description>Archiva Model</description>
   <defaults>
     <default>
@@ -75,6 +75,14 @@
             <multiplicity>*</multiplicity>
           </association>
         </field>
+        <field>
+          <name>archivaAuditLogs</name>
+          <version>1.3.0+</version>
+          <association>
+            <type>ArchivaAuditLogs</type>
+            <multiplicity>*</multiplicity>
+          </association>
+        </field>
       </fields>
       <codeSegments>
         <codeSegment>
@@ -2278,5 +2286,70 @@
         </codeSegment>
       </codeSegments>
     </class>
+    <class stash.storable="true"
+           jpox.table="AUDIT_LOGS">
+      <name>ArchivaAuditLogs</name>
+      <version>1.2.3+</version>
+      <fields>
+        <field stash.maxSize="50">
+          <name>repositoryId</name>
+          <version>1.2.3+</version>
+          <identifier>false</identifier>
+          <required>true</required>
+          <type>String</type>
+          <description>
+            The repository id where the operation was done.
+          </description>
+        </field>
+        <field>
+          <name>eventDate</name>
+          <version>1.2.3+</version>
+          <identifier>false</identifier>
+          <required>true</required>
+          <type>Date</type>
+          <description>
+            The timestamp on when the event happened.
+          </description>
+        </field>
+        <field>
+          <name>artifact</name>
+          <version>1.2.3+</version>
+          <identifier>false</identifier>
+          <required>false</required>
+          <type>String</type>
+          <description>
+            The affected artifact, if there is one.
+          </description>
+        </field>
+        <field>
+          <name>event</name>
+          <version>1.2.3+</version>
+          <identifier>false</identifier>
+          <required>false</required>
+          <type>String</type>
+          <description>
+            The event that happened.
+          </description>
+        </field>
+        <field>
+          <name>username</name>
+          <version>1.2.3+</version>
+          <identifier>false</identifier>
+          <required>true</required>
+          <type>String</type>
+          <description>
+            The user who executed the event.
+          </description>
+        </field>
+      </fields>
+      <codeSegments>
+        <codeSegment>
+          <version>1.2.3+</version>
+          <code><![CDATA[
+    private static final long serialVersionUID = -7113629916828442780L;
+          ]]></code>
+        </codeSegment>
+      </codeSegments>
+    </class>
   </classes>
 </model>

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<ArchivaAuditLogs> 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<ArchivaAuditLogs> queryAuditLogs( Constraint constraint )
+        throws ObjectNotFoundException, ArchivaDatabaseException
+    {
+        return (List<ArchivaAuditLogs>) 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<AuditListener> auditListeners = new ArrayList<AuditListener>();
 
+    /**
+     * @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<String> repositories;
@@ -61,16 +72,8 @@
         
     private int rowCount = 30;
     
-    public int getRowCount()
-    {
-        return rowCount;
-    }
-
-    public void setRowCount( int rowCount )
-    {
-        this.rowCount = rowCount;
-    }
-
+    private List<ArchivaAuditLogs> auditLogs = new ArrayList<ArchivaAuditLogs>();
   
+    
     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<ArchivaAuditLogs> getAuditLogs()
+    {
+        return auditLogs;
+    }
+
+    public void setAuditLogs( List<ArchivaAuditLogs> 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" %>
 
 <html>
 <head>
@@ -44,7 +45,7 @@
 <div id="contentArea">
   
   <s:form action="viewAuditLogReport" namespace="/report" validate="false">
-  
+     
     <div id="auditLogReport"> 	
 	   	<s:select label="Repository" name="repository" list="repositories"/>
 	   	
@@ -80,7 +81,27 @@
 		
 	    <s:submit value="View Audit Log"/>
     </div>
-  </s:form>    
+  </s:form> 
+  
+  
+  <table border="1">
+    <tr>
+      <th align="center">Event</th>
+      <th align="center">Repository</th>
+      <th align="center">Artifact</th>
+      <th align="center">Event Date</th>
+      <th align="center">Username</th>
+    </tr>
+    <c:forEach items="${auditLogs}" var="auditLog" varStatus="i">
+      <tr>
+        <td>${auditLog.event}</td>
+        <td>${auditLog.repositoryId}</td>
+          <td>${auditLog.artifact}</td>
+          <td>${auditLog.eventDate}</td>
+          <td>${auditLog.username}</td>
+        </tr>
+    </c:forEach>
+  </table>   
 
 </div>
 



Mime
View raw message