[feature/MNT-24127-EndpointToCalculateFolderSize] Added Endpoint to calculate folder size

This commit is contained in:
Mohit Singh
2024-08-01 16:31:40 +05:30
parent 51f8142fd1
commit 7a16e30f30
3 changed files with 13 additions and 21 deletions

View File

@@ -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 + "/";
}
}

View File

@@ -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);

View File

@@ -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);