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;
|
||||
}
|
||||
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.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);
|
||||
|
@@ -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<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 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);
|
||||
|
||||
|
Reference in New Issue
Block a user