diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/v1/DataSet.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/v1/DataSet.java index 87a599a82936aa48e55632e3095ceca675b2ec47..0310df4a857ac242106c8d7cca2e84e4dfc3a765 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/v1/DataSet.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/v1/DataSet.java @@ -32,6 +32,7 @@ import ch.systemsx.cisd.common.api.retry.RetryProxyFactory; import ch.systemsx.cisd.common.exceptions.InvalidSessionException; import ch.systemsx.cisd.openbis.dss.generic.shared.api.v1.FileInfoDssDTO; import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.DataSet.Connections; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalDataManagementSystem; /** * A class that provides uniform access to data set metadata (from the openBIS AS) and data (from @@ -195,6 +196,15 @@ public class DataSet return getMetadata().getExternalDataSetLink(); } + /** + * @see ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.DataSet#getExternalDataManagementSystem() + */ + @Retry + public ExternalDataManagementSystem getExternalDataManagementSystem() + { + return getMetadata().getExternalDataManagementSystem(); + } + /** * @see ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.DataSet#getContainedDataSets() */ diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Dict.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Dict.java index 16fc8cf5dc0c3493f4553ba7090bd1c64ef8f825..c20d0ae5c3cb123ddaebc1861979d5b9c390c492 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Dict.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Dict.java @@ -669,8 +669,16 @@ public abstract class Dict public static final String LINKED_DATA_SET = "linked_data_set"; - public static final String LINKED_DATA_SET_URL_NOT_AVAILABLE_MSG = - "linked_data_set_url_not_available"; + public static final String LINKED_DATA_SET_INFO = "linked_data_set_info"; + + public static final String LINKED_DATA_SET_CODE = "linked_data_set_code"; + + public static final String LINKED_DATA_SET_DMS = "linked_data_set_dms"; + + public static final String LINKED_DATA_SET_LINK = "linked_data_set_link"; + + public static final String LINKED_DATA_SET_LINK_NOT_AVAILABLE_MSG = + "linked_data_set_link_not_available"; // // Sample Registration diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/fetchoptions/datasetlister/DataSetLister.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/fetchoptions/datasetlister/DataSetLister.java index 490f842d6de80f52297f1b61a9957e9361c4afb4..70b7d822a77be16d798a8c3688d876481eb0be68 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/fetchoptions/datasetlister/DataSetLister.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/fetchoptions/datasetlister/DataSetLister.java @@ -34,9 +34,10 @@ import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.DataSetFetchOption; import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.DataSetFetchOptions; import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.EntityRegistrationDetails; import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.EntityRegistrationDetails.EntityRegistrationDetailsInitializer; -import ch.systemsx.cisd.openbis.generic.shared.basic.BasicConstant; -import ch.systemsx.cisd.openbis.generic.shared.basic.BasicURLEncoder; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetKind; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseInstance; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalDataManagementSystem; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.LinkDataSetUrl; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.DatabaseInstanceIdentifier; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifier; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.IdentifierHelper; @@ -175,10 +176,24 @@ public class DataSetLister implements IDataSetLister if (initializer.isLinkDataSet()) { initializer.setExternalDataSetCode(dataSet.ld_external_code); - initializer.setExternalDataSetLink(dataSet.edms_url_template == null ? null - : dataSet.edms_url_template.replaceAll( - BasicConstant.EXTERNAL_DMS_URL_TEMPLATE_CODE_PATTERN, - BasicURLEncoder.encode(dataSet.ld_external_code))); + LinkDataSetUrl linkDataSetUrl = + new LinkDataSetUrl(dataSet.ld_external_code, dataSet.edms_url_template); + initializer.setExternalDataSetLink(linkDataSetUrl.toString()); + + DatabaseInstance db = new DatabaseInstance(); + db.setId(dataSet.die_id); + db.setCode(dataSet.die_code); + db.setUuid(dataSet.die_uuid); + db.setHomeDatabase(dataSet.die_is_original_source); + + ExternalDataManagementSystem edms = new ExternalDataManagementSystem(); + edms.setId(dataSet.edms_id); + edms.setCode(dataSet.edms_code); + edms.setLabel(dataSet.edms_label); + edms.setUrlTemplate(dataSet.edms_url_template); + edms.setDatabaseInstance(db); + edms.setOpenBIS(dataSet.edms_is_openbis); + initializer.setExternalDataManagementSystem(edms); } initializer.setRegistrationDetails(createDataSetRegistrationDetails(dataSet)); initializer.setExperimentIdentifier(experimentIdentifier.toString()); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/fetchoptions/datasetlister/DataSetRecord.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/fetchoptions/datasetlister/DataSetRecord.java index 9c8ceef58f8640dffd86bfe88b822a7fcfcfe15a..ed9c22a20cd3b40f3716818c36710c3c4f2f4992 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/fetchoptions/datasetlister/DataSetRecord.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/fetchoptions/datasetlister/DataSetRecord.java @@ -66,12 +66,24 @@ public class DataSetRecord public String sps_code; + public Long die_id; + public String die_code; + public String die_uuid; + public Boolean die_is_original_source; public String ld_external_code; + public Long edms_id; + + public String edms_code; + + public String edms_label; + public String edms_url_template; + public Boolean edms_is_openbis; + } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/fetchoptions/datasetlister/IDataSetListingQuery.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/fetchoptions/datasetlister/IDataSetListingQuery.java index 33b81614895aff4dc896188cecfd5906819e6f5b..67ee0e2aab01cb06af97d7a4be1061ddeed3b9fd 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/fetchoptions/datasetlister/IDataSetListingQuery.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/fetchoptions/datasetlister/IDataSetListingQuery.java @@ -41,8 +41,8 @@ public interface IDataSetListingQuery extends BaseQuery + " pe.first_name as pe_first_name, pe.last_name as pe_last_name, pe.email as pe_email, pe.user_id as pe_user_id," + " mod.first_name as mod_first_name, mod.last_name as mod_last_name, mod.email as mod_email, mod.user_id as mod_user_id," + " pre.code as pre_code, spe.code as spe_code, sps.code as sps_code," - + " die.code as die_code, die.is_original_source as die_is_original_source," - + " ld.external_code as ld_external_code, edms.url_template as edms_url_template" + + " die.id as die_id, die.code as die_code, die.uuid as die_uuid, die.is_original_source as die_is_original_source," + + " ld.external_code as ld_external_code, edms.id as edms_id, edms.code as edms_code, edms.label as edms_label, edms.url_template as edms_url_template, edms.is_openbis as edms_is_openbis" + " from data ds inner join data_set_types dt on ds.dsty_id = dt.id" + " inner join experiments ex on ds.expe_id = ex.id" + " left outer join link_data ld on ds.id = ld.data_id" diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/Translator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/Translator.java index 4936515df4613ffab48988c46bfda01f82e1dc80..9e9984bf20bef4f28c3f8592d868ee29e3576086 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/Translator.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/Translator.java @@ -53,8 +53,6 @@ import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SampleFetchOption; import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.Vocabulary; import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.Vocabulary.VocabularyInitializer; import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.VocabularyTerm; -import ch.systemsx.cisd.openbis.generic.shared.basic.BasicConstant; -import ch.systemsx.cisd.openbis.generic.shared.basic.BasicURLEncoder; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.CodeWithRegistration; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.CodeWithRegistrationAndModificationDate; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ContainerDataSet; @@ -62,6 +60,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataTypeCode; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; 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.Person; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleWithHierarchy.RoleCode; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleWithHierarchy.RoleLevel; @@ -367,12 +366,10 @@ public class Translator { LinkDataSet linkDataSet = externalDatum.tryGetAsLinkDataSet(); initializer.setExternalDataSetCode(linkDataSet.getExternalCode()); - initializer.setExternalDataSetLink(linkDataSet.getExternalDataManagementSystem() - .getUrlTemplate() == null ? null : linkDataSet - .getExternalDataManagementSystem() - .getUrlTemplate() - .replaceAll(BasicConstant.EXTERNAL_DMS_URL_TEMPLATE_CODE_PATTERN, - BasicURLEncoder.encode(linkDataSet.getExternalCode()))); + LinkDataSetUrl linkDataSetUrl = new LinkDataSetUrl(linkDataSet); + initializer.setExternalDataSetLink(linkDataSetUrl.toString()); + initializer.setExternalDataManagementSystem(linkDataSet + .getExternalDataManagementSystem()); } initializer.setRetrievedConnections(connectionsToGet); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/LinkDataSetUrl.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/LinkDataSetUrl.java index 7357f1a5690136d1249ca9c2a907c61373431384..cf7930580003aadc3d10b20511a14c3c840a0542 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/LinkDataSetUrl.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/LinkDataSetUrl.java @@ -25,11 +25,27 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.BasicURLEncoder; public class LinkDataSetUrl { - private LinkDataSet dataset; + private String externalCode; + + private String urlTemplate; + + public LinkDataSetUrl(String externalCode, String urlTemplate) + { + this.externalCode = externalCode; + this.urlTemplate = urlTemplate; + } public LinkDataSetUrl(LinkDataSet dataset) { - this.dataset = dataset; + if (dataset == null) + { + throw new IllegalArgumentException("Dataset cannot be null"); + } + externalCode = dataset.getExternalCode(); + if (dataset.getExternalDataManagementSystem() != null) + { + urlTemplate = dataset.getExternalDataManagementSystem().getUrlTemplate(); + } } protected String maybeUnescape(String str) @@ -40,15 +56,13 @@ public class LinkDataSetUrl @Override public String toString() { - if (dataset.getExternalCode() != null && dataset.getExternalDataManagementSystem() != null - && dataset.getExternalDataManagementSystem().getUrlTemplate() != null) + if (externalCode != null && urlTemplate != null) { - String externalCode = maybeUnescape(dataset.getExternalCode()); - String urlTemplate = - maybeUnescape(dataset.getExternalDataManagementSystem().getUrlTemplate()); + String anExternalCode = maybeUnescape(externalCode); + String aUrlTemplate = maybeUnescape(urlTemplate); - return urlTemplate.replaceAll(BasicConstant.EXTERNAL_DMS_URL_TEMPLATE_CODE_PATTERN, - BasicURLEncoder.encode(externalCode)); + return aUrlTemplate.replaceAll(BasicConstant.EXTERNAL_DMS_URL_TEMPLATE_CODE_PATTERN, + BasicURLEncoder.encode(anExternalCode)); } else { return null; 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 64827ab52c56b381a1ca6b660f9125355ba4c3b0..8942d729b5f1c0e20c093368566fda872aa11921 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 @@ -86,11 +86,11 @@ public class DataSetPropertiesPanel extends ContentPanel if (dataset.isLinkData()) { - LinkDataSetAnchor anchor = - LinkDataSetAnchor.tryCreateWithExternalCodeAsText(dataset.tryGetAsLinkDataSet()); + LinkDataSetAnchor anchor = LinkDataSetAnchor.tryCreate(dataset.tryGetAsLinkDataSet()); if (anchor != null) { + anchor.setHTML(dataset.tryGetAsLinkDataSet().getExternalCode()); properties.put(messageProvider.getMessage(Dict.LINKED_DATA_SET), anchor); } else { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/LinkDataSetAnchor.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/LinkDataSetAnchor.java index bb020a8f31b40176003854e72c966e94dd057ea9..ef6e11a4caee1299e34612ec3626adc9f376c50d 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/LinkDataSetAnchor.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/LinkDataSetAnchor.java @@ -34,21 +34,7 @@ public class LinkDataSetAnchor extends Anchor setTarget("_blank"); } - public static final LinkDataSetAnchor tryCreateWithExternalCodeAsText(LinkDataSet dataset) - { - String url = new UnescapingLinkDataSetUrl(dataset).toString(); - - if (url != null) - { - return new LinkDataSetAnchor(StringEscapeUtils.unescapeHtml(dataset.getExternalCode()), - url); - } else - { - return null; - } - } - - public static final LinkDataSetAnchor tryCreateWithUrlAsText(LinkDataSet dataset) + public static final LinkDataSetAnchor tryCreate(LinkDataSet dataset) { String url = new UnescapingLinkDataSetUrl(dataset).toString(); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/LinkDataViewSection.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/LinkDataViewSection.java index 1a360f7f0ee6c557ecca01421c413370aff1066c..eddac440412aa9a7797879088aabf5979954240e 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/LinkDataViewSection.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/LinkDataViewSection.java @@ -16,14 +16,17 @@ package ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.dataset; +import com.google.gwt.user.client.ui.FlowPanel; +import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.Panel; -import com.google.gwt.user.client.ui.SimplePanel; +import com.google.gwt.user.client.ui.Widget; import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict; import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; import ch.systemsx.cisd.openbis.generic.client.web.client.application.TabContent; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DisplayTypeIDGenerator; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.lang.StringEscapeUtils; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.LinkDataSet; /** @@ -43,20 +46,68 @@ public class LinkDataViewSection extends TabContent @Override protected void showContent() { - Panel content = new SimplePanel(); + Panel content = new FlowPanel(); content.setStyleName("linkDataViewContent"); + content.add(createInfoWidget()); + content.add(createCodeWidget()); + content.add(createDmsWidget()); + content.add(createLinkWidget()); + add(content); + + } + + private Widget createInfoWidget() + { + Label label = new Label(viewContext.getMessage(Dict.LINKED_DATA_SET_INFO)); + label.addStyleName("linkDataViewInfo"); + return label; + } + + private Widget createCodeWidget() + { + Label label = new Label(viewContext.getMessage(Dict.LINKED_DATA_SET_CODE)); + label.addStyleName("linkDataViewLabel"); + Label value = new Label(StringEscapeUtils.unescapeHtml(dataset.getExternalCode())); + + Panel panel = new HorizontalPanel(); + panel.add(label); + panel.add(value); + return panel; + } - LinkDataSetAnchor anchor = LinkDataSetAnchor.tryCreateWithUrlAsText(dataset); + private Widget createDmsWidget() + { + Label label = new Label(viewContext.getMessage(Dict.LINKED_DATA_SET_DMS)); + label.addStyleName("linkDataViewLabel"); + Label value = + new Label(StringEscapeUtils.unescapeHtml(dataset.getExternalDataManagementSystem() + .getLabel()) + + " (" + + StringEscapeUtils.unescapeHtml(dataset.getExternalDataManagementSystem() + .getCode()) + ")"); + + Panel panel = new HorizontalPanel(); + panel.add(label); + panel.add(value); + return panel; + } + + private Widget createLinkWidget() + { + LinkDataSetAnchor anchor = LinkDataSetAnchor.tryCreate(dataset); if (anchor != null) { - content.add(anchor); + Label label = new Label(viewContext.getMessage(Dict.LINKED_DATA_SET_LINK)); + label.addStyleName("linkDataViewLabel"); + + Panel panel = new HorizontalPanel(); + panel.add(label); + panel.add(anchor); + return panel; } else { - content.add(new Label(viewContext - .getMessage(Dict.LINKED_DATA_SET_URL_NOT_AVAILABLE_MSG))); + return new Label(viewContext.getMessage(Dict.LINKED_DATA_SET_LINK_NOT_AVAILABLE_MSG)); } - - add(content); } } 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 79c67b3f7fe041da76bd61905cf5e64aa6a0d7d4..c86cdd3df4300c4443b17364fd6fe69ee1e6a2d2 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 @@ -744,7 +744,11 @@ var common = { processing_info_msg: "'{0}' has been scheduled successfully. Email will be send to you when it is finished.", dataset_not_available_msg: "Data Set {0} is {1}. You can not perform any operation using its data.", linked_data_set: "Linked Data Set", - linked_data_set_url_not_available: "A link to an external DMS is not available.", + linked_data_set_info: "This is a linked data set", + linked_data_set_code: "External Code: ", + linked_data_set_dms: "External DMS: ", + linked_data_set_link: "Link: ", + linked_data_set_link_not_available: "Link: not available", // // Material Browser diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/public/css/openbis.css b/openbis/source/java/ch/systemsx/cisd/openbis/public/css/openbis.css index a3797d82eab0400d2a27a4c889cf0de65f1c9a7b..cdaf17cfa8e0e422f60271bad4b417d4e0d8563a 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/public/css/openbis.css +++ b/openbis/source/java/ch/systemsx/cisd/openbis/public/css/openbis.css @@ -305,3 +305,12 @@ body,div,td,.default-text { .linkDataViewContent { margin: 10px; } + +.linkDataViewInfo { + font-weight: bold; + margin-bottom: 5px; +} + +.linkDataViewLabel { + margin-right: 5px; +} diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/fetchoptions/datasetlister/DataSetListerTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/fetchoptions/datasetlister/DataSetListerTest.java index 7595e78cae9001a89d86e3eb1bfdfafb2d5c8fb8..aa7e866f37b2c2b7f20eefd8c9fe655980e40f01 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/fetchoptions/datasetlister/DataSetListerTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/fetchoptions/datasetlister/DataSetListerTest.java @@ -43,6 +43,8 @@ import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.DataSet; import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.DataSetFetchOption; import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.DataSetFetchOptions; import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.EntityRegistrationDetails; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseInstance; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalDataManagementSystem; /** * Test cases for {@link IDataSetListingQuery}. @@ -175,6 +177,32 @@ public class DataSetListerTest extends AbstractDAOTest assertEquals("http://example.edms.pl/code=CODE1", results.get(0).getExternalDataSetLink()); assertEquals("http://example.edms.pl/code=CODE2", results.get(1).getExternalDataSetLink()); assertEquals("http://www.openbis.ch/perm_id=CODE3", results.get(2).getExternalDataSetLink()); + + DatabaseInstance db = new DatabaseInstance(); + db.setId(1L); + db.setCode("CISD"); + db.setUuid("57F0FA8F-80AC-42AB-9C6A-AAADBCC37A3E"); + db.setHomeDatabase(true); + + ExternalDataManagementSystem dms1 = new ExternalDataManagementSystem(); + dms1.setId(1L); + dms1.setCode("DMS_1"); + dms1.setLabel("Test EDMS"); + dms1.setOpenBIS(false); + dms1.setUrlTemplate("http://example.edms.pl/code=$code$"); + dms1.setDatabaseInstance(db); + + ExternalDataManagementSystem dms2 = new ExternalDataManagementSystem(); + dms2.setId(2L); + dms2.setCode("DMS_2"); + dms2.setLabel("Test External openBIS instance"); + dms2.setOpenBIS(true); + dms2.setUrlTemplate("http://www.openbis.ch/perm_id=$code$"); + dms2.setDatabaseInstance(db); + + assertEqualsToExternalDMS(dms1, results.get(0).getExternalDataManagementSystem()); + assertEqualsToExternalDMS(dms1, results.get(1).getExternalDataManagementSystem()); + assertEqualsToExternalDMS(dms2, results.get(2).getExternalDataManagementSystem()); } private static void sortDataSetsByCode(List<DataSet> dataSets) @@ -266,4 +294,35 @@ public class DataSetListerTest extends AbstractDAOTest } } + + private void assertEqualsToExternalDMS(ExternalDataManagementSystem expected, + ExternalDataManagementSystem actual) + { + assertFalse(expected == null ^ actual == null); + + if (expected != null && actual != null) + { + assertEquals(expected.getId(), actual.getId()); + assertEquals(expected.getCode(), actual.getCode()); + assertEquals(expected.getLabel(), actual.getLabel()); + assertEquals(expected.getUrlTemplate(), actual.getUrlTemplate()); + assertEquals(expected.isOpenBIS(), actual.isOpenBIS()); + assertEqualsToDatabaseInstance(expected.getDatabaseInstance(), + actual.getDatabaseInstance()); + } + } + + private void assertEqualsToDatabaseInstance(DatabaseInstance expected, DatabaseInstance actual) + { + assertFalse(expected == null ^ actual == null); + + if (expected != null && actual != null) + { + assertEquals(expected.getId(), actual.getId()); + assertEquals(expected.getCode(), actual.getCode()); + assertEquals(expected.getIdentifier(), actual.getIdentifier()); + assertEquals(expected.getUuid(), actual.getUuid()); + } + } + } \ No newline at end of file diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/TranslatorTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/TranslatorTest.java index 1a278005778a5187de5ef6bec0a8dd2c58f00d96..54f76f7dda73db112919b50b25a593a454bf10ff 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/TranslatorTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/TranslatorTest.java @@ -233,6 +233,7 @@ public class TranslatorTest extends AssertJUnit assertTrue(translated.isLinkDataSet()); assertEquals(dsLink.getLinkDataSet().getExternalCode(), translated.getExternalDataSetCode()); assertEquals("http://www.EX_CODE.ch", translated.getExternalDataSetLink()); + assertEquals(edms, translated.getExternalDataManagementSystem()); } private void assertBasicAttributes( diff --git a/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/DataSet.java b/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/DataSet.java index b4051badc50c096d95de5da342e4e8d9e7db5038..9e988cd819148844921399f95b21d16d48cc43ea 100644 --- a/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/DataSet.java +++ b/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/DataSet.java @@ -33,6 +33,7 @@ import org.apache.commons.lang.builder.ToStringStyle; import com.fasterxml.jackson.annotation.JsonIgnore; import ch.systemsx.cisd.base.annotation.JsonObject; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalDataManagementSystem; /** * Immutable value object representing a data set. @@ -75,6 +76,8 @@ public final class DataSet implements Serializable private String externalDataSetLink; + private ExternalDataManagementSystem externalDataManagementSystem; + private EnumSet<Connections> retrievedConnections = EnumSet.noneOf(Connections.class); private List<String> parentCodes = Collections.emptyList(); @@ -229,6 +232,17 @@ public final class DataSet implements Serializable { this.externalDataSetLink = externalDataSetLink; } + + public ExternalDataManagementSystem getExternalDataManagementSystem() + { + return externalDataManagementSystem; + } + + public void setExternalDataManagementSystem( + ExternalDataManagementSystem externalDataManagementSystem) + { + this.externalDataManagementSystem = externalDataManagementSystem; + } } private String code; @@ -247,6 +261,8 @@ public final class DataSet implements Serializable private String externalDataSetLink; + private ExternalDataManagementSystem externalDataManagementSystem; + private HashMap<String, String> properties; // For handling connections to entities @@ -294,7 +310,7 @@ public final class DataSet implements Serializable this.linkDataSet = initializer.isLinkDataSet(); this.externalDataSetCode = initializer.getExternalDataSetCode(); this.externalDataSetLink = initializer.getExternalDataSetLink(); - + this.externalDataManagementSystem = initializer.getExternalDataManagementSystem(); } /** @@ -417,6 +433,11 @@ public final class DataSet implements Serializable return externalDataSetLink; } + public ExternalDataManagementSystem getExternalDataManagementSystem() + { + return externalDataManagementSystem; + } + public List<DataSet> getContainedDataSets() { return containedDataSets; @@ -535,6 +556,12 @@ public final class DataSet implements Serializable this.externalDataSetLink = externalDataSetLink; } + private void setExternalDataManagementSystem( + ExternalDataManagementSystem externalDataManagementSystem) + { + this.externalDataManagementSystem = externalDataManagementSystem; + } + private void setContainedDataSets(List<DataSet> containedDataSets) { this.containedDataSets = containedDataSets; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ExternalDataManagementSystem.java b/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ExternalDataManagementSystem.java similarity index 95% rename from openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ExternalDataManagementSystem.java rename to openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ExternalDataManagementSystem.java index 57d71ca4f4fe2e3c9b312474ab8f58b5dcecf6b8..372be096d712175f7aace78e816f7d3bb084a67f 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ExternalDataManagementSystem.java +++ b/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ExternalDataManagementSystem.java @@ -18,9 +18,12 @@ package ch.systemsx.cisd.openbis.generic.shared.basic.dto; import java.io.Serializable; +import ch.systemsx.cisd.base.annotation.JsonObject; + /** * @author Pawel Glyzewski */ +@JsonObject("ExternalDataManagementSystem") public class ExternalDataManagementSystem extends Code<ExternalDataManagementSystem> implements Serializable {