From 1a0ebcbdab8d1688cdce5aea30bddee5a66bf05c Mon Sep 17 00:00:00 2001 From: vkovtun <viktor.kovtun@id.ethz.ch> Date: Thu, 12 Jan 2023 15:58:22 +0100 Subject: [PATCH] SSDM-13253 In progress of implementing registering the files from the session workspace. --- .../etlserver/api/v1/PutDataSetService.java | 17 ++++++++++++++++- .../ch/ethz/sis/openbis/generic/OpenBISAPI.java | 17 ++++++++++++----- 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/api/v1/PutDataSetService.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/api/v1/PutDataSetService.java index d3a01aa9ede..c4f42f17cb6 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/api/v1/PutDataSetService.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/api/v1/PutDataSetService.java @@ -59,6 +59,7 @@ import ch.systemsx.cisd.openbis.dss.generic.shared.api.v1.validation.ValidationS import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation; import ch.systemsx.cisd.openbis.dss.generic.shared.utils.DssPropertyParametersUtil; import ch.systemsx.cisd.openbis.dss.generic.shared.utils.SegmentedStoreUtils; +import ch.systemsx.cisd.openbis.dss.generic.shared.utils.SessionWorkspaceUtil; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.CustomImportFile; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseInstance; @@ -96,6 +97,9 @@ public class PutDataSetService implements IPutDataSetService private DatabaseInstance homeDatabaseInstance; + private File sessionWorkspace = SessionWorkspaceUtil.getSessionWorkspace( + DssPropertyParametersUtil.loadServiceProperties()); + /** * The designated constructor. * @@ -286,16 +290,27 @@ public class PutDataSetService implements IPutDataSetService String dataSetType = newDataSet.tryDataSetType(); ITopLevelDataSetRegistrator registrator = registratorMap.getRegistratorForType(dataSetType); + // TODO: here look in the session workspace. File sessionUploadDir = new File(getTemporaryIncomingRoot(dataSetType), sessionToken); File uploadIdDir = new File(sessionUploadDir, uploadId); + System.out.println("uploadIdDir = " + uploadIdDir); + File multipleFilesUploadDir = new File(uploadIdDir, MULTIPLE_FILES_UPLOAD_DIR); + System.out.println("multipleFilesUploadDir = " + multipleFilesUploadDir); + + File sessionWorkspaceUploadDir = new File(sessionWorkspace, sessionToken); + System.out.println("multipleFilesUploadDir = " + multipleFilesUploadDir); File[] uploadedFiles = null; File dataSet = null; - if (multipleFilesUploadDir.exists() && multipleFilesUploadDir.isDirectory()) + if (multipleFilesUploadDir.isDirectory()) { uploadedFiles = multipleFilesUploadDir.listFiles(); + } else if (sessionWorkspaceUploadDir.isDirectory()) + { + // TODO: use atomic move in this case. + uploadedFiles = sessionWorkspaceUploadDir.listFiles(); } if (uploadedFiles == null || uploadedFiles.length == 0) diff --git a/openbis_api/source/java/ch/ethz/sis/openbis/generic/OpenBISAPI.java b/openbis_api/source/java/ch/ethz/sis/openbis/generic/OpenBISAPI.java index 42aa29922ad..6e9d50baf69 100644 --- a/openbis_api/source/java/ch/ethz/sis/openbis/generic/OpenBISAPI.java +++ b/openbis_api/source/java/ch/ethz/sis/openbis/generic/OpenBISAPI.java @@ -65,9 +65,9 @@ public class OpenBISAPI { { this.timeout = timeout; this.asURL = asURL; - asFacade = HttpInvokerUtils.createServiceStub(IApplicationServerApi.class, this.asURL, timeout); + asFacade = HttpInvokerUtils.createServiceStub(IApplicationServerApi.class, this.asURL + IApplicationServerApi.SERVICE_URL, timeout); this.dssURL = dssURL; - dssFacade = HttpInvokerUtils.createServiceStub(IDataStoreServerApi.class, this.dssURL, timeout); + dssFacade = HttpInvokerUtils.createServiceStub(IDataStoreServerApi.class, this.dssURL + IDataStoreServerApi.SERVICE_URL, timeout); } public String getSessionToken() @@ -80,6 +80,16 @@ public class OpenBISAPI { this.sessionToken = sessionToken; } + public String login(String userId, String password) { + String sessionToken = asFacade.login(userId, password); + setSessionToken(sessionToken); + return sessionToken; + } + + public void logout() { + asFacade.logout(sessionToken); + } + private List<File> contentOf(final File item) { if (item.getName().startsWith(".")) @@ -136,8 +146,6 @@ public class OpenBISAPI { } - - /** * Upload file or folder to the DSS SessionWorkspaceFileUploadServlet and return the ID to be used by createUploadedDataSet * This method hides the complexities of uploading a folder with many files and does the uploads in chunks. @@ -230,7 +238,6 @@ public class OpenBISAPI { public DataSetPermId createUploadedDataSet(final UploadedDataSetCreation newDataSet) { - // TODO: add to the facade the possibility to create a dataset. return dssFacade.createUploadedDataSet(sessionToken, newDataSet); } -- GitLab