mirror of
				https://github.com/Alfresco/alfresco-community-repo.git
				synced 2025-10-29 15:21:53 +00:00 
			
		
		
		
	28236: ALF-8810: Removed trailing space from discussion.discussion_for Italian translation
   28241: Incremented version revision for 3.4.4
   28284: ALF-835 - WCM/AVM: copy (empty) folder into itself
   28285: ALF-6863: More than one cifs device breaks the web UI (explorer)
   28290: ALF-8840: user-*.atomentry.ftl
   28291: ALF-6863: Continuation of fix by Arseny
   28336: ALF-8768: Fixed typo in comment on wcm-bootstrap-context.xml
   28363: Merged DEV to V3.4-BUG-FIX
      28262: ALF-8847: WCM: OrphanReaper contention throws error after 39 retries.
             Checkin Comment:
                Use JobLockService to make sure that only one OrphanReaper job is working.
                Generate list of nodes that must be processed in OrphanReaper.doBatch() transaction. 
   28386: ALF-9100: Merged PATCHES/V3.4.1 to V3.4-BUG-FIX
      28249: ALF-8946: Avoid one full table scan per batch in full reindex
         - Now each batch scans a single time sample, dynamically adjusted based on the number of transactions
		   in the previous sample, always aiming for 1000 transactions per sample.
   28394: Fixed ALF-9090: NPE during inter-cluster subsystem messaging
    - Bean ID is a List<String> and might not be recognized on receiving machine
    - Log warning when bean ID is not available (unsymmetrical configuration, perhaps?)
   28396: Merged DEV to V3.4-BUG-FIX
      28384: ALF-6150: Initial state lost when non-versionable document is saved for the first time
             Creation of new version of document before writing its content was added to
             - AbstractAlfrescoMethodHandler->putDocument (this method is used by Office 2003, 2007)
             - VtiIfHeaderAction->doPut (this method is used by Office 2007 and 2010 on Windows 7)
               Creation of new version was added twice to AbstractAlfrescoMethodHandler to avoid affecting
               initial version when transaction is committed. 
   28432: Merged DEV to V3.4-BUG-FIX
      28431: ALF-8530: Pressing the info icon creates an unrecorded file in the ContentStore
             Use ContentService.getTempWriter() in BaseContentNode$TemplateContentData.getContentAsText() method. 
   28435: Merged DEV/TEMPORARY to V3.4-BUG-FIX
      28428: ALF-9015: cm:modifier not updated when document is updated via CIFS
         In ContentDiskDriver.closeFile() added ContentModel.PROP_MODIFIER property update.
   28436: ALF-8550: Number of http requests (currentThreadsBusy) increases when session times out during creation of webform
   - Corrected use of read and write locks
   28465: Fix for ALF-8023 Share preview doesn't work if...
     fixed as outlined by Dmitry.
   28478: Merged BRANCHES/DEV/ALAN/AUDIT to BRANCHES/DEV/V3.4-BUG-FIX:
      28062-28477 (28062,28063,28080,28081,28302,28303,28334,28340,28464,28469,28477) ALF-8438 Need higher level audit of user actions
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@28481 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
		
	
		
			
				
	
	
		
			216 lines
		
	
	
		
			7.4 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			216 lines
		
	
	
		
			7.4 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| /*
 | |
|  * Copyright (C) 2005-2011 Alfresco Software Limited.
 | |
|  *
 | |
|  * This file is part of Alfresco
 | |
|  *
 | |
|  * Alfresco is free software: you can redistribute it and/or modify
 | |
|  * it under the terms of the GNU Lesser General Public License as published by
 | |
|  * the Free Software Foundation, either version 3 of the License, or
 | |
|  * (at your option) any later version.
 | |
|  *
 | |
|  * Alfresco is distributed in the hope that it will be useful,
 | |
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
|  * GNU Lesser General Public License for more details.
 | |
|  *
 | |
|  * You should have received a copy of the GNU Lesser General Public License
 | |
|  * along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
 | |
|  */
 | |
