Skip to content
Snippets Groups Projects
Commit d48a27d4 authored by felmer's avatar felmer
Browse files

SP-428, BIS-287: parent-children of samples and data sets locked. More tests.

SVN: 27904
parent 5c51d03c
No related branches found
No related tags found
No related merge requests found
...@@ -368,7 +368,8 @@ public abstract class AbstractDAO extends HibernateDaoSupport ...@@ -368,7 +368,8 @@ public abstract class AbstractDAO extends HibernateDaoSupport
protected void lockEntity(IIdHolder entityOrNull) protected void lockEntity(IIdHolder entityOrNull)
{ {
if (entityOrNull != null && entityOrNull.getId() != null) if (entityOrNull != null && entityOrNull.getId() != null
&& getSession().contains(entityOrNull))
{ {
getHibernateTemplate().lock(entityOrNull, LockMode.PESSIMISTIC_WRITE); getHibernateTemplate().lock(entityOrNull, LockMode.PESSIMISTIC_WRITE);
} }
......
...@@ -655,6 +655,8 @@ final class DataDAO extends AbstractGenericEntityWithPropertiesDAO<DataPE> imple ...@@ -655,6 +655,8 @@ final class DataDAO extends AbstractGenericEntityWithPropertiesDAO<DataPE> imple
lockEntity(data.getExperiment()); lockEntity(data.getExperiment());
lockEntity(data.tryGetSample()); lockEntity(data.tryGetSample());
lockEntity(data.getContainer()); lockEntity(data.getContainer());
lockEntities(data.getParents());
lockEntities(data.getChildren());
} }
@Override @Override
......
...@@ -88,7 +88,7 @@ public class SampleDAO extends AbstractGenericEntityWithPropertiesDAO<SamplePE> ...@@ -88,7 +88,7 @@ public class SampleDAO extends AbstractGenericEntityWithPropertiesDAO<SamplePE>
} }
lockEntity(sample.getExperiment()); lockEntity(sample.getExperiment());
lockEntity(sample.getContainer()); lockEntity(sample.getContainer());
// lockEntities(sample.getParents()); lockEntities(sample.getParents());
hibernateTemplate.saveOrUpdate(sample); hibernateTemplate.saveOrUpdate(sample);
if (doLog && operationLog.isInfoEnabled()) if (doLog && operationLog.isInfoEnabled())
{ {
......
...@@ -46,6 +46,7 @@ import ch.systemsx.cisd.openbis.generic.server.ICommonServerForInternalUse; ...@@ -46,6 +46,7 @@ import ch.systemsx.cisd.openbis.generic.server.ICommonServerForInternalUse;
import ch.systemsx.cisd.openbis.generic.server.util.TestInitializer; import ch.systemsx.cisd.openbis.generic.server.util.TestInitializer;
import ch.systemsx.cisd.openbis.generic.shared.IETLLIMSService; import ch.systemsx.cisd.openbis.generic.shared.IETLLIMSService;
import ch.systemsx.cisd.openbis.generic.shared.basic.GridRowModel; import ch.systemsx.cisd.openbis.generic.shared.basic.GridRowModel;
import ch.systemsx.cisd.openbis.generic.shared.basic.IIdentifierHolder;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.CodeWithRegistration; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.CodeWithRegistration;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DisplaySettings; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DisplaySettings;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Grantee; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Grantee;
...@@ -374,6 +375,18 @@ public abstract class SystemTestCase extends AbstractTransactionalTestNGSpringCo ...@@ -374,6 +375,18 @@ public abstract class SystemTestCase extends AbstractTransactionalTestNGSpringCo
AssertJUnit.fail("No property " + key + " found in " + propertyCodes); AssertJUnit.fail("No property " + key + " found in " + propertyCodes);
} }
protected void assertEntities(String expectedEntities,
List<? extends IIdentifierHolder> entities)
{
List<String> identifiers = new ArrayList<String>();
for (IIdentifierHolder entity : entities)
{
identifiers.add(entity.getIdentifier());
}
Collections.sort(identifiers);
assertEquals(expectedEntities, identifiers.toString());
}
protected List<PropertyHistory> getMaterialPropertiesHistory(long materialID) protected List<PropertyHistory> getMaterialPropertiesHistory(long materialID)
{ {
List<PropertyHistory> list = List<PropertyHistory> list =
......
...@@ -64,7 +64,6 @@ import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SearchCriteria.MatchCl ...@@ -64,7 +64,6 @@ import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SearchCriteria.MatchCl
import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SearchSubCriteria; import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SearchSubCriteria;
import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SpaceWithProjectsAndRoleAssignments; import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SpaceWithProjectsAndRoleAssignments;
import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.id.metaproject.MetaprojectIdentifierId; import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.id.metaproject.MetaprojectIdentifierId;
import ch.systemsx.cisd.openbis.generic.shared.basic.IIdentifierHolder;
import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Metaproject; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Metaproject;
...@@ -1293,17 +1292,6 @@ public class GeneralInformationServiceTest extends SystemTestCase ...@@ -1293,17 +1292,6 @@ public class GeneralInformationServiceTest extends SystemTestCase
sessionToken = generalInformationService.tryToAuthenticateForAllServices("observer", "a"); sessionToken = generalInformationService.tryToAuthenticateForAllServices("observer", "a");
} }
private void assertEntities(String expectedEntities, List<? extends IIdentifierHolder> entities)
{
List<String> identifiers = new ArrayList<String>();
for (IIdentifierHolder entity : entities)
{
identifiers.add(entity.getIdentifier());
}
// Collections.sort(identifiers);
assertEquals(expectedEntities, identifiers.toString());
}
private interface IToStringDelegate<T> private interface IToStringDelegate<T>
{ {
String toString(T t); String toString(T t);
......
...@@ -62,6 +62,37 @@ import ch.systemsx.cisd.openbis.systemtest.SystemTestCase; ...@@ -62,6 +62,37 @@ import ch.systemsx.cisd.openbis.systemtest.SystemTestCase;
*/ */
public class RegistrationTest extends SystemTestCase public class RegistrationTest extends SystemTestCase
{ {
@Test
public void testCreateChildrenForAnExistingSampleWithBatchSize1()
{
Sample parentSample =
genericServer.getSampleInfo(systemSessionToken, new TechId(1)).getParent();
AtomicEntityOperationDetailsBuilder builder = new AtomicEntityOperationDetailsBuilder();
SampleType sampleType = new SampleType();
sampleType.setCode("CELL_PLATE");
parentSample.setSampleType(sampleType);
NewSample childSample1 = new NewSample();
childSample1.setIdentifier("/TEST-SPACE/PARENT_OF_TWO_CHILD_1");
childSample1.setSampleType(sampleType);
childSample1.setParents(parentSample.getIdentifier());
builder.sample(childSample1);
NewSample childSample2 = new NewSample();
childSample2.setIdentifier("/TEST-SPACE/PARENT_OF_TWO_CHILD_2");
childSample2.setSampleType(sampleType);
childSample2.setParents(parentSample.getIdentifier());
builder.sample(childSample2);
builder.batchSize(1);
etlService.performEntityOperations(systemSessionToken, builder.getDetails());
List<Sample> children =
commonServer.listSamples(systemSessionToken,
ListSampleCriteria.createForParent(new TechId(parentSample)));
assertEntities("[/TEST-SPACE/PARENT_OF_TWO_CHILD_1, /TEST-SPACE/PARENT_OF_TWO_CHILD_2]",
children);
}
@Test @Test
public void testCreateSampleWithTwoAttachments() public void testCreateSampleWithTwoAttachments()
{ {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment