diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DataSetRegistrationDetails.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DataSetRegistrationDetails.java index dc738efc74359ea48a1493f5d4e386f06878327e..7a7b9cd15b7d70b8f43502be4ac777db51c86aee 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DataSetRegistrationDetails.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DataSetRegistrationDetails.java @@ -17,12 +17,16 @@ package ch.systemsx.cisd.etlserver.registrator; import java.io.File; +import java.util.List; import ch.systemsx.cisd.etlserver.ITypeExtractor; import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.FileFormatType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.LocatorType; +import ch.systemsx.cisd.openbis.generic.shared.dto.ExtractableData; +import ch.systemsx.cisd.openbis.generic.shared.dto.NewProperty; +import ch.systemsx.cisd.openbis.generic.shared.util.EntityHelper; /** * @author Chandrasekhar Ramakrishnan @@ -133,4 +137,26 @@ public class DataSetRegistrationDetails<T extends DataSetInformation> implements { this.dataSetInformation = dataSetInformation; } + + public void setPropertyValue(String propertyCode, String propertyValue) + { + ExtractableData datasetExtractableData = dataSetInformation.getExtractableData(); + List<NewProperty> properties = datasetExtractableData.getDataSetProperties(); + NewProperty property = EntityHelper.tryFindProperty(properties, propertyCode); + if (property != null) + { + property.setValue(propertyValue); + } else + { + properties.add(new NewProperty(propertyCode, propertyValue)); + } + } + + public String getPropertyValue(String propertyCode) + { + NewProperty property = + EntityHelper.tryFindProperty(dataSetInformation.getExtractableData() + .getDataSetProperties(), propertyCode); + return (property != null) ? property.getValue() : null; + } } diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/ConversionUtils.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/ConversionUtils.java index b8edf3ee34be5bc50ec1a2c32f63eb101c9b7b50..c10072102629d899181bc56434bb7b7a1dfadac0 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/ConversionUtils.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/ConversionUtils.java @@ -16,7 +16,6 @@ package ch.systemsx.cisd.etlserver.registrator.api.v1.impl; -import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -95,8 +94,9 @@ public class ConversionUtils return sampleUpdate; } - public static NewExternalData convertToNewExternalData(DataSetRegistrationDetails<?> registrationDetails, - String dataStoreCode, StorageFormat storageFormat, String dataFileRelativePath) + public static NewExternalData convertToNewExternalData( + DataSetRegistrationDetails<?> registrationDetails, String dataStoreCode, + StorageFormat storageFormat, String dataFileRelativePath) { DataSetInformation dataSetInformation = registrationDetails.getDataSetInformation(); final NewExternalData data = new NewExternalData(); @@ -118,16 +118,8 @@ public class ConversionUtils data.setLocation(dataFileRelativePath.substring(data.getShareId().length() + 1)); data.setStorageFormat(storageFormat); - List<NewProperty> newProperties = new ArrayList<NewProperty>(); - IEntityProperty[] properties = dataSetInformation.getProperties(); - for (int i = 0; i < properties.length; i++) - { - - IEntityProperty prop = properties[i]; - NewProperty newProp = - new NewProperty(prop.getPropertyType().getCode(), prop.getValue()); - newProperties.add(newProp); - } + List<NewProperty> newProperties = + dataSetInformation.getExtractableData().getDataSetProperties(); data.getExtractableData().setDataSetProperties(newProperties); return data; diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSet.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSet.java index af4bb9afba452ee67d3158962b3cf76309ef0dd9..30a9a7c5ce64a3f644de4ac0fd7d227c5254c50d 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSet.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSet.java @@ -25,11 +25,9 @@ import ch.systemsx.cisd.etlserver.registrator.api.v1.IExperimentImmutable; import ch.systemsx.cisd.etlserver.registrator.api.v1.ISampleImmutable; import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.FileFormatType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Space; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifier; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifierFactory; -import ch.systemsx.cisd.openbis.generic.shared.util.EntityHelper; /** * A generic class that represents a data set for the registration API. Can be subclassed. @@ -164,28 +162,11 @@ public class DataSet<T extends DataSetInformation> implements IDataSet public String getPropertyValue(String propertyCode) { - T dataSetInfo = registrationDetails.getDataSetInformation(); - IEntityProperty property = - EntityHelper.tryFindProperty(dataSetInfo.getProperties(), propertyCode); - return (property != null) ? property.getValue() : null; + return registrationDetails.getPropertyValue(propertyCode); } public void setPropertyValue(String propertyCode, String propertyValue) { - T dataSetInfo = registrationDetails.getDataSetInformation(); - IEntityProperty[] properties = dataSetInfo.getProperties(); - IEntityProperty property = EntityHelper.tryFindProperty(properties, propertyCode); - if (property != null) - { - property.setValue(propertyValue); - } else - { - IEntityProperty[] newProperties = new IEntityProperty[properties.length + 1]; - System.arraycopy(properties, 0, newProperties, 0, properties.length); - newProperties[properties.length] = - EntityHelper.createNewProperty(propertyCode, propertyValue); - dataSetInfo.setProperties(newProperties); - } - + registrationDetails.setPropertyValue(propertyCode, propertyValue); } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/util/EntityHelper.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/util/EntityHelper.java index 9609c08db3810f874cfa6a910814011508c5c630..ba17689f1a5e0bf83cc9df00da2250efe0ac7f40 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/util/EntityHelper.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/util/EntityHelper.java @@ -16,6 +16,8 @@ package ch.systemsx.cisd.openbis.generic.shared.util; +import java.util.List; + import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityProperty; @@ -26,6 +28,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MaterialType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType; +import ch.systemsx.cisd.openbis.generic.shared.dto.NewProperty; /** * @author Izabela Adamczyk @@ -93,6 +96,18 @@ public class EntityHelper return null; } + public static NewProperty tryFindProperty(List<NewProperty> properties, String propertyCode) + { + for (final NewProperty property : properties) + { + if (property.getPropertyCode().equalsIgnoreCase(propertyCode)) + { + return property; + } + } + return null; + } + public static String tryFindPropertyValue(IEntityPropertiesHolder holder, String propertyCode) { IEntityProperty property = null; @@ -114,14 +129,14 @@ public class EntityHelper { IEntityProperty property = tryFindProperty(holder.getProperties(), propertyCode); - if (property == null) { + if (property == null) + { property = createNewProperty(propertyCode); holder.getProperties().add(property); } property.setValue(propertyValue); } - public static IEntityProperty createNewProperty(String propertyCode, String propertyValue) { IEntityProperty property = createNewProperty(propertyCode); @@ -137,5 +152,4 @@ public class EntityHelper property.setPropertyType(propertyType); return property; } - }