diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/cli/CommandPut.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/cli/CommandPut.java index 0637607ec4b7afa615dc7238c590d037e85e6747..47056190d3cc3dfefbc2048b6aae5702daac47dc 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/cli/CommandPut.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/cli/CommandPut.java @@ -25,7 +25,7 @@ import ch.systemsx.cisd.common.exceptions.EnvironmentFailureException; import ch.systemsx.cisd.common.exceptions.UserFailureException; import ch.systemsx.cisd.openbis.dss.client.api.v1.IDssComponent; import ch.systemsx.cisd.openbis.dss.generic.shared.api.v1.IDssServiceRpcGeneric; -import ch.systemsx.cisd.openbis.dss.generic.shared.api.v1.NewDataSetDssDTO; +import ch.systemsx.cisd.openbis.dss.generic.shared.api.v1.NewDataSetDTO; /** * Command that lists files in the data set. @@ -73,19 +73,18 @@ class CommandPut extends AbstractCommand int execute() { - NewDataSetDssDTO newDataSet = getNewDataSet(); + NewDataSetDTO newDataSet = getNewDataSet(); dssService.putDataSet("", newDataSet); return 0; } - private NewDataSetDssDTO getNewDataSet() + private NewDataSetDTO getNewDataSet() { String storageProcessName = arguments.getStorageProcess(); String filePath = arguments.getFilePath(); - filePath.length(); InputStream fileInputStream = null; - return new NewDataSetDssDTO(storageProcessName, fileInputStream); + return new NewDataSetDTO(storageProcessName, filePath, fileInputStream); } } diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/api/v1/DssServiceRpcGeneric.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/api/v1/DssServiceRpcGeneric.java index b3a25d317d063df69ec79cc921632d9974105bee..c031ed66a8e1d2ffe1a4c5d83a7b4a1c969aabec 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/api/v1/DssServiceRpcGeneric.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/api/v1/DssServiceRpcGeneric.java @@ -26,9 +26,9 @@ import ch.systemsx.cisd.base.exceptions.IOExceptionUnchecked; import ch.systemsx.cisd.openbis.dss.generic.server.AbstractDssServiceRpc; import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService; import ch.systemsx.cisd.openbis.dss.generic.shared.api.v1.FileInfoDssDTO; -import ch.systemsx.cisd.openbis.dss.generic.shared.api.v1.FileReferenceDssDTO; +import ch.systemsx.cisd.openbis.dss.generic.shared.api.v1.DataSetFileDTO; import ch.systemsx.cisd.openbis.dss.generic.shared.api.v1.IDssServiceRpcGeneric; -import ch.systemsx.cisd.openbis.dss.generic.shared.api.v1.NewDataSetDssDTO; +import ch.systemsx.cisd.openbis.dss.generic.shared.api.v1.NewDataSetDTO; /** * Implementation of the generic RPC interface. @@ -86,10 +86,10 @@ public class DssServiceRpcGeneric extends AbstractDssServiceRpc implements IDssS } } - public void putDataSet(String sessionToken, NewDataSetDssDTO newDataSet) + public void putDataSet(String sessionToken, NewDataSetDTO newDataSet) throws IOExceptionUnchecked, IllegalArgumentException { - + System.out.println("Put " + newDataSet); } public int getMajorVersion() @@ -121,15 +121,15 @@ public class DssServiceRpcGeneric extends AbstractDssServiceRpc implements IDssS factory.appendFileInfosForFile(requestedFile, list, isRecursive); } - public InputStream getFileForDataSet(String sessionToken, FileReferenceDssDTO fileOrFolder) + public InputStream getFileForDataSet(String sessionToken, DataSetFileDTO fileOrFolder) throws IOExceptionUnchecked, IllegalArgumentException { return this.getFileForDataSet(sessionToken, fileOrFolder.getDataSetCode(), fileOrFolder .getPath()); } - public FileInfoDssDTO[] listFilesForDataSet(String sessionToken, FileReferenceDssDTO fileOrFolder) - throws IOExceptionUnchecked, IllegalArgumentException + public FileInfoDssDTO[] listFilesForDataSet(String sessionToken, + DataSetFileDTO fileOrFolder) throws IOExceptionUnchecked, IllegalArgumentException { return this.listFilesForDataSet(sessionToken, fileOrFolder.getDataSetCode(), fileOrFolder .getPath(), fileOrFolder.isRecursive()); diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/FileReferenceDssDTO.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/DataSetFileDTO.java similarity index 61% rename from datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/FileReferenceDssDTO.java rename to datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/DataSetFileDTO.java index 27027f05454f81ccf3925aab6827f65049d4bad8..c57f2db7eae6f34ee711e10aa43809cc004613e9 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/FileReferenceDssDTO.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/DataSetFileDTO.java @@ -18,12 +18,15 @@ package ch.systemsx.cisd.openbis.dss.generic.shared.api.v1; import java.io.Serializable; +import org.apache.commons.lang.builder.ToStringBuilder; +import org.apache.commons.lang.builder.ToStringStyle; + /** - * Represents a reference to a file/path within a data set. + * Represents a reference to a file/folder within a data set. * * @author Chandrasekhar Ramakrishnan */ -public class FileReferenceDssDTO implements Serializable +public class DataSetFileDTO implements Serializable { private static final long serialVersionUID = 1L; @@ -33,26 +36,41 @@ public class FileReferenceDssDTO implements Serializable private final boolean isRecursive; - public FileReferenceDssDTO(String dataSetCode, String path, boolean isRecursive) + public DataSetFileDTO(String dataSetCode, String path, boolean isRecursive) { this.dataSetCode = dataSetCode; this.path = path; this.isRecursive = isRecursive; } + /** The code of the data set that owns this file */ public String getDataSetCode() { return dataSetCode; } + /** The path within the data set of the file */ public String getPath() { return path; } + /** If true, this object includes sub folders */ public boolean isRecursive() { return isRecursive; } + @Override + public String toString() + { + ToStringBuilder sb = new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE); + sb.append(getDataSetCode()); + sb.append(getPath()); + if (isRecursive()) + { + sb.append("recursive"); + } + return sb.toString(); + } } diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/IDssServiceRpcGeneric.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/IDssServiceRpcGeneric.java index 5a02d1480ff8b69c78667d6bd1b284bb01e43201..7dcfc8eb76d909dbbdc4990aa6a2b4c4a9d27f8c 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/IDssServiceRpcGeneric.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/IDssServiceRpcGeneric.java @@ -38,7 +38,7 @@ public interface IDssServiceRpcGeneric extends IRpcService * @throws IOExceptionUnchecked Thrown if an IOException occurs when listing the files * @throws IllegalArgumentException Thrown if the dataSetCode or startPath are not valid */ - public FileInfoDssDTO[] listFilesForDataSet(String sessionToken, FileReferenceDssDTO fileOrFolder) + public FileInfoDssDTO[] listFilesForDataSet(String sessionToken, DataSetFileDTO fileOrFolder) throws IOExceptionUnchecked, IllegalArgumentException; /** @@ -49,7 +49,7 @@ public interface IDssServiceRpcGeneric extends IRpcService * @throws IOExceptionUnchecked Thrown if an IOException occurs when listing the files * @throws IllegalArgumentException Thrown if the dataSetCode or startPath are not valid */ - public InputStream getFileForDataSet(String sessionToken, FileReferenceDssDTO fileOrFolder) + public InputStream getFileForDataSet(String sessionToken, DataSetFileDTO fileOrFolder) throws IOExceptionUnchecked, IllegalArgumentException; /** @@ -85,6 +85,6 @@ public interface IDssServiceRpcGeneric extends IRpcService * @throws IOExceptionUnchecked Thrown if an IOException occurs when listing the files * @throws IllegalArgumentException Thrown if the dataSetCode or startPath are not valid */ - public void putDataSet(String sessionToken, NewDataSetDssDTO newDataset) + public void putDataSet(String sessionToken, NewDataSetDTO newDataset) throws IOExceptionUnchecked, IllegalArgumentException; } diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/NewDataSetDssDTO.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/NewDataSetDTO.java similarity index 72% rename from datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/NewDataSetDssDTO.java rename to datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/NewDataSetDTO.java index ddddc8fef65e5cb573b037b7065f6009137e7f75..bfead09d00fe2840c1c94a64fcac743df4741e19 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/NewDataSetDssDTO.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/NewDataSetDTO.java @@ -19,6 +19,9 @@ package ch.systemsx.cisd.openbis.dss.generic.shared.api.v1; import java.io.InputStream; import java.io.Serializable; +import org.apache.commons.lang.builder.ToStringBuilder; +import org.apache.commons.lang.builder.ToStringStyle; + import ch.systemsx.cisd.common.io.ConcatenatedFileInputStream; /** @@ -29,12 +32,14 @@ import ch.systemsx.cisd.common.io.ConcatenatedFileInputStream; * * @author Chandrasekhar Ramakrishnan */ -public class NewDataSetDssDTO implements Serializable +public class NewDataSetDTO implements Serializable { private static final long serialVersionUID = 1L; private final String storageProcessName; + private final String fileName; + private final InputStream inputStream; /** @@ -44,9 +49,10 @@ public class NewDataSetDssDTO implements Serializable * @param inputStream An input stream on the file or folder to register. If a folder is to be * registered, the input stream must be a {@link ConcatenatedFileInputStream}. */ - public NewDataSetDssDTO(String storageProcessName, InputStream inputStream) + public NewDataSetDTO(String storageProcessName, String fileName, InputStream inputStream) { this.storageProcessName = storageProcessName; + this.fileName = fileName; this.inputStream = inputStream; } @@ -55,8 +61,22 @@ public class NewDataSetDssDTO implements Serializable return storageProcessName; } + public String getFileName() + { + return fileName; + } + public InputStream getInputStream() { return inputStream; } + + @Override + public String toString() + { + ToStringBuilder sb = new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE); + sb.append("storageProcess", getStorageProcessName()); + sb.append("fileName", getFileName()); + return sb.toString(); + } } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/DataSetFileDTOTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/DataSetFileDTOTest.java new file mode 100644 index 0000000000000000000000000000000000000000..062bea015165c403bf046ab05113a812e632b2f8 --- /dev/null +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/DataSetFileDTOTest.java @@ -0,0 +1,36 @@ +/* + * Copyright 2010 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.dss.generic.shared.api.v1; + +import org.testng.AssertJUnit; +import org.testng.annotations.Test; + +/** + * @author Chandrasekhar Ramakrishnan + */ +public class DataSetFileDTOTest extends AssertJUnit +{ + @Test + public void testToString() + { + DataSetFileDTO dsf = new DataSetFileDTO("code", "path", false); + assertEquals("DataSetFileDTO[code,path]", dsf.toString()); + + dsf = new DataSetFileDTO("code", "path", true); + assertEquals("DataSetFileDTO[code,path,recursive]", dsf.toString()); + } +}