diff --git a/remote-api/src/test/java/org/alfresco/rest/api/tests/AbstractBaseApiTest.java b/remote-api/src/test/java/org/alfresco/rest/api/tests/AbstractBaseApiTest.java index 130d9ef584..2f753cff67 100644 --- a/remote-api/src/test/java/org/alfresco/rest/api/tests/AbstractBaseApiTest.java +++ b/remote-api/src/test/java/org/alfresco/rest/api/tests/AbstractBaseApiTest.java @@ -1126,9 +1126,5 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi { return URL_NODES + "/" + nodeId + "/" + URL_CALCULATEFOLDERSIZE; } - protected String getFolderSizeDataUrl(String nodeId) - { - return URL_NODES + "/" + nodeId + "/"; - } } diff --git a/remote-api/src/test/java/org/alfresco/rest/api/tests/NodeFolderSizeApiTest.java b/remote-api/src/test/java/org/alfresco/rest/api/tests/NodeFolderSizeApiTest.java index 3e9741a7fa..cf48d16ab7 100644 --- a/remote-api/src/test/java/org/alfresco/rest/api/tests/NodeFolderSizeApiTest.java +++ b/remote-api/src/test/java/org/alfresco/rest/api/tests/NodeFolderSizeApiTest.java @@ -30,11 +30,7 @@ import org.alfresco.rest.api.model.NodeTarget; import org.alfresco.rest.api.model.Site; import org.alfresco.rest.api.nodes.NodesEntityResource; import org.alfresco.rest.api.tests.client.HttpResponse; -import org.alfresco.rest.api.tests.client.PublicApiHttpClient; import org.alfresco.rest.api.tests.util.RestApiUtil; -import org.alfresco.service.cmr.repository.MimetypeService; -import org.alfresco.service.cmr.repository.NodeService; -import org.alfresco.service.cmr.security.PermissionService; import org.alfresco.service.cmr.site.SiteVisibility; import org.junit.After; import org.junit.Before; @@ -46,7 +42,6 @@ import org.junit.runners.MethodSorters; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.File; import java.util.HashMap; import java.util.Map; import java.util.UUID; @@ -68,13 +63,7 @@ public class NodeFolderSizeApiTest extends AbstractBaseApiTest */ private Site userOneN1Site; - protected PermissionService permissionService; - - private NodeService nodeService; - - private MimetypeService mimeTypeService; - - private static String folderId; + private String folderId; /** * The logger @@ -100,9 +89,6 @@ public class NodeFolderSizeApiTest extends AbstractBaseApiTest public void setup() throws Exception { super.setup(); - permissionService = applicationContext.getBean("permissionService", PermissionService.class); - nodeService = applicationContext.getBean("NodeService", NodeService.class); - mimeTypeService = applicationContext.getBean("MimetypeService", MimetypeService.class); setRequestContext(user1); @@ -154,7 +140,7 @@ public class NodeFolderSizeApiTest extends AbstractBaseApiTest AuthenticationUtil.setFullyAuthenticatedUser(user1); // Check if response and JSON parsing were successful - HttpResponse response = getSingle(getFolderSizeDataUrl(folderId), "get-folder-size", 200); + HttpResponse response = getSingle(NodesEntityResource.class, folderId+"/get-folder-size", null, 200); String jsonResponse = String.valueOf(response.getJsonResponse()); assertNotNull("JSON response should not be null", jsonResponse); diff --git a/repository/src/main/java/org/alfresco/repo/action/executer/NodeSizeActionExecuter.java b/repository/src/main/java/org/alfresco/repo/action/executer/NodeSizeActionExecuter.java index 205aca9b72..068b9c1284 100644 --- a/repository/src/main/java/org/alfresco/repo/action/executer/NodeSizeActionExecuter.java +++ b/repository/src/main/java/org/alfresco/repo/action/executer/NodeSizeActionExecuter.java @@ -37,6 +37,7 @@ import org.alfresco.service.cmr.repository.StoreRef; import org.alfresco.service.cmr.search.ResultSet; import org.alfresco.service.cmr.search.SearchParameters; import org.alfresco.service.cmr.search.SearchService; +import org.alfresco.util.Pair; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -64,6 +65,7 @@ public class NodeSizeActionExecuter extends ActionExecuterAbstractBase public static final String PAGE_SIZE = "page-size"; public static final String RESULT = "size-result"; public static final String ERROR = "exception"; + public static final String FIELD_FACET = "content.size"; private NodeService nodeService; private SearchService searchService; @@ -127,6 +129,7 @@ public class NodeSizeActionExecuter extends ActionExecuterAbstractBase NodeRef nodeRef = actionedUponNodeRef; long totalSize = 0; + long totalSizeFromFacet = 0; ResultSet results; boolean isCalculationCompleted = false; @@ -142,13 +145,19 @@ public class NodeSizeActionExecuter extends ActionExecuterAbstractBase searchParameters.addFacetQuery("content.size:[10240 TO 102400]\", \"label\": \"small\", \"group\":\"Size\""); searchParameters.addFacetQuery("content.size:[102400 TO 1048576]\", \"label\": \"medium\",\"group\":\"Size\""); searchParameters.addFacetQuery("content.size:[1048576 TO 16777216]\", \"label\": \"large\",\"group\":\"Size\""); - final SearchParameters.FieldFacet ff = new SearchParameters.FieldFacet("content.size"); + final SearchParameters.FieldFacet ff = new SearchParameters.FieldFacet(FIELD_FACET); searchParameters.addFieldFacet(ff); try { // executing Alfresco FTS query. results = searchService.query(searchParameters); + List> fieldData = results.getFieldFacet(FIELD_FACET); + totalSizeFromFacet = fieldData.stream() + .filter(pairData -> pairData.getSecond() > 0) + .mapToLong(pairData -> Long.valueOf(pairData.getFirst()) * pairData.getSecond()) + .sum(); + int skipCount = 0; int totalItems; totalItems = Math.min(results.getNodeRefs().size(), maxItems); @@ -200,6 +209,7 @@ public class NodeSizeActionExecuter extends ActionExecuterAbstractBase String formattedTimestamp = eventTimestamp.format(formatter); response.put("id", nodeRef.getId()); response.put("size", totalSize); + response.put("sizeFromFacet", totalSizeFromFacet); response.put("calculatedAt", formattedTimestamp); response.put("numberOfFiles", results != null ? results.getNodeRefs().size() : 0);