From 2cc498a298a4bdb6d550c67881bad20fd3b1e2bf Mon Sep 17 00:00:00 2001 From: kaloyane <kaloyane> Date: Thu, 16 Jun 2011 08:58:38 +0000 Subject: [PATCH] [LMS-2319] give NewDataSetDTO a constructor that is easier to use SVN: 21716 --- .../shared/api/v1/FileInfoDssBuilder.java | 23 +++++++++++++++++++ .../generic/shared/api/v1/NewDataSetDTO.java | 23 +++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/FileInfoDssBuilder.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/FileInfoDssBuilder.java index 43996bf4efa..19062bb0286 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/FileInfoDssBuilder.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/FileInfoDssBuilder.java @@ -20,6 +20,7 @@ import java.io.File; import java.io.IOException; import java.net.URI; import java.util.ArrayList; +import java.util.List; /** * Helper Class for creating FileInfoDss objects based on file system. @@ -33,6 +34,28 @@ import java.util.ArrayList; public class FileInfoDssBuilder { + /** + * Return a list of {@link FileInfoDssDTO} objects corresponding to all files existing within a + * certain folder. The list is accumulated recursively. + */ + public static List<FileInfoDssDTO> getFileInfos(File dataSetContents) + { + FileInfoDssBuilder fileInfoBuilder = + new FileInfoDssBuilder(dataSetContents.getAbsolutePath(), + dataSetContents.getAbsolutePath()); + ArrayList<FileInfoDssDTO> fileInfos = new ArrayList<FileInfoDssDTO>(); + try + { + fileInfoBuilder.appendFileInfosForFile(dataSetContents, fileInfos, true); + } catch (IOException ioex) + { + throw new RuntimeException( + "Error occurred while gathering information from the local data set contents: " + + ioex.getMessage(), ioex); + } + return fileInfos; + } + private final File dataSetRootFile; private final File listingRootFile; diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/NewDataSetDTO.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/NewDataSetDTO.java index 18964d505ce..4ca73bb053e 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/NewDataSetDTO.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/NewDataSetDTO.java @@ -16,6 +16,7 @@ package ch.systemsx.cisd.openbis.dss.generic.shared.api.v1; +import java.io.File; import java.io.Serializable; import java.util.List; import java.util.Map; @@ -89,6 +90,16 @@ public class NewDataSetDTO implements Serializable } } + private static String getFolderNameOrNull(File dataSetFile) + { + String folderNameOrNull = null; + if (dataSetFile.isDirectory()) + { + folderNameOrNull = dataSetFile.getName(); + } + return folderNameOrNull; + } + private static final long serialVersionUID = 1L; private final DataSetOwner dataSetOwner; @@ -99,6 +110,18 @@ public class NewDataSetDTO implements Serializable private final NewDataSetMetadataDTO dataSetMetadata; + /** + * Constructor + * + * @param dataSetOwner the owner of the new data set + * @param dataSetFile a local file or directory whose contents will be uploaded to openBIS. + */ + public NewDataSetDTO(DataSetOwner dataSetOwner, File dataSetFile) + { + this(dataSetOwner, getFolderNameOrNull(dataSetFile), FileInfoDssBuilder + .getFileInfos(dataSetFile)); + } + /** * Constructor * -- GitLab