diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/samplelister/SampleListingWorker.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/samplelister/SampleListingWorker.java index 0c4b28629792da01bc2040c5a7e0e7d87e265246..0d3b66fc8b00649ff2f62e1acaaa1334eb2b60e0 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/samplelister/SampleListingWorker.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/samplelister/SampleListingWorker.java @@ -53,10 +53,7 @@ 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.Space; import ch.systemsx.cisd.openbis.generic.shared.dto.CodeConverter; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.DatabaseInstanceIdentifier; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.GroupIdentifier; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.IdentifierHelper; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier; /** * A business worker object for fast sample listing. It has only one interface method, which is @@ -626,17 +623,21 @@ final class SampleListingWorker extends AbstractLister private void setSpace(final Sample sample, final Space space) { sample.setSpace(space); - final GroupIdentifier groupId = - new GroupIdentifier(databaseInstance.getCode(), space.getCode()); - sample.setIdentifier(new SampleIdentifier(groupId, sample.getCode()).toString()); + // final DatabaseInstanceIdentifier dbId = + // databaseInstance.isHomeDatabase() ? DatabaseInstanceIdentifier.HOME_INSTANCE + // : new DatabaseInstanceIdentifier(databaseInstance.getCode()); + // final GroupIdentifier groupId = new GroupIdentifier(dbId, space.getCode()); + sample.setIdentifier(IdentifierHelper.createSampleIdentifier(sample).toString()); } private void setDatabaseInstance(final Sample sample) { sample.setDatabaseInstance(databaseInstance); - final DatabaseInstanceIdentifier dbId = - new DatabaseInstanceIdentifier(databaseInstance.getCode()); - sample.setIdentifier(new SampleIdentifier(dbId, sample.getCode()).toString()); + // final DatabaseInstanceIdentifier dbId = + // databaseInstance.isHomeDatabase() ? DatabaseInstanceIdentifier.HOME_INSTANCE + // : new DatabaseInstanceIdentifier(databaseInstance.getCode()); + sample.setIdentifier(IdentifierHelper.createSampleIdentifier(sample).toString()); + // new SampleIdentifier(dbId, sample.getCode()).toString()); } private void addRelatedContainerSampleToRequested(long containerId) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/DatabaseInstance.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/DatabaseInstance.java index 372d11523cfb1eeb88eb2221d0758b87f016494e..babaf51fded03a2dbbefde1afd84e4be4fb6e6ae 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/DatabaseInstance.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/DatabaseInstance.java @@ -29,6 +29,8 @@ public class DatabaseInstance extends Code<DatabaseInstance> private String identifier; + private boolean isHomeDatabase; + public final String getUuid() { return uuid; @@ -58,4 +60,14 @@ public class DatabaseInstance extends Code<DatabaseInstance> { this.id = id; } + + public boolean isHomeDatabase() + { + return isHomeDatabase; + } + + public void setHomeDatabase(boolean isHomeDatabase) + { + this.isHomeDatabase = isHomeDatabase; + } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/identifier/IdentifierHelper.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/identifier/IdentifierHelper.java index 2378232204722e955d2974b3bc8dd0e3e571b5d1..cbd7058413cece0daec0b4b22fa5a15b643144c4 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/identifier/IdentifierHelper.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/identifier/IdentifierHelper.java @@ -108,13 +108,17 @@ public final class IdentifierHelper final Space space = sample.getSpace(); if (space != null) { + DatabaseInstanceIdentifier instanceIdentifier = + space.getInstance().isHomeDatabase() ? DatabaseInstanceIdentifier.HOME_INSTANCE + : new DatabaseInstanceIdentifier(space.getInstance().getCode()); GroupIdentifier groupIdentifier = - new GroupIdentifier(space.getInstance().getCode(), space.getCode()); + new GroupIdentifier(instanceIdentifier, space.getCode()); return new SampleIdentifier(groupIdentifier, sample.getCode()); } else { DatabaseInstanceIdentifier instanceIdentifier = - new DatabaseInstanceIdentifier(sample.getDatabaseInstance().getCode()); + (sample.getDatabaseInstance().isHomeDatabase()) ? DatabaseInstanceIdentifier.HOME_INSTANCE + : new DatabaseInstanceIdentifier(sample.getDatabaseInstance().getCode()); return new SampleIdentifier(instanceIdentifier, sample.getCode()); } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/DatabaseInstanceTranslator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/DatabaseInstanceTranslator.java index 0450e3780dcf1790267972d059121600207ad5ae..7e443982e0764548ac937c59d5766b81448aeb44 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/DatabaseInstanceTranslator.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/DatabaseInstanceTranslator.java @@ -44,6 +44,7 @@ public final class DatabaseInstanceTranslator result.setId(HibernateUtils.getId(databaseInstance)); result.setCode(databaseInstance.getCode()); result.setUuid(databaseInstance.getUuid()); + result.setHomeDatabase(databaseInstance.isOriginalSource()); result.setIdentifier(IdentifierHelper.createDatabaseInstanceIdentifier(databaseInstance) .toString()); return result; diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/api/v1/GeneralInformationServiceTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/api/v1/GeneralInformationServiceTest.java index 5b3214d1307472b5b8952e724784a10940298832..8587ae920c310ce94cbc1115db52631e81e1abba 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/api/v1/GeneralInformationServiceTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/api/v1/GeneralInformationServiceTest.java @@ -110,7 +110,7 @@ public class GeneralInformationServiceTest extends SystemTestCase sc.addMatchClause(MatchClause.createAttributeMatch(MatchClauseAttribute.CODE, "*")); List<Sample> result = generalInformationService.searchForSamples(sessionToken, sc); assertEquals(true, result.size() > 0); - String expectedSampleIdentifier = "CISD:/CISD/CL1"; + String expectedSampleIdentifier = "/CISD/CL1"; for (Sample sample : result) { if (expectedSampleIdentifier.equals(sample.getIdentifier())) diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/plugin/generic/SampleBrowsingTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/plugin/generic/SampleBrowsingTest.java index 3d1b4a8ce1bb11be54bc279dac0204c87139ef7c..ddd4007b7122d20b5dd125112158c1ff86ee2c83 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/plugin/generic/SampleBrowsingTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/plugin/generic/SampleBrowsingTest.java @@ -51,8 +51,6 @@ public class SampleBrowsingTest extends GenericSystemTestCase { private static final boolean DEBUG = false; - private static final String DEFAULT_INSTANCE = "CISD"; - private static final String DEFAULT_GROUP = "CISD"; private static final String DEFAULT_PLATE_GEOMETRY_VALUE = "384_WELLS_16X24"; @@ -94,10 +92,10 @@ public class SampleBrowsingTest extends GenericSystemTestCase // test that 3 parents of a 'REINFECT_PLATE' are loaded Sample s3 = getSample(list, createSampleIdentifier("RP1-A2X")); assertEquals("REINFECT_PLATE", s3.getSampleType().getCode()); - assertEquals("CISD:/CISD/CP1-A2", s3.getGeneratedFrom().getIdentifier()); - assertEquals("CISD:/CISD/DP1-A", s3.getGeneratedFrom().getGeneratedFrom().getIdentifier()); - assertEquals("CISD:/CISD/MP1-MIXED", s3.getGeneratedFrom().getGeneratedFrom() - .getGeneratedFrom().getIdentifier()); + assertEquals("/CISD/CP1-A2", s3.getGeneratedFrom().getIdentifier()); + assertEquals("/CISD/DP1-A", s3.getGeneratedFrom().getGeneratedFrom().getIdentifier()); + assertEquals("/CISD/MP1-MIXED", s3.getGeneratedFrom().getGeneratedFrom().getGeneratedFrom() + .getIdentifier()); } @Test @@ -170,7 +168,7 @@ public class SampleBrowsingTest extends GenericSystemTestCase Sample s = getSample(list, createSampleIdentifier("3VCP1")); assertNotNull(s.getInvalidation()); assertEquals("/CISD/NEMO/EXP1", s.getExperiment().getIdentifier()); - assertEquals("CISD:/CISD/3V-123", s.getGeneratedFrom().getIdentifier()); + assertEquals("/CISD/3V-123", s.getGeneratedFrom().getIdentifier()); assertNull(s.getGeneratedFrom().getGeneratedFrom()); } @@ -203,18 +201,17 @@ public class SampleBrowsingTest extends GenericSystemTestCase private static String createSampleIdentifier(String sampleCode) { - return createSampleIdentifier(DEFAULT_INSTANCE, DEFAULT_GROUP, sampleCode); + return createSampleIdentifier(DEFAULT_GROUP, sampleCode); } private static String createSharedSampleIdentifier(String sampleCode) { - return createSampleIdentifier(DEFAULT_INSTANCE, null, sampleCode); + return createSampleIdentifier(null, sampleCode); } - private static String createSampleIdentifier(String instanceCode, String spaceCode, - String sampleCode) + private static String createSampleIdentifier(String spaceCode, String sampleCode) { - return instanceCode + ":/" + (spaceCode == null ? "" : spaceCode + "/") + sampleCode; + return "/" + (spaceCode == null ? "" : spaceCode + "/") + sampleCode; } private SampleType getAllSampleType()