diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExternalDataTable.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExternalDataTable.java index 6102ad7d147760da7d8f5952a8a12ce092b68159..4e5d58e35a1cac9b17c074daf99d153b157cd505 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExternalDataTable.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExternalDataTable.java @@ -25,8 +25,8 @@ import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; -import java.util.Set; import java.util.Map.Entry; +import java.util.Set; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; @@ -59,6 +59,7 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.DatasetDescription; import ch.systemsx.cisd.openbis.generic.shared.dto.EntityTypePE; import ch.systemsx.cisd.openbis.generic.shared.dto.EntityTypePropertyTypePE; import ch.systemsx.cisd.openbis.generic.shared.dto.EventPE; +import ch.systemsx.cisd.openbis.generic.shared.dto.EventPE.EntityType; import ch.systemsx.cisd.openbis.generic.shared.dto.EventType; import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPE; import ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE; @@ -67,7 +68,6 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE; import ch.systemsx.cisd.openbis.generic.shared.dto.ProjectPE; import ch.systemsx.cisd.openbis.generic.shared.dto.SamplePE; import ch.systemsx.cisd.openbis.generic.shared.dto.Session; -import ch.systemsx.cisd.openbis.generic.shared.dto.EventPE.EntityType; import ch.systemsx.cisd.openbis.generic.shared.dto.properties.EntityKind; import ch.systemsx.cisd.openbis.generic.shared.translator.ExternalDataTranslator; import ch.systemsx.cisd.openbis.generic.shared.util.HibernateUtils; @@ -663,9 +663,9 @@ public final class ExternalDataTable extends AbstractExternalDataBusinessObject assert externalData != null : "Undefined external data."; try { + checkMandatoryProperties(); IExternalDataDAO externalDataDAO = getExternalDataDAO(); externalDataDAO.updateDataSets(externalData); - checkMandatoryProperties(); } catch (final DataAccessException ex) { throwException(ex, String.format("One of data sets")); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ExternalDataDAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ExternalDataDAO.java index c6f2a64e27930a0dbf23c78c935a6989d1c151e9..ef76fd0b318f9cf10c637d2516cc20667d648730 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ExternalDataDAO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ExternalDataDAO.java @@ -454,12 +454,18 @@ final class ExternalDataDAO extends AbstractGenericEntityDAO<ExternalDataPE> imp { operationLog.info(String.format("UPDATE: %d data sets.", externalData.size())); } + + flushWithSqlExceptionHandling(getHibernateTemplate()); + scheduleDynamicPropertiesEvaluation(externalData); + + // if session is not cleared registration of many samples slows down after each batch + hibernateTemplate.clear(); } - private void scheduleDynamicPropertiesEvaluation(List<ExternalDataPE> data) + private void scheduleDynamicPropertiesEvaluation(List<ExternalDataPE> externalData) { scheduleDynamicPropertiesEvaluation(dynamicPropertyEvaluationScheduler, - ExternalDataPE.class, data); + ExternalDataPE.class, externalData); } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/SampleDAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/SampleDAO.java index d121ea791d70292d41e0ef62d974980dc5898e46..35b83e406292df81cf0d688a1b5d748d5a8ef48a 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/SampleDAO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/SampleDAO.java @@ -115,7 +115,6 @@ public class SampleDAO extends AbstractGenericEntityDAO<SamplePE> implements ISa new ClassValidator<SamplePE>(SamplePE.class), true); flushWithSqlExceptionHandling(hibernateTemplate); - scheduleDynamicPropertiesEvaluation(Arrays.asList(sample)); } public final List<SamplePE> listSamplesByGeneratedFrom(final SamplePE sample)