diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/DataDAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/DataDAO.java index 505eb787e89c8c92526c88ffd6cf4cdcd12d46fe..1a3428317608615959089000093e58951daa155d 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/DataDAO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/DataDAO.java @@ -1343,21 +1343,23 @@ final class DataDAO extends AbstractGenericEntityWithPropertiesDAO<DataPE> imple scheduleDynamicPropertiesEvaluation(Arrays.asList(entity)); } - public void scheduleDynamicPropertiesEvaluation(List<DataPE> dataSets) + @Override + protected void scheduleDynamicPropertiesEvaluation(List<DataPE> dataSets) { - Deque<DataPE> toSchedule = new LinkedList<DataPE>(dataSets); List<DataPE> toUpdate = new ArrayList<DataPE>(); - - //Schedule contained datasets for index update, they also have the experiment and samples ids the index at least - while(false == toSchedule.isEmpty()) { - DataPE next = toSchedule.removeFirst(); - toUpdate.add(next); - toSchedule.addAll(next.getContainedDataSets()); - } - + addAllDataSetsAndComponentsRecursively(toUpdate, dataSets); super.scheduleDynamicPropertiesEvaluation(toUpdate); } + private void addAllDataSetsAndComponentsRecursively(List<DataPE> resultDataSets, List<DataPE> dataSets) + { + for (DataPE dataSet : dataSets) + { + resultDataSets.add(dataSet); + addAllDataSetsAndComponentsRecursively(resultDataSets, dataSet.getContainedDataSets()); + } + } + @Override public List<TechId> listDataSetIdsBySampleIds(final Collection<TechId> samples) {