From 610e56bc74eecebecc0db6e96c1919387262b734 Mon Sep 17 00:00:00 2001 From: Jan Vonka Date: Wed, 12 Jul 2017 12:09:06 +0000 Subject: [PATCH] Merged 5.2.N-AUDIT-API (5.2.2) to 5.2.N (5.2.2) 137875 anechifor: REPO-1784 - Retrieve Audit Applications Implementation subtask - REPO-2580 git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@137958 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- source/java/org/alfresco/rest/api/Audit.java | 22 ++++--- .../AuditApplicationsEntityResource.java | 20 +++---- .../org/alfresco/rest/api/impl/AuditImpl.java | 57 ++++++++++++++++++- 3 files changed, 77 insertions(+), 22 deletions(-) diff --git a/source/java/org/alfresco/rest/api/Audit.java b/source/java/org/alfresco/rest/api/Audit.java index f7f50cff26..de7ae4a36c 100644 --- a/source/java/org/alfresco/rest/api/Audit.java +++ b/source/java/org/alfresco/rest/api/Audit.java @@ -26,6 +26,8 @@ package org.alfresco.rest.api; import org.alfresco.rest.api.model.AuditApp; +import org.alfresco.rest.framework.resource.parameters.CollectionWithPagingInfo; +import org.alfresco.rest.framework.resource.parameters.Paging; import org.alfresco.rest.framework.resource.parameters.Parameters; /** @@ -47,10 +49,10 @@ public interface Audit /** * Lists audit applications * - * @param parameters + * @param paging * @return Collection of audit apps */ - //CollectionWithPagingInfo listAuditApps(Parameters parameters); + CollectionWithPagingInfo getAuditApps(Paging paging); /** * Updates a single audit application by id @@ -60,7 +62,8 @@ public interface Audit * @param parameters * @return an audit entry */ - //AuditApp update(String auditAppId, AuditApp auditApp, Parameters parameters); + // AuditApp update(String auditAppId, AuditApp auditApp, Parameters + // parameters); /** * Gets a single audit entry by id @@ -69,22 +72,25 @@ public interface Audit * @param parameters * @return an audit entry */ - //AuditEntry getAuditEntry(long auditEntryId, Parameters parameters); + // AuditEntry getAuditEntry(long auditEntryId, Parameters parameters); /** * Lists audit entries * - * @param auditAppId if null then across all audit apps + * @param auditAppId + * if null then across all audit apps * @param parameters * @return Collection of audit entries */ - //CollectionWithPagingInfo listAuditEntries(String auditAppId, Parameters parameters); + // CollectionWithPagingInfo listAuditEntries(String auditAppId, + // Parameters parameters); /** * Deletes a set of audit entries * - * @param set of auditEntryIds + * @param set + * of auditEntryIds * @return */ - //void deleteAuditEntries(List auditEntryIds); + // void deleteAuditEntries(List auditEntryIds); } diff --git a/source/java/org/alfresco/rest/api/audit/AuditApplicationsEntityResource.java b/source/java/org/alfresco/rest/api/audit/AuditApplicationsEntityResource.java index 21feec6a7c..d39e7909a4 100644 --- a/source/java/org/alfresco/rest/api/audit/AuditApplicationsEntityResource.java +++ b/source/java/org/alfresco/rest/api/audit/AuditApplicationsEntityResource.java @@ -26,7 +26,6 @@ package org.alfresco.rest.api.audit; - import org.alfresco.rest.api.Audit; import org.alfresco.rest.api.model.AuditApp; import org.alfresco.rest.framework.WebApiDescription; @@ -43,9 +42,9 @@ import org.springframework.beans.factory.InitializingBean; * * @author janv */ -@EntityResource(name="audit-applications", title = "Audit Applications") -public class AuditApplicationsEntityResource implements EntityResourceAction.ReadById, - EntityResourceAction.Read, EntityResourceAction.Update, InitializingBean +@EntityResource(name = "audit-applications", title = "Audit Applications") +public class AuditApplicationsEntityResource implements EntityResourceAction.ReadById, EntityResourceAction.Read, + EntityResourceAction.Update, InitializingBean { private Audit audit; @@ -61,25 +60,24 @@ public class AuditApplicationsEntityResource implements EntityResourceAction.Rea } @Override - @WebApiDescription(title="", description="") + @WebApiDescription(title = "Returns audit application for audit app id") public AuditApp readById(String auditAppId, Parameters parameters) throws EntityNotFoundException { return audit.getAuditApp(auditAppId, parameters); } @Override - @WebApiDescription(title = "Update group", description = "Update group") + @WebApiDescription(title = "Update audit", description = "Update audit") public AuditApp update(String auditAppId, AuditApp auditApp, Parameters parameters) { - //return audit.update(auditAppId, auditApp, parameters); + // return audit.update(auditAppId, auditApp, parameters); return null; // TODO fixme } @Override - @WebApiDescription(title="", description="") - public CollectionWithPagingInfo readAll(Parameters params) + @WebApiDescription(title = "Get List of audit applications", description = "Get List of Audit Applications") + public CollectionWithPagingInfo readAll(Parameters parameters) { - //return audit.listAuditApps(params); - return null; // TODO fixme + return audit.getAuditApps(parameters.getPaging()); } } diff --git a/source/java/org/alfresco/rest/api/impl/AuditImpl.java b/source/java/org/alfresco/rest/api/impl/AuditImpl.java index 6d554235f2..6130f99834 100644 --- a/source/java/org/alfresco/rest/api/impl/AuditImpl.java +++ b/source/java/org/alfresco/rest/api/impl/AuditImpl.java @@ -25,14 +25,23 @@ */ package org.alfresco.rest.api.impl; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.TreeSet; + import org.alfresco.rest.api.Audit; import org.alfresco.rest.api.model.AuditApp; import org.alfresco.rest.framework.core.exceptions.DisabledServiceException; import org.alfresco.rest.framework.core.exceptions.EntityNotFoundException; +import org.alfresco.rest.framework.resource.parameters.CollectionWithPagingInfo; +import org.alfresco.rest.framework.resource.parameters.Paging; import org.alfresco.rest.framework.resource.parameters.Parameters; import org.alfresco.service.cmr.audit.AuditService; - -import java.util.Map; +import org.alfresco.service.cmr.audit.AuditService.AuditApplication; /** * Handles audit (applications & entries) @@ -52,7 +61,7 @@ public class AuditImpl implements Audit private void checkEnabled() { - if (! auditService.isAuditEnabled()) + if (!auditService.isAuditEnabled()) { throw new DisabledServiceException(DISABLED); } @@ -89,4 +98,46 @@ public class AuditImpl implements Audit } return auditApp; } + + @Override + public CollectionWithPagingInfo getAuditApps(Paging paging) + { + checkEnabled(); + + Map auditApplicationsByName = auditService.getAuditApplications(); + + Set audAppsName = new TreeSet(auditApplicationsByName.keySet()); + Iterator audAppsNameIt = audAppsName.iterator(); + + int skipCount = paging.getSkipCount(); + int maxItems = paging.getMaxItems(); + int totalItems = audAppsName.size(); + int end = skipCount + maxItems; + + if (skipCount >= totalItems) + { + List empty = Collections.emptyList(); + return CollectionWithPagingInfo.asPaged(paging, empty, false, totalItems); + } + + List auditApps = new ArrayList(totalItems); + int count = 0; + for (int i = 0; i < end && audAppsNameIt.hasNext(); i++) + { + String auditAppName = audAppsNameIt.next(); + if (i < skipCount) + { + continue; + } + count++; + AuditApplication auditApplication = auditApplicationsByName.get(auditAppName); + + auditApps.add(new AuditApp(auditApplication.getKey().substring(1), auditApplication.getName(), auditApplication.isEnabled())); + } + + boolean hasMoreItems = (skipCount + count < totalItems); + + return CollectionWithPagingInfo.asPaged(paging, auditApps, hasMoreItems, totalItems); + } + }