From 00535a98cd39da9d9a22949f25102eee86446a92 Mon Sep 17 00:00:00 2001 From: buczekp <buczekp> Date: Tue, 19 Oct 2010 09:39:54 +0000 Subject: [PATCH] [LMS-1818] evaluate dynamic properties after batch update of data sets SVN: 18344 --- .../generic/server/business/bo/ExternalDataTable.java | 6 +++--- .../generic/server/dataaccess/db/ExternalDataDAO.java | 10 ++++++++-- .../generic/server/dataaccess/db/SampleDAO.java | 1 - 3 files changed, 11 insertions(+), 6 deletions(-) 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 6102ad7d147..4e5d58e35a1 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 c6f2a64e279..ef76fd0b318 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 d121ea791d7..35b83e40629 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) -- GitLab