diff --git a/src/main/java/org/olat/modules/quality/manager/QualityDataCollectionDAO.java b/src/main/java/org/olat/modules/quality/manager/QualityDataCollectionDAO.java index b82fc7e0e3279d972b0aad59f6abcce486f5d821..4108f83b135aee7a3579b030359411a258b848a3 100644 --- a/src/main/java/org/olat/modules/quality/manager/QualityDataCollectionDAO.java +++ b/src/main/java/org/olat/modules/quality/manager/QualityDataCollectionDAO.java @@ -98,7 +98,10 @@ public class QualityDataCollectionDAO { if (dataCollectionRef == null || dataCollectionRef.getKey() == null) return null; StringBuilder sb = new StringBuilder(256); - sb.append("select collection from qualitydatacollection as collection"); + sb.append("select collection"); + sb.append(" from qualitydatacollection as collection"); + sb.append(" left join fetch collection.topicIdentity"); + sb.append(" left join fetch collection.topicOrganisation"); sb.append(" where collection.key=:collectionKey"); List<QualityDataCollection> dataCollections = dbInstance.getCurrentEntityManager() diff --git a/src/main/java/org/olat/modules/quality/ui/DataCollectionConfigurationController.java b/src/main/java/org/olat/modules/quality/ui/DataCollectionConfigurationController.java index 2ea1746e9bc668e0caef109df58a617a59adfcc8..296fab8ee1286dfe19d56da95ee6268041a3a54a 100644 --- a/src/main/java/org/olat/modules/quality/ui/DataCollectionConfigurationController.java +++ b/src/main/java/org/olat/modules/quality/ui/DataCollectionConfigurationController.java @@ -275,12 +275,9 @@ public class DataCollectionConfigurationController extends AbstractDataCollectio case ORGANISATION: List<Organisation> organisations = organisationService.getOrganisations(getIdentity(), OrganisationRoles.administrator, OrganisationRoles.qualitymanager); - if (topicOrganisation != null && !organisations.contains(topicOrganisation)) { - organisations.add(topicOrganisation); - } OrganisationTreeModel organisationModel = new OrganisationTreeModel(); organisationModel.loadTreeModel(organisations); - KeysValues organistionKeysValues = QualityUIFactory.getTopicOrganisationKeysValues(organisationModel); + KeysValues organistionKeysValues = QualityUIFactory.getTopicOrganisationKeysValues(organisationModel, topicOrganisation); topicOrganisationEl.setKeysAndValues(organistionKeysValues.getKeys(), organistionKeysValues.getValues(), null); if (topicOrganisation != null) { topicOrganisationEl.select(QualityUIFactory.getTopicOrganisationKey(topicOrganisation), true); @@ -293,10 +290,7 @@ public class DataCollectionConfigurationController extends AbstractDataCollectio params.setOrganisations(QualityUIFactory.getSelectedOrganisationRefs(organisationsEl)); } List<Curriculum> curriculums = curriculumService.getCurriculums(params); - if (topicCurriculum != null && !curriculums.contains(topicCurriculum)) { - curriculums.add(topicCurriculum); - } - KeysValues curriculumKeysValues = QualityUIFactory.getCurriculumKeysValues(curriculums); + KeysValues curriculumKeysValues = QualityUIFactory.getCurriculumKeysValues(curriculums, topicCurriculum); topicCurriculumEl.setKeysAndValues(curriculumKeysValues.getKeys(), curriculumKeysValues.getValues(), null); if (topicCurriculum != null) { topicCurriculumEl.select(QualityUIFactory.getCurriculumKey(topicCurriculum), true); @@ -309,19 +303,14 @@ public class DataCollectionConfigurationController extends AbstractDataCollectio params2.setOrganisations(QualityUIFactory.getSelectedOrganisationRefs(organisationsEl)); } List<Curriculum> curriculums2 = curriculumService.getCurriculums(params2); - if (topicCurriculum != null && !curriculums2.contains(topicCurriculum)) { - curriculums2.add(topicCurriculum); - } - KeysValues curriculumKeysValues2 = QualityUIFactory.getCurriculumKeysValues(curriculums2); + KeysValues curriculumKeysValues2 = QualityUIFactory.getCurriculumKeysValues(curriculums2, topicCurriculum); topicCurriculumEl.setKeysAndValues(curriculumKeysValues2.getKeys(), curriculumKeysValues2.getValues(), null); if (topicCurriculum != null) { topicCurriculumEl.select(QualityUIFactory.getCurriculumKey(topicCurriculum), true); - } - if (topicCurriculum != null) { List<CurriculumElement> curriculumElements = curriculumService.getCurriculumElements(topicCurriculum, CurriculumElementStatus.values()); CurriculumTreeModel curriculumTreeModel = new CurriculumTreeModel(); curriculumTreeModel.loadTreeModel(curriculumElements); - KeysValues curriculumElementKeysValues = QualityUIFactory.getCurriculumElementKeysValues(curriculumTreeModel); + KeysValues curriculumElementKeysValues = QualityUIFactory.getCurriculumElementKeysValues(curriculumTreeModel, topicCurriculumElement); topicCurriculumElementEl.setKeysAndValues(curriculumElementKeysValues.getKeys(), curriculumElementKeysValues.getValues(), null); if (topicCurriculumElement != null) { topicCurriculumElementEl.select(QualityUIFactory.getCurriculumElementKey(topicCurriculumElement), true); diff --git a/src/main/java/org/olat/modules/quality/ui/QualityUIFactory.java b/src/main/java/org/olat/modules/quality/ui/QualityUIFactory.java index 842f8f180b77a4551348970ee33e46b12bc9e650..3abd451370ca2cb8ad03cb369f62cbfd7c4e64c9 100644 --- a/src/main/java/org/olat/modules/quality/ui/QualityUIFactory.java +++ b/src/main/java/org/olat/modules/quality/ui/QualityUIFactory.java @@ -128,13 +128,17 @@ public class QualityUIFactory { || CoreSpringFactory.getImpl(CurriculumModule.class).isEnabled(); } - public static KeysValues getCurriculumKeysValues(List<Curriculum> curriculums) { - String[] keys = curriculums.stream() + public static KeysValues getCurriculumKeysValues(List<Curriculum> curriculums, Curriculum current) { + List<Curriculum> curriculumsCopy = new ArrayList<>(curriculums); + if (current != null && !curriculumsCopy.contains(current)) { + curriculumsCopy.add(0, current); + } + String[] keys = curriculumsCopy.stream() .sorted(DISPLAY_NAME_COMPARATOR) .map(Curriculum::getKey) .map(String::valueOf) .toArray(String[]::new); - String[] values = curriculums.stream() + String[] values = curriculumsCopy.stream() .sorted(DISPLAY_NAME_COMPARATOR) .map(Curriculum::getDisplayName) .toArray(String[]::new); @@ -163,9 +167,12 @@ public class QualityUIFactory { return null; } - public static KeysValues getCurriculumElementKeysValues(CurriculumTreeModel curriculumTreeModel) { + public static KeysValues getCurriculumElementKeysValues(CurriculumTreeModel curriculumTreeModel, CurriculumElement current) { List<CurriculumElement> elements = new ArrayList<>(); curriculumElementTreeToList(elements, curriculumTreeModel.getRootNode()); + if (current != null && !elements.contains(current)) { + elements.add(0, current); + } String[] keys = new String[elements.size()]; String[] values = new String[elements.size()]; for (int i = elements.size(); i-->0; ) { @@ -221,9 +228,12 @@ public class QualityUIFactory { return null; } - public static KeysValues getTopicOrganisationKeysValues(OrganisationTreeModel organisationModel) { + public static KeysValues getTopicOrganisationKeysValues(OrganisationTreeModel organisationModel, Organisation current) { List<Organisation> organisations = new ArrayList<>(); organsiationTreeToList(organisations, organisationModel.getRootNode()); + if (current != null && !organisations.contains(current)) { + organisations.add(0, current); + } String[] keys = new String[organisations.size()]; String[] values = new String[organisations.size()]; for (int i = organisations.size(); i-->0; ) { diff --git a/src/main/java/org/olat/modules/quality/ui/wizard/AddCurriculumElementUserSelectionController.java b/src/main/java/org/olat/modules/quality/ui/wizard/AddCurriculumElementUserSelectionController.java index b935b724f7d8d291d598a3222da656380f1565d8..49649e550f6dbfd5c96101d66dfc804d89c4c352 100644 --- a/src/main/java/org/olat/modules/quality/ui/wizard/AddCurriculumElementUserSelectionController.java +++ b/src/main/java/org/olat/modules/quality/ui/wizard/AddCurriculumElementUserSelectionController.java @@ -89,7 +89,7 @@ public class AddCurriculumElementUserSelectionController extends StepFormBasicCo CurriculumSearchParameters params = new CurriculumSearchParameters(); params.setOrganisations(organisationRefs); List<Curriculum> curriculums = curriculumService.getCurriculums(params); - KeysValues curriculumKeysValues = QualityUIFactory.getCurriculumKeysValues(curriculums); + KeysValues curriculumKeysValues = QualityUIFactory.getCurriculumKeysValues(curriculums, null); curriculumEl = uifactory.addDropdownSingleselect("participation.user.curele.add.choose.curriculum", formLayout, curriculumKeysValues.getKeys(), curriculumKeysValues.getValues()); curriculumEl.addActionListener(FormEvent.ONCHANGE); @@ -108,7 +108,7 @@ public class AddCurriculumElementUserSelectionController extends StepFormBasicCo List<CurriculumElement> curriculumElements = curriculumService.getCurriculumElements(curriculum, CurriculumElementStatus.notDeleted()); CurriculumTreeModel curriculumTreeModel = new CurriculumTreeModel(); curriculumTreeModel.loadTreeModel(curriculumElements); - KeysValues curriculumElementKeysValues = QualityUIFactory.getCurriculumElementKeysValues(curriculumTreeModel); + KeysValues curriculumElementKeysValues = QualityUIFactory.getCurriculumElementKeysValues(curriculumTreeModel, null); curriculumElementEl.setKeysAndValues(curriculumElementKeysValues.getKeys(), curriculumElementKeysValues.getValues(), null); } }