diff --git a/changelog.xml b/changelog.xml index 8de1786..54b6ab6 100644 --- a/changelog.xml +++ b/changelog.xml @@ -2,6 +2,7 @@ + Fixed workspace folder creation #19056 Using StorageHubClient in place of Home Library Webapp HTTP calls Added the generation of a CSV to post analyze the calledMethods Fixing project to migrate monthly aggregated accounting records in a dedicated bucket #12803 diff --git a/src/main/java/org/gcube/accounting/aggregator/directory/WorkSpaceDirectoryStructure.java b/src/main/java/org/gcube/accounting/aggregator/directory/WorkSpaceDirectoryStructure.java index a04e08a..be1e9b2 100644 --- a/src/main/java/org/gcube/accounting/aggregator/directory/WorkSpaceDirectoryStructure.java +++ b/src/main/java/org/gcube/accounting/aggregator/directory/WorkSpaceDirectoryStructure.java @@ -8,7 +8,7 @@ import org.gcube.common.storagehub.client.dsl.FolderContainer; */ public class WorkSpaceDirectoryStructure extends DirectoryStructure{ - private static final String BACKUP_FOLDER_DESCRIPTION = "Accounting Aggregator Plugin Backup Folder"; + public static final String BACKUP_FOLDER_DESCRIPTION = "Accounting Aggregator Plugin Backup Folder"; @Override protected FolderContainer getRoot() throws Exception { diff --git a/src/main/java/org/gcube/accounting/aggregator/workspace/WorkSpaceManagement.java b/src/main/java/org/gcube/accounting/aggregator/workspace/WorkSpaceManagement.java index 858a0ef..6df3bc4 100644 --- a/src/main/java/org/gcube/accounting/aggregator/workspace/WorkSpaceManagement.java +++ b/src/main/java/org/gcube/accounting/aggregator/workspace/WorkSpaceManagement.java @@ -9,11 +9,13 @@ import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; import org.gcube.accounting.aggregator.utility.Utility; +import org.gcube.common.storagehub.client.dsl.ContainerType; import org.gcube.common.storagehub.client.dsl.FileContainer; import org.gcube.common.storagehub.client.dsl.FolderContainer; import org.gcube.common.storagehub.client.dsl.ItemContainer; -import org.gcube.common.storagehub.client.dsl.ListResolverTyped; +import org.gcube.common.storagehub.client.dsl.ListResolver; import org.gcube.common.storagehub.client.dsl.StorageHubClient; +import org.gcube.common.storagehub.model.exceptions.StorageHubException; import org.gcube.common.storagehub.model.items.Item; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -127,9 +129,26 @@ public class WorkSpaceManagement { } } + protected FolderContainer getFolder(FolderContainer parent, String name) throws StorageHubException { + FolderContainer destinationFolder = null; + + ListResolver listResolver = parent.findByName(name); + List> itemContainers = listResolver.getContainers(); + if(itemContainers.size()>=1){ + ItemContainer itemContainer = itemContainers.get(0); + if(itemContainer.getType().compareTo(ContainerType.FOLDER)==0) { + destinationFolder = (FolderContainer) itemContainer; + } + } + + return destinationFolder; + } + public FolderContainer getOrCreateFolder(FolderContainer parent, String name, String description, boolean hidden) throws Exception { - FolderContainer destinationFolder = null; + FolderContainer destinationFolder = getFolder(parent, name); + + /* ListResolverTyped listResolverTyped = parent.list(); List> containers = listResolverTyped.includeHidden().getContainers(); for(ItemContainer itemContainer : containers) { @@ -139,6 +158,8 @@ public class WorkSpaceManagement { } } } + */ + if(destinationFolder == null) { if(hidden) { destinationFolder = parent.newHiddenFolder(name, description); diff --git a/src/test/java/org/gcube/accounting/aggregator/plugin/ContextTest.java b/src/test/java/org/gcube/accounting/aggregator/plugin/ContextTest.java index fc5fb14..41c801a 100644 --- a/src/test/java/org/gcube/accounting/aggregator/plugin/ContextTest.java +++ b/src/test/java/org/gcube/accounting/aggregator/plugin/ContextTest.java @@ -31,11 +31,11 @@ public class ContextTest { protected static Properties properties; protected static final String PROPERTIES_FILENAME = "token.properties"; - public static final String PARENT_DEFAULT_TEST_SCOPE; - public static final String DEFAULT_TEST_SCOPE; - public static final String ALTERNATIVE_TEST_SCOPE; + public static final String ROOT_DEV_SCOPE; + public static final String VO_DEFAULT_TEST_SCOPE; + public static final String VRE_DEFAULT_TEST_SCOPE; - public static final String DEFAULT_TEST_SCOPE_ANOTHER_USER; + public static final String VO_DEFAULT_TEST_SCOPE_ANOTHER_USER; static { properties = new Properties(); @@ -53,14 +53,14 @@ public class ContextTest { // ALTERNATIVE_TEST_SCOPE = DEFAULT_TEST_SCOPE_NAME + "/preVRE"; - PARENT_DEFAULT_TEST_SCOPE = "/gcube"; - DEFAULT_TEST_SCOPE = PARENT_DEFAULT_TEST_SCOPE + "/devNext"; - ALTERNATIVE_TEST_SCOPE = DEFAULT_TEST_SCOPE + "/NextNext"; + ROOT_DEV_SCOPE = "/gcube"; + VO_DEFAULT_TEST_SCOPE = ROOT_DEV_SCOPE + "/devNext"; + VRE_DEFAULT_TEST_SCOPE = VO_DEFAULT_TEST_SCOPE + "/NextNext"; - DEFAULT_TEST_SCOPE_ANOTHER_USER = "lucio.lelii_" + DEFAULT_TEST_SCOPE; + VO_DEFAULT_TEST_SCOPE_ANOTHER_USER = "lucio.lelii_" + VO_DEFAULT_TEST_SCOPE; try { - setContextByName(DEFAULT_TEST_SCOPE); + setContextByName(VO_DEFAULT_TEST_SCOPE); } catch(Exception e) { throw new RuntimeException(e); } @@ -91,7 +91,7 @@ public class ContextTest { @BeforeClass public static void beforeClass() throws Exception { - setContextByName(DEFAULT_TEST_SCOPE); + setContextByName(VO_DEFAULT_TEST_SCOPE); } @AfterClass diff --git a/src/test/java/org/gcube/accounting/aggregator/workspace/WorkSpaceManagementTest.java b/src/test/java/org/gcube/accounting/aggregator/workspace/WorkSpaceManagementTest.java new file mode 100644 index 0000000..23a2572 --- /dev/null +++ b/src/test/java/org/gcube/accounting/aggregator/workspace/WorkSpaceManagementTest.java @@ -0,0 +1,28 @@ +package org.gcube.accounting.aggregator.workspace; + +import org.gcube.accounting.aggregator.directory.WorkSpaceDirectoryStructure; +import org.gcube.accounting.aggregator.plugin.ContextTest; +import org.gcube.common.storagehub.client.dsl.FolderContainer; +import org.junit.Test; + +public class WorkSpaceManagementTest extends ContextTest { + + @Test + public void testCreatedirectory() throws Exception { + ContextTest.setContextByName(ROOT_DEV_SCOPE); + //ContextTest.setContextByName(AccountingAggregatorPluginTest.ROOT_PROD); + + WorkSpaceManagement workSpaceManagement = WorkSpaceManagement.getInstance(); + + FolderContainer root = workSpaceManagement.getWorkspaceRoot(); + + for(int i=0; i<5; i++) { + FolderContainer accountingAggregatorPlugin = workSpaceManagement.getOrCreateFolder(root, "Accounting-Aggregator-Plugin", WorkSpaceDirectoryStructure.BACKUP_FOLDER_DESCRIPTION, false); + FolderContainer yearly = workSpaceManagement.getOrCreateFolder(accountingAggregatorPlugin, "MONTHLY", WorkSpaceDirectoryStructure.BACKUP_FOLDER_DESCRIPTION, false); + workSpaceManagement.getOrCreateFolder(yearly, "2015", WorkSpaceDirectoryStructure.BACKUP_FOLDER_DESCRIPTION, false); + workSpaceManagement.getOrCreateFolder(yearly, "2016", WorkSpaceDirectoryStructure.BACKUP_FOLDER_DESCRIPTION, false); + } + + } + +} diff --git a/src/test/resources/.gitignore b/src/test/resources/.gitignore index dc69baa..b738f19 100644 --- a/src/test/resources/.gitignore +++ b/src/test/resources/.gitignore @@ -3,3 +3,4 @@ /gcube.gcubekey /preprod.gcubekey /token.properties +/d4science.research-infrastructures.eu.gcubekey