From e2b82484d8a34d4e22d8c088124280084c62ca90 Mon Sep 17 00:00:00 2001 From: felmer <felmer> Date: Tue, 13 May 2014 10:46:42 +0000 Subject: [PATCH] SSDM-121: Make containers and ordinal in internal data set DTO classes available. Data set table views modified by showing all containers and the order in the containers. New tab (named: Container (Data Sets)) added to Data Set details view. Texts adapted SVN: 31493 --- .../shared/HierarchicalContentProvider.java | 3 +- .../HierarchicalContentProviderTest.java | 2 +- .../client/dto/ExternalDataGridColumnIDs.java | 4 +- .../AbstractExternalDataProvider.java | 25 +++++----- .../openbis/generic/server/CommonServer.java | 6 ++- .../bo/datasetlister/DatasetLister.java | 7 +++ .../DatasetLocationNodeRecord.java | 2 + .../bo/datasetlister/IDatasetLister.java | 3 ++ .../basic/dto/AbstractExternalData.java | 45 ++++++++++-------- .../basic/dto/DataSetRelationshipRole.java | 2 +- .../shared/basic/dto/DatasetLocation.java | 2 +- .../basic/dto/ExternalDataLocationNode.java | 2 +- .../shared/basic/dto/IDatasetLocation.java | 2 +- .../openbis/generic/shared/dto/DataPE.java | 18 ++++---- .../shared/dto/DatasetDescription.java | 17 +++++-- .../dto/SimpleDataSetInformationDTO.java | 17 +++++-- .../shared/translator/DataSetTranslator.java | 27 +++++------ .../translator/SimpleDataSetHelper.java | 10 +++- .../dataset/DataSetContainerSection.java | 46 +++++++++++++++++++ .../dataset/DataSetPropertiesPanel.java | 2 +- .../dataset/GenericDataSetViewer.java | 40 ++++++++-------- .../cisd/openbis/public/common-dictionary.js | 5 +- .../datasetlister/DatasetListerFastTest.java | 14 +++--- .../bo/datasetlister/DatasetListerTest.java | 2 +- .../dto/ExternalDataLocationNodeTest.java | 12 ++--- .../ExternalDataHasContainerMatcher.java | 2 +- .../server/logic/ScreeningUtils.java | 4 +- 27 files changed, 205 insertions(+), 116 deletions(-) create mode 100644 openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/DataSetContainerSection.java diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/HierarchicalContentProvider.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/HierarchicalContentProvider.java index 7575078a46e..87d89a6f584 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/HierarchicalContentProvider.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/HierarchicalContentProvider.java @@ -175,6 +175,7 @@ public class HierarchicalContentProvider implements IHierarchicalContentProvider if (locationNode.isContainer()) { List<IHierarchicalContent> componentContents = new ArrayList<IHierarchicalContent>(); + final String containerDataSetCode = locationNode.getLocation().getDataSetCode(); List<IDatasetLocationNode> sortedNodes = new ArrayList<IDatasetLocationNode>(locationNode.getComponents()); Collections.sort(sortedNodes, new Comparator<IDatasetLocationNode>() { @@ -186,7 +187,7 @@ public class HierarchicalContentProvider implements IHierarchicalContentProvider private int getOrderInContainer(IDatasetLocationNode node) { - Integer orderInContainer = node.getLocation().getOrderInContainer(); + Integer orderInContainer = node.getLocation().getOrderInContainer(containerDataSetCode); return orderInContainer == null ? 0 : orderInContainer; } }); diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/shared/HierarchicalContentProviderTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/shared/HierarchicalContentProviderTest.java index e0e6f1b8cfb..0fe6311a644 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/shared/HierarchicalContentProviderTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/shared/HierarchicalContentProviderTest.java @@ -296,7 +296,7 @@ public class HierarchicalContentProviderTest extends AssertJUnit } @Override - public Integer getOrderInContainer() + public Integer getOrderInContainer(String containerDataSetCode) { return null; } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/ExternalDataGridColumnIDs.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/ExternalDataGridColumnIDs.java index b8e211e0668..03148fcf0cb 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/ExternalDataGridColumnIDs.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/ExternalDataGridColumnIDs.java @@ -31,11 +31,11 @@ public class ExternalDataGridColumnIDs public static final String DATA_SET_TYPE = "DATA_SET_TYPE"; - public static final String CONTAINER_DATASET = "CONTAINER_DATASET"; + public static final String CONTAINER_DATASETS = "CONTAINER_DATASETS"; public static final String PARENT_DATASETS = "PARENT_DATASETS"; - public static final String ORDER_IN_CONTAINER = "ORDER_IN_CONTAINER"; + public static final String ORDER_IN_CONTAINERS = "ORDER_IN_CONTAINERS"; public static final String SAMPLE = "SAMPLE"; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/AbstractExternalDataProvider.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/AbstractExternalDataProvider.java index 2a9f2980ad9..4e64f5cfff2 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/AbstractExternalDataProvider.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/AbstractExternalDataProvider.java @@ -20,7 +20,7 @@ import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.CommonGridC import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.CommonGridColumnIDs.MODIFIER; import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalDataGridColumnIDs.ARCHIVING_STATUS; import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalDataGridColumnIDs.CODE; -import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalDataGridColumnIDs.CONTAINER_DATASET; +import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalDataGridColumnIDs.CONTAINER_DATASETS; import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalDataGridColumnIDs.DATA_PRODUCER_CODE; import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalDataGridColumnIDs.DATA_SET_TYPE; import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalDataGridColumnIDs.DATA_STORE_CODE; @@ -36,7 +36,7 @@ import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalDat import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalDataGridColumnIDs.IS_DELETED; import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalDataGridColumnIDs.LOCATION; import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalDataGridColumnIDs.METAPROJECTS; -import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalDataGridColumnIDs.ORDER_IN_CONTAINER; +import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalDataGridColumnIDs.ORDER_IN_CONTAINERS; import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalDataGridColumnIDs.PARENT_DATASETS; import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalDataGridColumnIDs.PERM_ID; import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalDataGridColumnIDs.PRESENT_IN_ARCHIVE; @@ -53,19 +53,20 @@ import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalDat import java.util.List; +import ch.systemsx.cisd.common.shared.basic.string.CommaSeparatedListBuilder; import ch.systemsx.cisd.openbis.generic.shared.ICommonServer; import ch.systemsx.cisd.openbis.generic.shared.basic.DeletionUtils; import ch.systemsx.cisd.openbis.generic.shared.basic.SimpleYesNoRenderer; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ContainerDataSet; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PhysicalDataSet; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalDataManagementSystem; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.FileFormatType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.LinkDataSet; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.LinkDataSetUrl; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.LinkTableCell; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PhysicalDataSet; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TypedTableModel; @@ -91,8 +92,8 @@ public abstract class AbstractExternalDataProvider extends builder.addColumn(CODE).withDefaultWidth(150); builder.addColumn(EXTERNAL_CODE).withDefaultWidth(150).hideByDefault(); builder.addColumn(DATA_SET_TYPE).withDefaultWidth(200); - builder.addColumn(CONTAINER_DATASET).withDefaultWidth(150).hideByDefault(); - builder.addColumn(ORDER_IN_CONTAINER).withDefaultWidth(100).hideByDefault(); + builder.addColumn(CONTAINER_DATASETS).withDefaultWidth(150).hideByDefault(); + builder.addColumn(ORDER_IN_CONTAINERS).withDefaultWidth(100).hideByDefault(); builder.addColumn(PARENT_DATASETS).withDefaultWidth(150).hideByDefault(); builder.addColumn(SAMPLE).withDefaultWidth(100).hideByDefault(); builder.addColumn(EXTERNAL_DATA_SAMPLE_IDENTIFIER).withDefaultWidth(200); @@ -153,14 +154,14 @@ public abstract class AbstractExternalDataProvider extends metaProjectsToString(dataSet.getMetaprojects())); builder.column(DATA_SET_TYPE).addString(dataSet.getDataSetType().getCode()); - ContainerDataSet container = dataSet.tryGetContainer(); - if (container != null) + List<ContainerDataSet> containerDataSets = dataSet.getContainerDataSets(); + builder.column(CONTAINER_DATASETS).addEntityLink(containerDataSets); + CommaSeparatedListBuilder listBuilder = new CommaSeparatedListBuilder(); + for (ContainerDataSet containerDataSet : containerDataSets) { - builder.column(CONTAINER_DATASET).addEntityLink(container, container.getCode()); + listBuilder.append(dataSet.getOrderInContainer(containerDataSet.getCode())); } - Integer orderInContainer = dataSet.getOrderInContainer(); - builder.column(ORDER_IN_CONTAINER).addString( - orderInContainer == null ? "" : orderInContainer.toString()); + builder.column(ORDER_IN_CONTAINERS).addString(listBuilder.toString()); builder.column(PARENT_DATASETS).addEntityLink(dataSet.getParents()); Sample sample = dataSet.getSample(); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java index ce8151e663e..58a2d77e328 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java @@ -870,7 +870,11 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt { case CONTAINER: datasets = datasetLister.listByContainerTechId(datasetId); - Collections.sort(datasets, AbstractExternalData.DATA_SET_COMPONENTS_COMPARATOR); + Collections.sort(datasets, new AbstractExternalData.DataSetComponentsComparator(datasetId)); + break; + case COMPONENT: + datasets = datasetLister.listByComponentTechId(datasetId); + Collections.sort(datasets); break; case CHILD: datasets = datasetLister.listByChildTechId(datasetId); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/DatasetLister.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/DatasetLister.java index 894b8ec2d38..000ade4d9f1 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/DatasetLister.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/DatasetLister.java @@ -407,6 +407,13 @@ public class DatasetLister extends AbstractLister implements IDatasetLister getParentChildRelationshipTypeId())); } + @Override + public List<AbstractExternalData> listByComponentTechId(TechId componentDatasetId) + { + return enrichDatasets(query.getParentsOf(new LongOpenHashSet(Arrays.asList(componentDatasetId.getId())), + getContainerComponentRelationshipTypeId())); + } + @Override public List<AbstractExternalData> listByContainerTechId(TechId containerDatasetId) { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/DatasetLocationNodeRecord.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/DatasetLocationNodeRecord.java index 8c895449670..b7b252266b4 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/DatasetLocationNodeRecord.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/DatasetLocationNodeRecord.java @@ -28,6 +28,8 @@ public class DatasetLocationNodeRecord public Long container_id; + public String container_code; + public Integer ordinal; public String location; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/IDatasetLister.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/IDatasetLister.java index 71c7481456a..69979a9e06a 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/IDatasetLister.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/IDatasetLister.java @@ -57,6 +57,9 @@ public interface IDatasetLister /** @return datasets that are parents of a dataset with the specified id */ List<AbstractExternalData> listByChildTechId(TechId childDatasetId); + /** @return datasets that are containers of a dataset with the specified id */ + List<AbstractExternalData> listByComponentTechId(TechId componentDatasetId); + /** @return datasets that are components of a dataset with the specified id */ List<AbstractExternalData> listByContainerTechId(TechId containerDatasetId); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/AbstractExternalData.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/AbstractExternalData.java index 706fc4fc55b..63286c01c61 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/AbstractExternalData.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/AbstractExternalData.java @@ -31,6 +31,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.IIdAndCodeHolder; import ch.systemsx.cisd.openbis.generic.shared.basic.IIsStub; import ch.systemsx.cisd.openbis.generic.shared.basic.IPermIdHolder; import ch.systemsx.cisd.openbis.generic.shared.basic.ITaggable; +import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; /** * A DTO for any kind of data set. @@ -75,14 +76,10 @@ public abstract class AbstractExternalData extends } - /** - * {@link Comparator} for data sets contained in a (virtual) container which uses ascending order in container. - */ - public static final Comparator<AbstractExternalData> DATA_SET_COMPONENTS_COMPARATOR = - new DataSetComponentsComparator(); - private Map<String, ContainerAndOrder> containersAndOrderByContainerId = new TreeMap<String, ContainerAndOrder>(); + private Map<Long, ContainerAndOrder> containersAndOrderByContainerTechId = new TreeMap<Long, ContainerAndOrder>(); + private boolean derived; private Long id; @@ -401,13 +398,6 @@ public abstract class AbstractExternalData extends return containersAndOrderByContainerId.values().iterator().next().getContainerDataSet(); } - @Deprecated - public Integer getOrderInContainer() - { - ContainerDataSet container = tryGetContainer(); - return container == null ? null : getOrderIn(container.getCode()); - } - public void addContainer(ContainerDataSet containerDataSet, Integer orderInContainer) { List<AbstractExternalData> components = containerDataSet.getContainedDataSets(); @@ -415,7 +405,9 @@ public abstract class AbstractExternalData extends { components.add(this); } - containersAndOrderByContainerId.put(containerDataSet.getCode(), new ContainerAndOrder(containerDataSet, orderInContainer)); + ContainerAndOrder containerAndOrder = new ContainerAndOrder(containerDataSet, orderInContainer); + containersAndOrderByContainerId.put(containerDataSet.getCode(), containerAndOrder); + containersAndOrderByContainerTechId.put(containerDataSet.getId(), containerAndOrder); } public List<ContainerDataSet> getContainerDataSets() @@ -429,7 +421,13 @@ public abstract class AbstractExternalData extends return containers; } - public Integer getOrderIn(String containerDataSetCode) + public Integer getOrderInContainer(Long containerDataSetTechId) + { + ContainerAndOrder containerAndOrder = containersAndOrderByContainerTechId.get(containerDataSetTechId); + return containerAndOrder == null ? null : containerAndOrder.getOrderInContainer(); + } + + public Integer getOrderInContainer(String containerDataSetCode) { ContainerAndOrder containerAndOrder = containersAndOrderByContainerId.get(containerDataSetCode); return containerAndOrder == null ? null : containerAndOrder.getOrderInContainer(); @@ -474,14 +472,23 @@ public abstract class AbstractExternalData extends return this.isStub; } - private static final class DataSetComponentsComparator implements - Comparator<AbstractExternalData> + /** + * {@link Comparator} for data sets contained in a (virtual) container which uses ascending order in container. + */ + public static final class DataSetComponentsComparator implements Comparator<AbstractExternalData> { + private Long id; + + public DataSetComponentsComparator(TechId techId) + { + id = techId.getId(); + } + @Override public int compare(AbstractExternalData o1, AbstractExternalData o2) { - Integer order1 = o1.getOrderInContainer(); - Integer order2 = o2.getOrderInContainer(); + Integer order1 = o1.getOrderInContainer(id); + Integer order2 = o2.getOrderInContainer(id); // sanity check if (order1 == null || order2 == null) { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/DataSetRelationshipRole.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/DataSetRelationshipRole.java index 8e53888ff0e..ad5394cd197 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/DataSetRelationshipRole.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/DataSetRelationshipRole.java @@ -23,5 +23,5 @@ import java.io.Serializable; */ public enum DataSetRelationshipRole implements Serializable { - CONTAINER, PARENT, CHILD; + CONTAINER, COMPONENT, PARENT, CHILD; } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/DatasetLocation.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/DatasetLocation.java index 0ef65e2535b..699457012d5 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/DatasetLocation.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/DatasetLocation.java @@ -60,7 +60,7 @@ public class DatasetLocation implements IDatasetLocation, Serializable, ICodeHol } @Override - public Integer getOrderInContainer() + public Integer getOrderInContainer(String containerDataSetCode) { return orderInContainer; } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ExternalDataLocationNode.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ExternalDataLocationNode.java index b9d07e5b87b..ef5b273f4f3 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ExternalDataLocationNode.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ExternalDataLocationNode.java @@ -86,7 +86,7 @@ public class ExternalDataLocationNode implements IDatasetLocationNode for (AbstractExternalData component : components) { componentsLocationNodes.put(component.getCode(), - new ExternalDataLocationNode(component, component.getOrderIn(containerCode))); + new ExternalDataLocationNode(component, component.getOrderInContainer(containerCode))); } return componentsLocationNodes.values(); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/IDatasetLocation.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/IDatasetLocation.java index e67cd84e84c..32ba2368124 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/IDatasetLocation.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/IDatasetLocation.java @@ -31,5 +31,5 @@ public interface IDatasetLocation String getDataStoreCode(); - Integer getOrderInContainer(); + Integer getOrderInContainer(String containerDataSetCode); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataPE.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataPE.java index 0dde3d12cb1..224e4d919ee 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataPE.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataPE.java @@ -70,7 +70,6 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.IIdentifierHolder; import ch.systemsx.cisd.openbis.generic.shared.dto.hibernate.SearchFieldConstants; import ch.systemsx.cisd.openbis.generic.shared.dto.properties.EntityKind; import ch.systemsx.cisd.openbis.generic.shared.util.HibernateUtils; -import ch.systemsx.cisd.openbis.generic.shared.util.RelationshipUtils; /** * Kind of <i>Java Bean</i> or <i>Value Object</i> which contains any information we would like to know about one DATA. @@ -230,21 +229,24 @@ public class DataPE extends AbstractIdAndCodeHolder<DataPE> implements @Field(index = Index.UN_TOKENIZED, store = Store.YES, name = SearchFieldConstants.CONTAINER_ID) private Long getContainerId() { - DataPE container = getContainer(); - return container != null ? container.getId() : null; + List<DataPE> containers = getContainers(); + return containers.isEmpty() ? null : containers.get(0).getId(); } @Transient - public DataPE getContainer() + public List<DataPE> getContainers() { - for (DataSetRelationshipPE relationship : getParentRelationships()) + final Set<DataSetRelationshipPE> relationships = getParentRelationships(); + final List<DataPE> containers = new ArrayList<DataPE>(); + for (DataSetRelationshipPE r : relationships) { - if (RelationshipUtils.isContainerComponentRelationship(relationship)) + if (isContainerComponentRelationship(r)) { - return relationship.getParentDataSet(); + assert r.getChildDataSet().equals(this); + containers.add(r.getParentDataSet()); } } - return null; + return containers; } public void addParentRelationship(final DataSetRelationshipPE relationship) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DatasetDescription.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DatasetDescription.java index afa7d781c94..3078b507a31 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DatasetDescription.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DatasetDescription.java @@ -19,7 +19,9 @@ package ch.systemsx.cisd.openbis.generic.shared.dto; import java.io.Serializable; import java.util.ArrayList; import java.util.Date; +import java.util.HashMap; import java.util.List; +import java.util.Map; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IDatasetLocation; @@ -40,7 +42,7 @@ public class DatasetDescription implements Serializable, IDatasetLocation private String dataSetLocation; - private Integer orderInContainer; + private final Map<String, Integer> orderInContainers = new HashMap<String, Integer>(); private Date registrationTimestamp; @@ -312,14 +314,19 @@ public class DatasetDescription implements Serializable, IDatasetLocation } @Override - public Integer getOrderInContainer() + public Integer getOrderInContainer(String containerDataSetCode) { - return orderInContainer; + return orderInContainers.get(containerDataSetCode); } - public void setOrderInContainer(Integer orderInContainer) + public void addOrderInContainer(String containerDataSetCode, Integer orderInContainer) { - this.orderInContainer = orderInContainer; + orderInContainers.put(containerDataSetCode, orderInContainer); + } + + public Map<String, Integer> getOrderInContainers() + { + return orderInContainers; } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SimpleDataSetInformationDTO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SimpleDataSetInformationDTO.java index e20f363b05c..f100956f7aa 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SimpleDataSetInformationDTO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SimpleDataSetInformationDTO.java @@ -18,6 +18,8 @@ package ch.systemsx.cisd.openbis.generic.shared.dto; import java.io.Serializable; import java.util.Date; +import java.util.HashMap; +import java.util.Map; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IDatasetLocation; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ServiceVersionHolder; @@ -59,7 +61,7 @@ public class SimpleDataSetInformationDTO implements Serializable, IDatasetLocati private String dataStoreUrl; - private Integer orderInContainer; + private Map<String, Integer> orderInContainers = new HashMap<String, Integer>(); public void setDataStoreCode(String dataStoreCode) { @@ -207,14 +209,19 @@ public class SimpleDataSetInformationDTO implements Serializable, IDatasetLocati } @Override - public Integer getOrderInContainer() + public Integer getOrderInContainer(String containerDataSetCode) { - return orderInContainer; + return orderInContainers.get(containerDataSetCode); } - public void setOrderInContainer(Integer orderInContainer) + public void addOrderInContainer(String containerDataSetCode, Integer orderInContainer) { - this.orderInContainer = orderInContainer; + orderInContainers.put(containerDataSetCode, orderInContainer); + } + + public void setOrderInContainers(Map<String, Integer> orderInContainers) + { + this.orderInContainers = orderInContainers; } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/DataSetTranslator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/DataSetTranslator.java index dcae0c60c23..f0524205765 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/DataSetTranslator.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/DataSetTranslator.java @@ -76,7 +76,12 @@ public class DataSetTranslator description.setDataStoreCode(data.getDataStore().getCode()); description.setRegistrationTimestamp(data.getRegistrationDate()); - description.setOrderInContainer(data.getOrderInContainer()); + List<ContainerDataSet> containerDataSets = data.getContainerDataSets(); + for (ContainerDataSet containerDataSet : containerDataSets) + { + String containerDataSetCode = containerDataSet.getCode(); + description.addOrderInContainer(containerDataSetCode, data.getOrderInContainer(containerDataSetCode)); + } PhysicalDataSet dataSet = data.tryGetAsDataSet(); if (dataSet != null) @@ -281,17 +286,6 @@ public class DataSetTranslator } } - private static DataSetRelationshipPE getContainerRelationshipOrNull(DataPE dataPE) - { - List<DataSetRelationshipPE> containerComponentRelationships = - RelationshipUtils.getContainerComponentRelationships(dataPE.getParentRelationships()); - if (containerComponentRelationships.isEmpty() == false) - { - return containerComponentRelationships.get(0); - } - return null; - } - private static ContainerDataSet tryToTranslateContainer(DataPE containerOrNull, String baseIndexURL, IManagedPropertyEvaluatorFactory managedPropertyEvaluatorFactory) { @@ -447,12 +441,13 @@ public class DataSetTranslator DatasetDescription description = new DatasetDescription(); description.setDataSetCode(dataSet.getCode()); - DataSetRelationshipPE relationship = getContainerRelationshipOrNull(dataSet); - if (relationship != null) + List<DataSetRelationshipPE> containerComponentRelationships = + RelationshipUtils.getContainerComponentRelationships(dataSet.getParentRelationships()); + for (DataSetRelationshipPE relationship : containerComponentRelationships) { - description.setOrderInContainer(relationship.getOrdinal()); + String containerDataSetCode = relationship.getParentDataSet().getCode(); + description.addOrderInContainer(containerDataSetCode, relationship.getOrdinal()); } - description.setRegistrationTimestamp(dataSet.getRegistrationDate()); if (dataSet.isExternalData()) { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/SimpleDataSetHelper.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/SimpleDataSetHelper.java index d3bb435fbfb..984218728e3 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/SimpleDataSetHelper.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/SimpleDataSetHelper.java @@ -20,6 +20,7 @@ import java.util.ArrayList; import java.util.List; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ContainerDataSet; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PhysicalDataSet; import ch.systemsx.cisd.openbis.generic.shared.dto.DatasetDescription; import ch.systemsx.cisd.openbis.generic.shared.dto.SimpleDataSetInformationDTO; @@ -71,7 +72,12 @@ public class SimpleDataSetHelper result.setSampleCode(data.getSampleCode()); result.setDataSetType(data.getDataSetType().getCode()); result.setDataStoreUrl(data.getDataStore().getHostUrl()); - result.setOrderInContainer(data.getOrderInContainer()); + List<ContainerDataSet> containerDataSets = data.getContainerDataSets(); + for (ContainerDataSet containerDataSet : containerDataSets) + { + String containerDataSetCode = containerDataSet.getCode(); + result.addOrderInContainer(containerDataSetCode, data.getOrderInContainer(containerDataSetCode)); + } return result; } @@ -89,7 +95,7 @@ public class SimpleDataSetHelper result.setSpaceCode(datasetDescription.getSpaceCode()); result.setProjectCode(datasetDescription.getProjectCode()); result.setSampleCode(datasetDescription.getSampleCode()); - result.setOrderInContainer(datasetDescription.getOrderInContainer()); + result.setOrderInContainers(datasetDescription.getOrderInContainers()); return result; } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/DataSetContainerSection.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/DataSetContainerSection.java new file mode 100644 index 00000000000..c83bdefef1e --- /dev/null +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/DataSetContainerSection.java @@ -0,0 +1,46 @@ +/* + * Copyright 2014 ETH Zuerich, SIS + * + * 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.plugin.generic.client.web.client.application.dataset; + +import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DisplayTypeIDGenerator; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IDisposableComponent; +import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetRelationshipRole; + +/** + * @author Franz-Josef Elmer + */ +class DataSetContainerSection extends AbstractDataSetsSection +{ + private final AbstractExternalData dataset; + + DataSetContainerSection(IViewContext<?> viewContext, AbstractExternalData dataset) + { + super("Container (Data Sets)", viewContext, dataset); + this.dataset = dataset; + setIds(DisplayTypeIDGenerator.DATA_SET_CONTAINED_SECTION); + } + + @Override + protected IDisposableComponent createDatasetBrowserComponent() + { + return DataSetRelationshipBrowser.create(viewContext, TechId.create(dataset), + DataSetRelationshipRole.COMPONENT, dataset.getDataSetType()); + } +} diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/DataSetPropertiesPanel.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/DataSetPropertiesPanel.java index 53b43d85207..42198fee0e3 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/DataSetPropertiesPanel.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/DataSetPropertiesPanel.java @@ -112,7 +112,7 @@ public class DataSetPropertiesPanel extends ContentPanel properties.put(messageProvider.getMessage(Dict.REGISTRATION_DATE), dataset.getRegistrationDate()); List<ContainerDataSet> containerDataSets = dataset.getContainerDataSets(); - if (containerDataSets.isEmpty() == false) + if (containerDataSets.size() == 1) { properties.put(messageProvider.getMessage(Dict.CONTAINER_DATA_SET), containerDataSets.get(0)); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/GenericDataSetViewer.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/GenericDataSetViewer.java index 3f228771184..a3e9d5de4be 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/GenericDataSetViewer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/GenericDataSetViewer.java @@ -57,14 +57,14 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IMess import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DisplayedOrSelectedDatasetCriteria; import ch.systemsx.cisd.openbis.generic.shared.basic.IIdAndCodeHolder; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PhysicalDataSet; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataStoreServiceKind; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.ObjectKind; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatastoreServiceDescription; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ISerializableComparable; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PhysicalDataSet; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.WebAppContext; import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.IGenericClientServiceAsync; @@ -117,8 +117,7 @@ abstract public class GenericDataSetViewer extends AbstractViewerWithVerticalSpl AsyncCallback<AbstractExternalData> asyncCallback); /** - * To be subclassed. Creates additional panels of the viewer in the right side section besides - * components, datasets and attachments + * To be subclassed. Creates additional panels of the viewer in the right side section besides components, datasets and attachments */ protected List<TabContent> createAdditionalSectionPanels(AbstractExternalData dataset) { @@ -275,6 +274,8 @@ abstract public class GenericDataSetViewer extends AbstractViewerWithVerticalSpl final TabContent containedSection = new DataSetContainedSection(context, dataset); container.addSection(containedSection); } + final TabContent containerSection = new DataSetContainerSection(context, dataset); + container.addSection(containerSection); // parents final TabContent parentsSection = new DataSetParentsSection(context, dataset); @@ -370,18 +371,18 @@ abstract public class GenericDataSetViewer extends AbstractViewerWithVerticalSpl public DatabaseModificationKind[] getRelevantModifications() { return new DatabaseModificationKind[] - { DatabaseModificationKind.edit(ObjectKind.DATA_SET), - DatabaseModificationKind.createOrDelete(ObjectKind.DATA_SET), - DatabaseModificationKind.createOrDelete(ObjectKind.PROPERTY_TYPE_ASSIGNMENT), - DatabaseModificationKind.edit(ObjectKind.PROPERTY_TYPE_ASSIGNMENT), - DatabaseModificationKind.createOrDelete(ObjectKind.VOCABULARY_TERM), - DatabaseModificationKind.edit(ObjectKind.VOCABULARY_TERM), - DatabaseModificationKind.createOrDelete(ObjectKind.EXPERIMENT), - DatabaseModificationKind.edit(ObjectKind.EXPERIMENT), - DatabaseModificationKind.createOrDelete(ObjectKind.SAMPLE), - DatabaseModificationKind.edit(ObjectKind.SAMPLE), - DatabaseModificationKind.createOrDelete(ObjectKind.METAPROJECT), - DatabaseModificationKind.edit(ObjectKind.METAPROJECT) }; + { DatabaseModificationKind.edit(ObjectKind.DATA_SET), + DatabaseModificationKind.createOrDelete(ObjectKind.DATA_SET), + DatabaseModificationKind.createOrDelete(ObjectKind.PROPERTY_TYPE_ASSIGNMENT), + DatabaseModificationKind.edit(ObjectKind.PROPERTY_TYPE_ASSIGNMENT), + DatabaseModificationKind.createOrDelete(ObjectKind.VOCABULARY_TERM), + DatabaseModificationKind.edit(ObjectKind.VOCABULARY_TERM), + DatabaseModificationKind.createOrDelete(ObjectKind.EXPERIMENT), + DatabaseModificationKind.edit(ObjectKind.EXPERIMENT), + DatabaseModificationKind.createOrDelete(ObjectKind.SAMPLE), + DatabaseModificationKind.edit(ObjectKind.SAMPLE), + DatabaseModificationKind.createOrDelete(ObjectKind.METAPROJECT), + DatabaseModificationKind.edit(ObjectKind.METAPROJECT) }; } @Override @@ -391,10 +392,9 @@ abstract public class GenericDataSetViewer extends AbstractViewerWithVerticalSpl } /** - * Holder of a {@link Button} that has a menu with items that schedule dataset plugin - * processing. The button is hidden at the beginning. When data set is successfully loaded by - * the viewer and there is a nonempty list of plugins assigned to its data type data then the - * menu is filled and button is shown. + * Holder of a {@link Button} that has a menu with items that schedule dataset plugin processing. The button is hidden at the beginning. When data + * set is successfully loaded by the viewer and there is a nonempty list of plugins assigned to its data type data then the menu is filled and + * button is shown. */ private class ProcessButtonHolder { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/public/common-dictionary.js b/openbis/source/java/ch/systemsx/cisd/openbis/public/common-dictionary.js index 3c153d78214..10bea9f946d 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/public/common-dictionary.js +++ b/openbis/source/java/ch/systemsx/cisd/openbis/public/common-dictionary.js @@ -328,9 +328,9 @@ var common = { // DataSet Browser // - container_dataset: "Container", + container_datasets: "Containers", parent_datasets: "Parents", - order_in_container: "Order in Container", + order_in_containers: "Order in Containers", children_datasets: "Children", no_datasets_selected: "No Data Sets were selected.", datasets_from_different_stores_selected: "Data Sets from different Data Stores were selected, so no operation can be performed on all of them.", @@ -823,6 +823,7 @@ var common = { file_format_type: "File Type", production_date: "Production Date", data_producer_code: "Producer", + container_dataset: "Container", data_store_code: "Data Store", button_upload_datasets: "Export Data", confirm_dataset_upload_title: "Uploading Confirmation and Authentication", diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/DatasetListerFastTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/DatasetListerFastTest.java index f8b5b0f9e20..73147316402 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/DatasetListerFastTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/DatasetListerFastTest.java @@ -127,10 +127,10 @@ public class DatasetListerFastTest extends AssertJUnit new ArrayList<IDatasetLocationNode>(location.getComponents()); Collections.sort(components, DATA_SET_LOCATION_NODE_COMPARATOR); assertEquals("ds-c1", components.get(0).getLocation().getDataSetCode()); - assertEquals(new Integer(0), components.get(0).getLocation().getOrderInContainer()); + assertEquals(new Integer(0), components.get(0).getLocation().getOrderInContainer("ds-1")); assertEquals("a/b/c/1", components.get(0).getLocation().getDataSetLocation()); assertEquals("ds-c2", components.get(1).getLocation().getDataSetCode()); - assertEquals(new Integer(1), components.get(1).getLocation().getOrderInContainer()); + assertEquals(new Integer(1), components.get(1).getLocation().getOrderInContainer("ds-1")); assertEquals("a/b/c/2", components.get(1).getLocation().getDataSetLocation()); } @@ -163,23 +163,23 @@ public class DatasetListerFastTest extends AssertJUnit new ArrayList<IDatasetLocationNode>(location.getComponents()); Collections.sort(components, DATA_SET_LOCATION_NODE_COMPARATOR); assertEquals("-2303", components.get(0).getLocation().getDataSetCode()); - assertEquals(new Integer(1), components.get(0).getLocation().getOrderInContainer()); + assertEquals(new Integer(1), components.get(0).getLocation().getOrderInContainer("-2306")); assertEquals("a/b/c/2303", components.get(0).getLocation().getDataSetLocation()); assertEquals("[]", components.get(0).getComponents().toString()); assertEquals("-2304", components.get(1).getLocation().getDataSetCode()); - assertEquals(new Integer(0), components.get(1).getLocation().getOrderInContainer()); + assertEquals(new Integer(0), components.get(1).getLocation().getOrderInContainer("-2306")); assertEquals(null, components.get(1).getLocation().getDataSetLocation()); List<IDatasetLocationNode> subComponents = new ArrayList<IDatasetLocationNode>(components.get(1).getComponents()); Collections.sort(subComponents, DATA_SET_LOCATION_NODE_COMPARATOR); assertEquals("-2302", subComponents.get(0).getLocation().getDataSetCode()); - assertEquals(new Integer(1), subComponents.get(0).getLocation().getOrderInContainer()); + assertEquals(new Integer(1), subComponents.get(0).getLocation().getOrderInContainer("-2304")); assertEquals("a/b/c/2302", subComponents.get(0).getLocation().getDataSetLocation()); assertEquals("-2303", subComponents.get(1).getLocation().getDataSetCode()); - assertEquals(new Integer(2), subComponents.get(1).getLocation().getOrderInContainer()); + assertEquals(new Integer(2), subComponents.get(1).getLocation().getOrderInContainer("-2304")); assertEquals("a/b/c/2303", subComponents.get(1).getLocation().getDataSetLocation()); assertEquals("-2305", components.get(2).getLocation().getDataSetCode()); - assertEquals(new Integer(2), components.get(2).getLocation().getOrderInContainer()); + assertEquals(new Integer(2), components.get(2).getLocation().getOrderInContainer("-2306")); assertEquals("a/b/c/2305", components.get(2).getLocation().getDataSetLocation()); assertEquals("[]", components.get(2).getComponents().toString()); diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/DatasetListerTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/DatasetListerTest.java index 9ecb4c11b4b..b3c4e946a5f 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/DatasetListerTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/DatasetListerTest.java @@ -290,7 +290,7 @@ public class DatasetListerTest extends AbstractDAOTest PhysicalDataSet dataset1 = datasets.get(1).tryGetAsDataSet(); assertNotNull(dataset1); - assertEquals(2, (int) dataset1.getOrderIn(containerDataSet.getCode())); + assertEquals(2, (int) dataset1.getOrderInContainer(containerDataSet.getCode())); assertEquals(dataset1.getContainerDataSets().get(0), containerDataSet); } diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ExternalDataLocationNodeTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ExternalDataLocationNodeTest.java index db471d61738..f4574bc5ba9 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ExternalDataLocationNodeTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ExternalDataLocationNodeTest.java @@ -34,10 +34,10 @@ public class ExternalDataLocationNodeTest extends AssertJUnit @Test public void test() { - ContainerDataSetBuilder rootContainer = new ContainerDataSetBuilder().code("c1"); + ContainerDataSetBuilder rootContainer = new ContainerDataSetBuilder(1).code("c1"); DataStore store = new DataStoreBuilder("DSS").getStore(); rootContainer.component(new DataSetBuilder().code("p1").store(store).location("a/b/c/1").getDataSet()); - ContainerDataSetBuilder subContainer = new ContainerDataSetBuilder().code("c2"); + ContainerDataSetBuilder subContainer = new ContainerDataSetBuilder(2).code("c2"); PhysicalDataSet component2 = new DataSetBuilder().code("p2").store(store).location("a/b/c/2").getDataSet(); subContainer.component(component2); subContainer.component(new DataSetBuilder().code("p3").store(store).location("a/b/c/3").getDataSet()); @@ -52,18 +52,18 @@ public class ExternalDataLocationNodeTest extends AssertJUnit assertEquals("p1", components.get(1).getLocation().getDataSetCode()); assertEquals("DSS", components.get(1).getLocation().getDataStoreCode()); assertEquals("a/b/c/1", components.get(1).getLocation().getDataSetLocation()); - assertEquals(0, components.get(1).getLocation().getOrderInContainer().intValue()); + assertEquals(0, components.get(1).getLocation().getOrderInContainer("c1").intValue()); assertEquals("p2", components.get(2).getLocation().getDataSetCode()); assertEquals("a/b/c/2", components.get(2).getLocation().getDataSetLocation()); - assertEquals(2, components.get(2).getLocation().getOrderInContainer().intValue()); + assertEquals(2, components.get(2).getLocation().getOrderInContainer("c1").intValue()); assertEquals(3, components.size()); components = new ArrayList<IDatasetLocationNode>(components.get(0).getComponents()); assertEquals("p2", components.get(0).getLocation().getDataSetCode()); assertEquals("a/b/c/2", components.get(0).getLocation().getDataSetLocation()); - assertEquals(0, components.get(0).getLocation().getOrderInContainer().intValue()); + assertEquals(0, components.get(0).getLocation().getOrderInContainer("c2").intValue()); assertEquals("p3", components.get(1).getLocation().getDataSetCode()); assertEquals("a/b/c/3", components.get(1).getLocation().getDataSetLocation()); - assertEquals(1, components.get(1).getLocation().getOrderInContainer().intValue()); + assertEquals(1, components.get(1).getLocation().getOrderInContainer("c2").intValue()); assertEquals(2, components.size()); } } diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/base/matcher/ExternalDataHasContainerMatcher.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/base/matcher/ExternalDataHasContainerMatcher.java index 0c1d7d769d9..6be3efc37fb 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/base/matcher/ExternalDataHasContainerMatcher.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/base/matcher/ExternalDataHasContainerMatcher.java @@ -57,7 +57,7 @@ public class ExternalDataHasContainerMatcher extends TypeSafeMatcher<AbstractExt String containerCode = container.getCode(); if (expectedContainer.getCode().equals(containerCode)) { - Integer order = actual.getOrderIn(containerCode); + Integer order = actual.getOrderInContainer(containerCode); return expectedOrder == null || expectedOrder.equals(order); } } diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/ScreeningUtils.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/ScreeningUtils.java index ed3c49cd2bc..8619b91e9e0 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/ScreeningUtils.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/ScreeningUtils.java @@ -216,8 +216,8 @@ public class ScreeningUtils private static <T extends DataPE> boolean isContainerMatching(T dataset, String... datasetTypeCodePatterns) { - DataPE container = dataset.getContainer(); - return container != null && isOneOfTypesMatching(container, datasetTypeCodePatterns); + List<DataPE> containers = dataset.getContainers(); + return containers.isEmpty() == false && isOneOfTypesMatching(containers.get(0), datasetTypeCodePatterns); } private static boolean isNotEmpty(AbstractExternalData dataset) -- GitLab