| package org.alfresco.service.cmr.audit;
 | |
| 
 | |
| import java.io.Serializable;
 | |
| import java.util.List;
 | |
| import java.util.Map;
 | |
| 
 | |
| import org.alfresco.service.PublicService;
 | |
| 
 | |
| /**
 | |
|  * The public API by which applications can query the audit logs and enable or disable auditing.
 | |
|  * 
 | |
|  * @author Derek Hulley
 | |
|  */
 | |
| public interface AuditService
 | |
| {
 | |
|     /**
 | |
|      * @return                  Returns <tt>true</tt> if auditing is globally enabled
 | |
|      * 
 | |
|      * @since 3.4
 | |
|      */
 | |
|     boolean isAuditEnabled();
 | |
|     
 | |
|     /**
 | |
|      * Enable or disable the global auditing state
 | |
|      * 
 | |
|      * @param enable            <tt>true</tt> to enable auditing globally or <tt>false</tt> to disable
 | |
|      * 
 | |
|      * @since 3.4
 | |
|      */
 | |
|     void setAuditEnabled(boolean enable);
 | |
| 
 | |
|     /**
 | |
|      * Helper bean to carry information about an audit application.
 | |
|      * 
 | |
|      * @author Derek Hulley
 | |
|      * @since 3.4
 | |
|      */
 | |
|     public static class AuditApplication
 | |
|     {
 | |
|         private final String name;
 | |
|         private final String key;
 | |
|         private final boolean enabled;
 | |
|         /**
 | |
|          * Constructor for final variables
 | |
|          */
 | |
|         public AuditApplication(String name, String key, boolean enabled)
 | |
|         {
 | |
|             this.name = name;
 | |
|             this.key = key;
 | |
|             this.enabled = enabled;
 | |
|         }
 | |
|         public String getName()
 | |
|         {
 | |
|             return name;
 | |
|         }
 | |
|         public String getKey()
 | |
|         {
 | |
|             return key;
 | |
|         }
 | |
|         public boolean isEnabled()
 | |
|         {
 | |
|             return enabled;
 | |
|         }
 | |
|     }
 | |
|     
 | |
|     /**
 | |
|      * Get all registered audit applications
 | |
|      * 
 | |
|      * @return                  Returns a map of audit applications keyed by their name
 | |
|      * 
 | |
|      * @since 3.4
 | |
|      */
 | |
|     Map<String, AuditApplication> getAuditApplications();
 | |
|     
 | |
|     /**
 | |
|      * @param applicationName   the name of the application to check 
 | |
|      * @param path              the path to check
 | |
|      * @return                  Returns <tt>true</tt> if auditing is enabled for the given path
 | |
|      * 
 | |
|      * @since 3.2
 | |
|      */
 | |
|     boolean isAuditEnabled(String applicationName, String path);
 | |
|     
 | |
|     /**
 | |
|      * Enable auditing for an application path
 | |
|      * 
 | |
|      * @param applicationName   the name of the application to check 
 | |
|      * @param path              the path to enable
 | |
|      * 
 | |
|      * @since 3.2
 | |
|      */
 | |
|     void enableAudit(String applicationName, String path);
 | |
|     
 | |
|     /**
 | |
|      * Disable auditing for an application path
 | |
|      * 
 | |
|      * @param applicationName   the name of the application to check 
 | |
|      * @param path              the path to disable
 | |
|      * 
 | |
|      * @since 3.2
 | |
|      */
 | |
|     void disableAudit(String applicationName, String path);
 | |
|     
 | |
|     /**
 | |
|      * Remove all audit entries for the given application
 | |
|      * 
 | |
|      * @param applicationName   the name of the application for which to remove entries
 | |
|      * @return                  Returns the number of audit entries deleted
 | |
|      * 
 | |
|      * @since 3.2
 | |
|      * 
 | |
|      * @deprecated          Use {@link #clearAudit(String, Long, Long)}
 | |
|      */
 | |
|     int clearAudit(String applicationName);
 | |
|     
 | |
|     /**
 | |
|      * Remove audit entries for the given application between the time ranges.  If no start
 | |
|      * time is given then entries are deleted as far back as they exist.  If no end time is
 | |
|      * given then entries are deleted up until the current time.
 | |
|      * 
 | |
|      * @param applicationName   the name of the application for which to remove entries
 | |
|      * @param fromTime          the start time of entries to remove (inclusive and optional)
 | |
|      * @param toTime            the end time of entries to remove (exclusive and optional)
 | |
|      * @return                  Returns the number of audit entries deleted
 | |
|      * 
 | |
|      * @since 3.4
 | |
|      */
 | |
|     int clearAudit(String applicationName, Long fromTime, Long toTime);
 | |
|     
 | |
|     /**
 | |
|      * Delete a discrete list of audit entries.
 | |
|      * <p/>
 | |
|      * This method should not be called <i>while</i> processing
 | |
|      * {@link #auditQuery(AuditQueryCallback, AuditQueryParameters, int) query results}.
 | |
|      * 
 | |
|      * @param auditEntryIds     the IDs of all audit entries to delete
 | |
|      * @return                  Returns the number of audit entries deleted
 | |
|      * 
 | |
|      * @since 3.4
 | |
|      */
 | |
|     int clearAudit(List<Long> auditEntryIds);
 | |
|     
 | |
|     /**
 | |
|      * The interface that will be used to give query results to the calling code.
 | |
|      * 
 | |
|      * @since 3.2
 | |
|      */
 | |
|     public static interface AuditQueryCallback
 | |
|     {
 | |
|         /**
 | |
|          * Determines whether this callback requires the values argument to be populated when {@link #handleAuditEntry}
 | |
|          * is called.
 | |
|          * 
 | |
|          * @return <code>true</code> if this callback requires the values argument to be populated
 | |
|          */
 | |
|         boolean valuesRequired();
 | |
|         
 | |
|         /**
 | |
|          * Handle a row of audit entry data.
 | |
|          * 
 | |
|          * @param entryId                   the unique audit entry ID
 | |
|          * @param applicationName           the name of the application
 | |
|          * @param user                      the user that logged the entry
 | |
|          * @param time                      the time of the entry
 | |
|          * @param values                    the values map as created
 | |
|          * @return                          Return <tt>true</tt> to continue processing rows or <tt>false</tt> to stop
 | |
|          */
 | |
|         boolean handleAuditEntry(
 | |
|                 Long entryId,
 | |
|                 String applicationName,
 | |
|                 String user,
 | |
|                 long time,
 | |
|                 Map<String, Serializable> values);
 | |
|         
 | |
|         /**
 | |
|          * Handle audit entry failures
 | |
|          * 
 | |
|          * @param entryId                   the entry ID
 | |
|          * @param errorMsg                  the error message
 | |
|          * @param error                     the exception causing the error (may be <tt>null</tt>)
 | |
|          * @return                          Return <tt>true</tt> to continue processing rows or <tt>false</tt> to stop
 | |
|          */
 | |
|         boolean handleAuditEntryError(Long entryId, String errorMsg, Throwable error);
 | |
|     }
 | |
|     
 | |
|     /**
 | |
|      * Issue an audit query using the given parameters and consuming results in the callback.
 | |
|      * Results are returned in entry order, corresponding to time order.
 | |
|      * 
 | |
|      * @param callback          the callback that will handle results
 | |
|      * @param parameters        the parameters for the query (may not be <tt>null</tt>)
 | |
|      * @param maxResults        the maximum number of results to retrieve (zero or negative to ignore)
 | |
|      * 
 | |
|      * @since 3.3
 | |
|      */
 | |
|     void auditQuery(AuditQueryCallback callback, AuditQueryParameters parameters, int maxResults);
 | |
| }
 |