diff --git a/config/alfresco/ibatis/org.hibernate.dialect.Dialect/audit-common-SqlMap.xml b/config/alfresco/ibatis/org.hibernate.dialect.Dialect/audit-common-SqlMap.xml index 7a7337f4c3..ec72904b1b 100644 --- a/config/alfresco/ibatis/org.hibernate.dialect.Dialect/audit-common-SqlMap.xml +++ b/config/alfresco/ibatis/org.hibernate.dialect.Dialect/audit-common-SqlMap.xml @@ -125,53 +125,6 @@ join alf_audit_entry entry on (entry.audit_app_id = app.id) join alf_prop_value user_pv on (user_pv.id = entry.audit_user_id) join alf_prop_string_value user_sv on (user_sv.id = user_pv.long_value and user_pv.persisted_type = 3) - - - app_sv.string_end_lower = #auditAppNameShort# and - app_sv.string_crc = #auditAppNameCrc# - - - user_sv.string_end_lower = #auditUserShort# and - user_sv.string_crc = #auditUserCrc# - - - = #auditFromTime#]]> - - - - - - order by - entry.id - - - - - - + + + + \ No newline at end of file diff --git a/source/java/org/alfresco/repo/audit/hibernate/HibernateAuditDAO.java b/source/java/org/alfresco/repo/audit/hibernate/HibernateAuditDAO.java index d2e9e0bc49..fba44c9f5d 100644 --- a/source/java/org/alfresco/repo/audit/hibernate/HibernateAuditDAO.java +++ b/source/java/org/alfresco/repo/audit/hibernate/HibernateAuditDAO.java @@ -698,4 +698,18 @@ public class HibernateAuditDAO extends HibernateDaoSupport implements AuditDAO, { throw new UnsupportedOperationException(); } + + /** + * Fallout implementation from new audit DAO + * + * @throws UnsupportedOperationException always + * @since 3.2 + */ + public void findAuditEntries( + AuditQueryCallback callback, + String applicationName, String user, Long from, Long to, int maxResults, + String searchKey, String searchString) + { + throw new UnsupportedOperationException(); + } } \ No newline at end of file diff --git a/source/java/org/alfresco/repo/domain/audit/AbstractAuditDAOImpl.java b/source/java/org/alfresco/repo/domain/audit/AbstractAuditDAOImpl.java index ad4182ab3c..fcc0cfd603 100644 --- a/source/java/org/alfresco/repo/domain/audit/AbstractAuditDAOImpl.java +++ b/source/java/org/alfresco/repo/domain/audit/AbstractAuditDAOImpl.java @@ -346,10 +346,20 @@ public abstract class AbstractAuditDAOImpl implements AuditDAO String applicationName, String user, Long from, Long to, int maxResults) { AuditQueryRowHandler rowHandler = new AuditQueryRowHandler(callback); - findAuditEntries(rowHandler, applicationName, user, from, to, maxResults); + findAuditEntries(rowHandler, applicationName, user, from, to, maxResults, null, null); + } + + public void findAuditEntries( + AuditQueryCallback callback, + String applicationName, String user, Long from, Long to, int maxResults, + String searchKey, String searchString) + { + AuditQueryRowHandler rowHandler = new AuditQueryRowHandler(callback); + findAuditEntries(rowHandler, applicationName, user, from, to, maxResults, searchKey, searchString); } protected abstract void findAuditEntries( AuditQueryRowHandler rowHandler, - String applicationName, String user, Long from, Long to, int maxResults); + String applicationName, String user, Long from, Long to, int maxResults, + String searchKey, String searchString); } diff --git a/source/java/org/alfresco/repo/domain/audit/AuditDAO.java b/source/java/org/alfresco/repo/domain/audit/AuditDAO.java index 0f9ddd3a5f..2360c18665 100644 --- a/source/java/org/alfresco/repo/domain/audit/AuditDAO.java +++ b/source/java/org/alfresco/repo/domain/audit/AuditDAO.java @@ -98,4 +98,9 @@ public interface AuditDAO void findAuditEntries( AuditQueryCallback callback, String applicationName, String user, Long from, Long to, int maxResults); + + void findAuditEntries( + AuditQueryCallback callback, + String applicationName, String user, Long from, Long to, int maxResults, + String searchKey, String searchString); } \ No newline at end of file diff --git a/source/java/org/alfresco/repo/domain/audit/AuditDAOTest.java b/source/java/org/alfresco/repo/domain/audit/AuditDAOTest.java index 5dda720e64..e1b3ab5a78 100644 --- a/source/java/org/alfresco/repo/domain/audit/AuditDAOTest.java +++ b/source/java/org/alfresco/repo/domain/audit/AuditDAOTest.java @@ -37,6 +37,7 @@ import org.alfresco.repo.domain.contentdata.ContentDataDAO; import org.alfresco.repo.transaction.RetryingTransactionHelper; import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.service.ServiceRegistry; +import org.alfresco.service.cmr.audit.AuditService.AuditQueryCallback; import org.alfresco.service.cmr.repository.ContentData; import org.alfresco.service.transaction.TransactionService; import org.alfresco.util.ApplicationContextHelper; @@ -124,6 +125,13 @@ public class AuditDAOTest extends TestCase } public void testAuditEntry() throws Exception + { + doAuditEntryImpl(1000); + } + /** + * @return Returns the name of the application + */ + private String doAuditEntryImpl(final int count) throws Exception { final File file = AbstractContentTransformerTest.loadQuickTestFile("pdf"); assertNotNull(file); @@ -140,7 +148,6 @@ public class AuditDAOTest extends TestCase }; final Long sessionId = txnHelper.doInTransaction(createAppCallback); - final int count = 1000; final String username = "alexi"; RetryingTransactionCallback createEntryCallback = new RetryingTransactionCallback() { @@ -161,5 +168,38 @@ public class AuditDAOTest extends TestCase System.out.println( "Time for " + count + " entry creations was " + ((double)(after - before)/(10E6)) + "ms"); + // Done + return appName; + } + + public void testAuditQuery() throws Exception + { + // Some entries + doAuditEntryImpl(1); + + // Find everything, bug look for a specific key + final AuditQueryCallback callback = new AuditQueryCallback() + { + public boolean handleAuditEntry( + Long entryId, + String applicationName, + String user, + long time, + Map values) + { + System.out.println(values); + return true; + } + }; + + RetryingTransactionCallback findCallback = new RetryingTransactionCallback() + { + public Void execute() throws Throwable + { + auditDAO.findAuditEntries(callback, null, null, null, null, -1, "/a/b/c", null); + return null; + } + }; + txnHelper.doInTransaction(findCallback); } } diff --git a/source/java/org/alfresco/repo/domain/audit/AuditQueryParameters.java b/source/java/org/alfresco/repo/domain/audit/AuditQueryParameters.java index 5b39af4913..30beb91b5b 100644 --- a/source/java/org/alfresco/repo/domain/audit/AuditQueryParameters.java +++ b/source/java/org/alfresco/repo/domain/audit/AuditQueryParameters.java @@ -41,6 +41,8 @@ public class AuditQueryParameters private Pair auditUserCrcPair; private Long auditFromTime; private Long auditToTime; + private String searchKey; + private String searchValueString; public AuditQueryParameters() { @@ -56,6 +58,8 @@ public class AuditQueryParameters .append(", auditUserCrcPair=").append(auditUserCrcPair) .append(", auditFromTime").append(new Date(auditFromTime)) .append(", auditToTime").append(new Date(auditToTime)) + .append(", searchKey").append(searchKey) + .append(", searchValueString").append(searchValueString) .append("]"); return sb.toString(); } @@ -119,4 +123,24 @@ public class AuditQueryParameters { this.auditToTime = to; } + + public String getSearchKey() + { + return searchKey; + } + + public void setSearchKey(String searchKey) + { + this.searchKey = searchKey; + } + + public String getSearchValueString() + { + return searchValueString; + } + + public void setSearchValueString(String searchValueString) + { + this.searchValueString = searchValueString; + } } diff --git a/source/java/org/alfresco/repo/domain/audit/ibatis/AuditDAOImpl.java b/source/java/org/alfresco/repo/domain/audit/ibatis/AuditDAOImpl.java index ed00c30894..0775b15767 100644 --- a/source/java/org/alfresco/repo/domain/audit/ibatis/AuditDAOImpl.java +++ b/source/java/org/alfresco/repo/domain/audit/ibatis/AuditDAOImpl.java @@ -155,11 +155,8 @@ public class AuditDAOImpl extends AbstractAuditDAOImpl @Override protected void findAuditEntries( final AuditQueryRowHandler rowHandler, - String appName, - String user, - Long from, - Long to, - int maxResults) + String appName, String user, Long from, Long to, int maxResults, + String searchKey, String searchString) { AuditQueryParameters params = new AuditQueryParameters(); if (appName != null) @@ -175,6 +172,8 @@ public class AuditDAOImpl extends AbstractAuditDAOImpl } params.setAuditFromTime(from); params.setAuditToTime(to); + params.setSearchKey(searchKey); + params.setSearchValueString(searchString); // RowHandlers in RowHandlers: See 'groupBy' issue https://issues.apache.org/jira/browse/IBATIS-503 RowHandler shreddedRowHandler = new RowHandler()