]> source.dussan.org Git - archiva.git/commitdiff
[MRM-1296] Audit Log Reports
authorMaria Odea B. Ching <oching@apache.org>
Tue, 15 Dec 2009 02:26:50 +0000 (02:26 +0000)
committerMaria Odea B. Ching <oching@apache.org>
Tue, 15 Dec 2009 02:26:50 +0000 (02:26 +0000)
o fixed query for recent audit logs
o added bits for pagination

git-svn-id: https://svn.apache.org/repos/asf/archiva/branches/MRM-1296@890604 13f79535-47bb-0310-9956-ffa450edef68

archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/constraints/ArchivaAuditLogsConstraint.java
archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/constraints/MostRecentArchivaAuditLogsConstraint.java
archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/reports/ViewAuditLogReportAction.java
archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/reports/auditLogReport.jsp

index 2cf8e3ac32988c5918857a101216da40d11a6e0d..a9c798f1fe1c3fe5f1006ae23ebba0db2bcf220c 100644 (file)
@@ -30,23 +30,13 @@ public class ArchivaAuditLogsConstraint
     extends RangeConstraint
 {
     private String whereClause;
-
-    /**
-     * Complete custom query!
-     * 
-     * @param desiredArtifact
-     * @param desiredRepositoryId
-     * @param desiredEvent
-     * @param startDate
-     * @param endDate
-     */
+    
     private void createWhereClause( String desiredArtifact, String desiredRepositoryId, String desiredEvent,
                                     Date startDate, Date endDate )
     {
-        whereClause = "eventDate >= desiredStartDate && eventDate <= desiredEndDate";
-
+        whereClause = "eventDate >= desiredStartDate && eventDate <= desiredEndDate";        
         declImports = new String[] { "import java.util.Date" };
-
+                
         List<String> declParamsList = new ArrayList<String>();
         declParamsList.add( "Date desiredStartDate" );
         declParamsList.add( "Date desiredEndDate" );
index af3c791a3772f2f2d317ba690ff4df27a52ba852..8e2d005313093513d5c7fec328e2abb5263160a0 100644 (file)
@@ -20,6 +20,7 @@ package org.apache.maven.archiva.database.constraints;
  */
 
 import org.apache.maven.archiva.model.ArchivaAuditLogs;
+import org.apache.maven.archiva.repository.audit.AuditEvent;
 
 public class MostRecentArchivaAuditLogsConstraint
     extends AbstractSimpleConstraint
@@ -28,7 +29,12 @@ public class MostRecentArchivaAuditLogsConstraint
 
     public MostRecentArchivaAuditLogsConstraint()
     {
-        sql = "SELECT FROM " + ArchivaAuditLogs.class.getName() + " ORDER BY eventDate DESCENDING RANGE 0,1";
+        sql =
+            "SELECT FROM " + ArchivaAuditLogs.class.getName() +
+                " WHERE event == uploadArtifact PARAMETERS String uploadArtifact" +
+                " ORDER BY eventDate DESCENDING RANGE 0,10";
+
+        super.params = new Object[] { AuditEvent.UPLOAD_FILE };
     }
 
     public Class<?> getResultClass()
index 392622302f1a6c8819e658c3edebcd96fbc4129d..ea9d9c411db200feb3a168c7ea47d355b279a06d 100644 (file)
@@ -28,9 +28,10 @@ import java.util.List;
 import javax.servlet.http.HttpServletRequest;
 
 import org.apache.maven.archiva.database.ArchivaAuditLogsDao;
+import org.apache.maven.archiva.database.ArchivaDAO;
 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.SimpleConstraint;
 import org.apache.maven.archiva.database.constraints.ArchivaAuditLogsConstraint;
 import org.apache.maven.archiva.database.constraints.MostRecentArchivaAuditLogsConstraint;
 import org.apache.maven.archiva.model.ArchivaAuditLogs;
@@ -66,6 +67,11 @@ public class ViewAuditLogReportAction
      */
     private ArchivaAuditLogsDao auditLogsDao;
     
+    /**
+     * @plexus.requirement role-hint="jdo"
+     */
+    private ArchivaDAO dao;
+    
     private String repository;
 
     private List<String> repositories;
@@ -80,11 +86,13 @@ public class ViewAuditLogReportAction
         
     private int rowCount = 30;
     
-    private int page;
+    private int page = 1;
 
     private List<ArchivaAuditLogs> auditLogs;    
     
     private static final String ALL_REPOSITORIES = "all";
+    
+    protected int[] range = new int[2];
         
     public SecureActionBundle getSecureActionBundle()
         throws SecureActionException
@@ -97,6 +105,7 @@ public class ViewAuditLogReportAction
         this.request = request;
     }
 
+    @SuppressWarnings( "unchecked" )
     public void prepare()
         throws Exception
     {     
@@ -106,34 +115,22 @@ public class ViewAuditLogReportAction
         
         auditLogs = null;
         
-        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." );
-        }
+        SimpleConstraint constraint = new MostRecentArchivaAuditLogsConstraint();        
+        auditLogs = (List<ArchivaAuditLogs>) dao.query( constraint );
     }
     
     public String execute()
         throws Exception
     {     
         auditLogs = null;
-        String artifact = null;
+        String artifact = "";
         
-        if( groupId != null || !"".equals( groupId ) )
+        if( groupId != null || !"".equals( groupId.trim() ) )
         {
             artifact = groupId;
         }
         
-        if( artifactId != null || !"".equals( artifactId ) )
+        if( artifactId != null || !"".equals( artifactId.trim() ) )
         {
             artifact = artifact + ":" + artifactId;
         }
@@ -153,13 +150,13 @@ public class ViewAuditLogReportAction
             endDate = Calendar.getInstance().getTime();
         }
                 
-        int[] range = {1, 30 };        
+        range[0] = ( page - 1 ) * rowCount;
+        range[1] = ( page * rowCount ) + 1; 
 
         ArchivaAuditLogsConstraint constraint = null;
         if( !repository.equals( ALL_REPOSITORIES ) )
         {
-            //constraint = new ArchivaAuditLogsConstraint( range, artifact, repository, AuditEvent.UPLOAD_FILE, startDate, endDate );
-            constraint = new ArchivaAuditLogsConstraint( artifact, repository, AuditEvent.UPLOAD_FILE, startDate, endDate );
+            constraint = new ArchivaAuditLogsConstraint( range, artifact, repository, AuditEvent.UPLOAD_FILE, startDate, endDate );
         }
         else
         {
index 6a84d1ebda808f16fe9f5898f01076254959145d..af853370b7dcf8ad977035f6d7bda3286e3a5312 100644 (file)
                <s:textfield label="Row Count" name="rowCount" />
                
            <s:submit value="View Audit Log"/>
-    </div>
-  </s:form> 
+    </div>    
+   
+  </s:form>
   
-  <c:if test="${not empty (auditLogs)}">
+   <c:if test="${not empty (auditLogs)}">
          <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>
+        <thead>
+             <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>
+           </thead>
            <c:forEach items="${auditLogs}" var="auditLog" varStatus="i">
+           <tbody>
              <tr>
                <td>${auditLog.event}</td>
                <td>${auditLog.repositoryId}</td>
-                 <td>${auditLog.artifact}</td>
-                 <td>${auditLog.eventDate}</td>
-                 <td>${auditLog.username}</td>
-               </tr>
+               <td>${auditLog.artifact}</td>
+               <td>${auditLog.eventDate}</td>
+               <td>${auditLog.username}</td>
+             </tr>
+           </tbody>
            </c:forEach>
          </table>   
-  </c:if>
-
+    </c:if> 
 </div>
 
 </body>