mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-10-08 14:51:49 +00:00
[feature/MNT-24127-EndpointToCalculateFolderSize] Added Endpoint to calculate folder size
This commit is contained in:
@@ -1126,9 +1126,5 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
|
|||||||
{
|
{
|
||||||
return URL_NODES + "/" + nodeId + "/" + URL_CALCULATEFOLDERSIZE;
|
return URL_NODES + "/" + nodeId + "/" + URL_CALCULATEFOLDERSIZE;
|
||||||
}
|
}
|
||||||
protected String getFolderSizeDataUrl(String nodeId)
|
|
||||||
{
|
|
||||||
return URL_NODES + "/" + nodeId + "/";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -30,11 +30,7 @@ import org.alfresco.rest.api.model.NodeTarget;
|
|||||||
import org.alfresco.rest.api.model.Site;
|
import org.alfresco.rest.api.model.Site;
|
||||||
import org.alfresco.rest.api.nodes.NodesEntityResource;
|
import org.alfresco.rest.api.nodes.NodesEntityResource;
|
||||||
import org.alfresco.rest.api.tests.client.HttpResponse;
|
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.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.alfresco.service.cmr.site.SiteVisibility;
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
@@ -46,7 +42,6 @@ import org.junit.runners.MethodSorters;
|
|||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
@@ -68,13 +63,7 @@ public class NodeFolderSizeApiTest extends AbstractBaseApiTest
|
|||||||
*/
|
*/
|
||||||
private Site userOneN1Site;
|
private Site userOneN1Site;
|
||||||
|
|
||||||
protected PermissionService permissionService;
|
private String folderId;
|
||||||
|
|
||||||
private NodeService nodeService;
|
|
||||||
|
|
||||||
private MimetypeService mimeTypeService;
|
|
||||||
|
|
||||||
private static String folderId;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The logger
|
* The logger
|
||||||
@@ -100,9 +89,6 @@ public class NodeFolderSizeApiTest extends AbstractBaseApiTest
|
|||||||
public void setup() throws Exception
|
public void setup() throws Exception
|
||||||
{
|
{
|
||||||
super.setup();
|
super.setup();
|
||||||
permissionService = applicationContext.getBean("permissionService", PermissionService.class);
|
|
||||||
nodeService = applicationContext.getBean("NodeService", NodeService.class);
|
|
||||||
mimeTypeService = applicationContext.getBean("MimetypeService", MimetypeService.class);
|
|
||||||
|
|
||||||
setRequestContext(user1);
|
setRequestContext(user1);
|
||||||
|
|
||||||
@@ -154,7 +140,7 @@ public class NodeFolderSizeApiTest extends AbstractBaseApiTest
|
|||||||
AuthenticationUtil.setFullyAuthenticatedUser(user1);
|
AuthenticationUtil.setFullyAuthenticatedUser(user1);
|
||||||
|
|
||||||
// Check if response and JSON parsing were successful
|
// 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());
|
String jsonResponse = String.valueOf(response.getJsonResponse());
|
||||||
assertNotNull("JSON response should not be null", jsonResponse);
|
assertNotNull("JSON response should not be null", jsonResponse);
|
||||||
|
@@ -37,6 +37,7 @@ import org.alfresco.service.cmr.repository.StoreRef;
|
|||||||
import org.alfresco.service.cmr.search.ResultSet;
|
import org.alfresco.service.cmr.search.ResultSet;
|
||||||
import org.alfresco.service.cmr.search.SearchParameters;
|
import org.alfresco.service.cmr.search.SearchParameters;
|
||||||
import org.alfresco.service.cmr.search.SearchService;
|
import org.alfresco.service.cmr.search.SearchService;
|
||||||
|
import org.alfresco.util.Pair;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
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 PAGE_SIZE = "page-size";
|
||||||
public static final String RESULT = "size-result";
|
public static final String RESULT = "size-result";
|
||||||
public static final String ERROR = "exception";
|
public static final String ERROR = "exception";
|
||||||
|
public static final String FIELD_FACET = "content.size";
|
||||||
|
|
||||||
private NodeService nodeService;
|
private NodeService nodeService;
|
||||||
private SearchService searchService;
|
private SearchService searchService;
|
||||||
@@ -127,6 +129,7 @@ public class NodeSizeActionExecuter extends ActionExecuterAbstractBase
|
|||||||
|
|
||||||
NodeRef nodeRef = actionedUponNodeRef;
|
NodeRef nodeRef = actionedUponNodeRef;
|
||||||
long totalSize = 0;
|
long totalSize = 0;
|
||||||
|
long totalSizeFromFacet = 0;
|
||||||
ResultSet results;
|
ResultSet results;
|
||||||
boolean isCalculationCompleted = false;
|
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:[10240 TO 102400]\", \"label\": \"small\", \"group\":\"Size\"");
|
||||||
searchParameters.addFacetQuery("content.size:[102400 TO 1048576]\", \"label\": \"medium\",\"group\":\"Size\"");
|
searchParameters.addFacetQuery("content.size:[102400 TO 1048576]\", \"label\": \"medium\",\"group\":\"Size\"");
|
||||||
searchParameters.addFacetQuery("content.size:[1048576 TO 16777216]\", \"label\": \"large\",\"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);
|
searchParameters.addFieldFacet(ff);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// executing Alfresco FTS query.
|
// executing Alfresco FTS query.
|
||||||
results = searchService.query(searchParameters);
|
results = searchService.query(searchParameters);
|
||||||
|
List<Pair<String, Integer>> 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 skipCount = 0;
|
||||||
int totalItems;
|
int totalItems;
|
||||||
totalItems = Math.min(results.getNodeRefs().size(), maxItems);
|
totalItems = Math.min(results.getNodeRefs().size(), maxItems);
|
||||||
@@ -200,6 +209,7 @@ public class NodeSizeActionExecuter extends ActionExecuterAbstractBase
|
|||||||
String formattedTimestamp = eventTimestamp.format(formatter);
|
String formattedTimestamp = eventTimestamp.format(formatter);
|
||||||
response.put("id", nodeRef.getId());
|
response.put("id", nodeRef.getId());
|
||||||
response.put("size", totalSize);
|
response.put("size", totalSize);
|
||||||
|
response.put("sizeFromFacet", totalSizeFromFacet);
|
||||||
response.put("calculatedAt", formattedTimestamp);
|
response.put("calculatedAt", formattedTimestamp);
|
||||||
response.put("numberOfFiles", results != null ? results.getNodeRefs().size() : 0);
|
response.put("numberOfFiles", results != null ? results.getNodeRefs().size() : 0);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user