From 49a64df74b99721b0f702c74db4faaf1615c84c3 Mon Sep 17 00:00:00 2001 From: buczekp <buczekp> Date: Wed, 9 Mar 2011 20:28:43 +0000 Subject: [PATCH] [LMS-1979] allow to change text of displayed entity links and load sample's permId by code SVN: 20275 --- .../EntityInformationProvider.java | 49 ++++++++++++++++--- .../SimpleTableModelBuilderAdaptor.java | 17 +++++-- .../api/IEntityInformationProvider.java | 12 +++++ .../api/IRowBuilderAdaptor.java | 17 +++++-- 4 files changed, 80 insertions(+), 15 deletions(-) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/managed_property/EntityInformationProvider.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/managed_property/EntityInformationProvider.java index b0ff3aa9165..fa17d2b22ff 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/managed_property/EntityInformationProvider.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/managed_property/EntityInformationProvider.java @@ -19,12 +19,18 @@ package ch.systemsx.cisd.openbis.generic.server.business.bo.managed_property; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException; import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory; import ch.systemsx.cisd.openbis.generic.shared.ResourceNames; import ch.systemsx.cisd.openbis.generic.shared.basic.IIdentifierHolder; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MaterialIdentifier; +import ch.systemsx.cisd.openbis.generic.shared.dto.DatabaseInstancePE; import ch.systemsx.cisd.openbis.generic.shared.dto.MaterialPE; +import ch.systemsx.cisd.openbis.generic.shared.dto.SamplePE; +import ch.systemsx.cisd.openbis.generic.shared.dto.SpacePE; +import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier; +import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifierFactory; import ch.systemsx.cisd.openbis.generic.shared.managed_property.EntityLinkElementTranslator; import ch.systemsx.cisd.openbis.generic.shared.managed_property.api.IEntityInformationProvider; import ch.systemsx.cisd.openbis.generic.shared.managed_property.api.IEntityLinkElement; @@ -35,7 +41,6 @@ import ch.systemsx.cisd.openbis.generic.shared.managed_property.api.IEntityLinkE @Component(value = ResourceNames.ENTITY_INFORMATION_PROVIDER) public class EntityInformationProvider implements IEntityInformationProvider { - // @Autowired private final IDAOFactory daoFactory; @Autowired @@ -45,6 +50,14 @@ public class EntityInformationProvider implements IEntityInformationProvider this.daoFactory = daoFactory; } + public String getIdentifier(IEntityLinkElement entityLink) + { + final EntityKind entityKind = + EntityLinkElementTranslator.translate(entityLink.getEntityLinkKind()); + final String permId = entityLink.getPermId(); + return getIdentifier(entityKind, permId); + } + private String getIdentifier(EntityKind entityKind, String permId) { IIdentifierHolder identifierHolderOrNull = null; @@ -89,12 +102,36 @@ public class EntityInformationProvider implements IEntityInformationProvider return identifierHolderOrNull == null ? null : identifierHolderOrNull.getIdentifier(); } - public String getIdentifier(IEntityLinkElement entityLink) + public String getSamplePermId(String spaceCode, String sampleCode) { - final EntityKind entityKind = - EntityLinkElementTranslator.translate(entityLink.getEntityLinkKind()); - final String permId = entityLink.getPermId(); - return getIdentifier(entityKind, permId); + DatabaseInstancePE homeInstance = daoFactory.getDatabaseInstanceDAO().getHomeInstance(); + SpacePE space = + daoFactory.getSpaceDAO().tryFindSpaceByCodeAndDatabaseInstance(spaceCode, + homeInstance); + if (space == null) + { + throw new UserFailureException("space " + spaceCode + " doesn't exist"); + } + SamplePE sample = daoFactory.getSampleDAO().tryFindByCodeAndSpace(sampleCode, space); + return (sample != null) ? sample.getPermId() : null; + } + + public String getSamplePermId(String sampleIdentifier) + { + SampleIdentifier identifier = SampleIdentifierFactory.parse(sampleIdentifier); + String sampleCode = identifier.getSampleCode(); + if (identifier.isSpaceLevel()) + { + String spaceCode = identifier.getSpaceLevel().getSpaceCode(); + return getSamplePermId(spaceCode, sampleCode); + } else + { + DatabaseInstancePE homeInstance = daoFactory.getDatabaseInstanceDAO().getHomeInstance(); + SamplePE sample = + daoFactory.getSampleDAO().tryFindByCodeAndDatabaseInstance(sampleCode, + homeInstance); + return (sample != null) ? sample.getPermId() : null; + } } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/managed_property/SimpleTableModelBuilderAdaptor.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/managed_property/SimpleTableModelBuilderAdaptor.java index 608bece4b35..91ba4deb46b 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/managed_property/SimpleTableModelBuilderAdaptor.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/managed_property/SimpleTableModelBuilderAdaptor.java @@ -111,18 +111,27 @@ public class SimpleTableModelBuilderAdaptor implements ISimpleTableModelBuilderA public void setCell(String headerTitle, IEntityLinkElement value) { - row.setCell(headerTitle, asTableCell(value)); + row.setCell(headerTitle, asTableCell(value, null)); } - private EntityTableCell asTableCell(IEntityLinkElement value) + public void setCell(String headerTitle, IEntityLinkElement value, String linkText) + { + row.setCell(headerTitle, asTableCell(value, linkText)); + } + + private EntityTableCell asTableCell(IEntityLinkElement value, + String linkTextOrNull) { final EntityKind entityKind = EntityLinkElementTranslator.translate(value.getEntityLinkKind()); final String permId = value.getPermId(); final String identifierOrNull = tryExtractIdentifier(value); - return new EntityTableCell(entityKind, permId, identifierOrNull); - } + final EntityTableCell result = + new EntityTableCell(entityKind, permId, identifierOrNull); + result.setLinkText(linkTextOrNull); + return result; + } }; } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/managed_property/api/IEntityInformationProvider.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/managed_property/api/IEntityInformationProvider.java index 158fddfa33f..75f64702669 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/managed_property/api/IEntityInformationProvider.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/managed_property/api/IEntityInformationProvider.java @@ -31,4 +31,16 @@ public interface IEntityInformationProvider */ String getIdentifier(IEntityLinkElement entityLink); + /** + * @return permId of entity specified by given space and sample, <code>null</code> if such an + * entity doesn't exist + */ + String getSamplePermId(String spaceCode, String sampleCode); + + /** + * @return permId of entity specified by given identifier, <code>null</code> if such an entity + * doesn't exist + */ + String getSamplePermId(String sampleIdentifier); + } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/managed_property/api/IRowBuilderAdaptor.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/managed_property/api/IRowBuilderAdaptor.java index b58eb0b68d6..591de197394 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/managed_property/api/IRowBuilderAdaptor.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/managed_property/api/IRowBuilderAdaptor.java @@ -30,28 +30,35 @@ public interface IRowBuilderAdaptor { /** - * Sets the value of the column specified by the header title by the specified string. + * Sets the value of the column specified by the header title to the specified string. */ public void setCell(String headerTitle, String value); /** - * Sets the value of the column specified by the header title by the specified long value. + * Sets the value of the column specified by the header title to the specified long value. */ public void setCell(String headerTitle, long value); /** - * Sets the value of the column specified by the header title by the specified double value. + * Sets the value of the column specified by the header title to the specified double value. */ public void setCell(String headerTitle, double value); /** - * Sets the value of the column specified by the header title by the specified date. + * Sets the value of the column specified by the header title to the specified date. */ public void setCell(String headerTitle, Date value); /** - * Sets the value of the column specified by the header title by the specified entity link. + * Sets the value of the column specified by the header title to the specified entity link + * rendered using identifier. */ public void setCell(String headerTitle, IEntityLinkElement value); + /** + * Sets the value of the column specified by the header title to the specified entity link + * rendered using given text. + */ + public void setCell(String headerTitle, IEntityLinkElement value, String linkText); + } -- GitLab