diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/EntityPropertyTypeDAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/EntityPropertyTypeDAO.java index 0e57286be1d7f6ffebe968d65ec4a85bf3e35ae4..7f4ef6074dc37178b7f6ef26ec12ca4cf3a3f852 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/EntityPropertyTypeDAO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/EntityPropertyTypeDAO.java @@ -279,12 +279,12 @@ final class EntityPropertyTypeDAO extends AbstractDAO implements IEntityProperty default: throw new IllegalArgumentException(entityKind.toString()); } - SQLQuery clearQuery = + SQLQuery updateQuery = session.createSQLQuery( "update " + entityTableName + " set modification_timestamp = :timestamp where id in :entityIds "); - clearQuery.setTimestamp("timestamp", getTransactionTimeStamp()); - clearQuery.setParameterList("entityIds", entityIds); - clearQuery.executeUpdate(); + updateQuery.setTimestamp("timestamp", getTransactionTimeStamp()); + updateQuery.setParameterList("entityIds", entityIds); + updateQuery.executeUpdate(); return null; } }); diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/api/v1/GeneralInformationChangingServiceTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/api/v1/GeneralInformationChangingServiceTest.java index 050c9d993c89105e71d8acf4583a17c3c1285797..b6c09d897f45ba1bd6fdb0bd85d084f837c504f2 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/api/v1/GeneralInformationChangingServiceTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/api/v1/GeneralInformationChangingServiceTest.java @@ -28,12 +28,14 @@ import java.util.List; import junit.framework.Assert; +import org.hibernate.Session; import org.springframework.beans.factory.annotation.Autowired; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import ch.systemsx.cisd.common.exceptions.AuthorizationFailureException; import ch.systemsx.cisd.common.exceptions.UserFailureException; +import ch.systemsx.cisd.openbis.generic.server.dataaccess.db.OpenBISHibernateTransactionManager; import ch.systemsx.cisd.openbis.generic.shared.ICommonServer; import ch.systemsx.cisd.openbis.generic.shared.api.v1.IGeneralInformationChangingService; import ch.systemsx.cisd.openbis.generic.shared.api.v1.IGeneralInformationService; @@ -123,6 +125,60 @@ public class GeneralInformationChangingServiceTest extends SystemTestCase history.toString()); } + @Test + public void testAssignMandatoryProperty() + { + TechId id = new TechId(1043L); + ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample sampleBefore = localCommonServer.getSampleInfo(sessionToken, id).getParent(); + assertProperties("[ANY_MATERIAL: 2 (GENE), BACTERIUM: BACTERIUM-Y (BACTERIUM), " + + "COMMENT: extremely simple stuff, ORGANISM: GORILLA, SIZE: 321]", + sampleBefore); + NewETPTAssignment newETPTAssignment = new NewETPTAssignment(); + newETPTAssignment.setEntityKind(EntityKind.SAMPLE); + newETPTAssignment.setDynamic(false); + newETPTAssignment.setMandatory(true); + newETPTAssignment.setDefaultValue("BMP_15"); + newETPTAssignment.setPropertyTypeCode("GENE_SYMBOL"); + newETPTAssignment.setOrdinal(1L); + newETPTAssignment.setEntityTypeCode("CELL_PLATE"); + newETPTAssignment.setShownInEditView(true); + newETPTAssignment.setShowRawValue(true); + localCommonServer.assignPropertyType(sessionToken, + newETPTAssignment); + //we clear the hibernateSession because assignPropertyType + //method executes sqls outside hibernate session + Session hibernateSession = getHibernateSession(); + hibernateSession.clear(); + + ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample sampleAfter = localCommonServer.getSampleInfo(sessionToken, id).getParent(); + + assertProperties("[ANY_MATERIAL: 2 (GENE), BACTERIUM: BACTERIUM-Y (BACTERIUM), " + + "COMMENT: extremely simple stuff, GENE_SYMBOL: BMP_15, " + + "ORGANISM: GORILLA, SIZE: 321]", sampleAfter); + assertFalse(sampleBefore.getModificationDate().equals(sampleAfter.getModificationDate())); + } + + @Test + public void testUnassignProperty() + { + TechId id = new TechId(1043L); + ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample sampleBefore = localCommonServer.getSampleInfo(sessionToken, id).getParent(); + assertProperties("[ANY_MATERIAL: 2 (GENE), BACTERIUM: BACTERIUM-Y (BACTERIUM), " + + "COMMENT: extremely simple stuff, ORGANISM: GORILLA, SIZE: 321]", + sampleBefore); + localCommonServer.unassignPropertyType(sessionToken, EntityKind.SAMPLE, "COMMENT", "CELL_PLATE"); + getHibernateSession().clear(); + ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample sampleAfter = + localCommonServer.getSampleInfo(sessionToken, id).getParent(); + assertFalse(sampleBefore.getModificationDate().equals(sampleAfter.getModificationDate())); + } + + private Session getHibernateSession() + { + OpenBISHibernateTransactionManager bean = (OpenBISHibernateTransactionManager) applicationContext.getBean("transaction-manager"); + return bean.getSessionFactory().getCurrentSession(); + } + @Test public void testCreateMetaproject() {