diff --git a/src/main/java/org/olat/course/nodes/portfolio/DeadlineController.java b/src/main/java/org/olat/course/nodes/portfolio/DeadlineController.java index c6225ff0fe772600dad83191ce681264c018313a..1b595e10aa01a781d79eba56706cd7ada8dc57a4 100644 --- a/src/main/java/org/olat/course/nodes/portfolio/DeadlineController.java +++ b/src/main/java/org/olat/course/nodes/portfolio/DeadlineController.java @@ -91,7 +91,7 @@ public class DeadlineController extends FormBasicController { @Override protected void formOK(UserRequest ureq) { Date newDeadLine = deadlineChooser.getDate(); - map = (EPStructuredMap) ePFMgr.loadPortfolioStructureByKey(map.getKey()); // OLAT-6335: refresh map in case it was changed meanwhile + map = (EPStructuredMap) ePFMgr.reloadPortfolioStructure(map); // OLAT-6335: refresh map in case it was changed meanwhile map.setDeadLine(newDeadLine); map.setStatus(StructureStatusEnum.OPEN); ePFMgr.savePortfolioStructure(map); diff --git a/src/main/java/org/olat/portfolio/manager/EPFrontendManager.java b/src/main/java/org/olat/portfolio/manager/EPFrontendManager.java index 7809b1b2bb12c789d20d5d4288bfd1c1adc3c49b..70a9bf948c0fe8441fa887490fd7575473fc58e5 100755 --- a/src/main/java/org/olat/portfolio/manager/EPFrontendManager.java +++ b/src/main/java/org/olat/portfolio/manager/EPFrontendManager.java @@ -61,7 +61,6 @@ import org.olat.modules.webFeed.portfolio.LiveBlogArtefactHandler; import org.olat.portfolio.PortfolioModule; import org.olat.portfolio.model.EPFilterSettings; import org.olat.portfolio.model.artefacts.AbstractArtefact; -import org.olat.portfolio.model.structel.EPAbstractMap; import org.olat.portfolio.model.structel.EPPage; import org.olat.portfolio.model.structel.EPStructureElement; import org.olat.portfolio.model.structel.EPStructuredMap; @@ -919,7 +918,9 @@ public class EPFrontendManager extends BasicManager { } /** - * Load a portfolio structure by its primary key + * Load a portfolio structure by its primary key. DON'T USE THIS METHOD + * TO RELOAD AN OBJECT. If you want do this, use the method + * reloadPortfolioStructure(PortfolioStructure structure) * @param key cannot be null * @return The structure element or null if not found */ @@ -927,6 +928,15 @@ public class EPFrontendManager extends BasicManager { return structureManager.loadPortfolioStructureByKey(key); } + /** + * Reload a portfolio structure + * @param structure cannot be null + * @return The reloaded structure element + */ + public PortfolioStructure reloadPortfolioStructure(PortfolioStructure structure){ + return structureManager.reloadPortfolioStructure(structure); + } + /** * Load the OLAT resource with the primary of the structure element * @param key cannot be null diff --git a/src/main/java/org/olat/portfolio/manager/EPStructureManager.java b/src/main/java/org/olat/portfolio/manager/EPStructureManager.java index c789b48ec73b4c12462605df05e777206d6b2306..88dc4f7a83d6ac57ed0572f91d31362cd0037fca 100755 --- a/src/main/java/org/olat/portfolio/manager/EPStructureManager.java +++ b/src/main/java/org/olat/portfolio/manager/EPStructureManager.java @@ -27,6 +27,7 @@ import java.util.Date; import java.util.Iterator; import java.util.List; +import org.hibernate.ObjectNotFoundException; import org.olat.basesecurity.BaseSecurity; import org.olat.basesecurity.Constants; import org.olat.basesecurity.NamedGroupImpl; @@ -647,7 +648,7 @@ public class EPStructureManager extends BasicManager { protected Integer[] getRestrictionStatistics(PortfolioStructure structure) { if (structure instanceof EPStructureElement) { EPStructureElement structEl = (EPStructureElement) structure; - structEl = (EPStructureElement) loadPortfolioStructureByKey(structEl.getKey()); + structEl = (EPStructureElement) reloadPortfolioStructure(structEl); final List<CollectRestriction> restrictions = structEl.getCollectRestrictions(); if (restrictions != null && !restrictions.isEmpty()) { @@ -1516,9 +1517,23 @@ public class EPStructureManager extends BasicManager { return resources.get(0); } + /** + * Reload an object + * @param structure + * @return The reloaded object or null if not found + */ + public PortfolioStructure reloadPortfolioStructure(PortfolioStructure structure) { + if (structure == null) throw new NullPointerException(); + try { + return (PortfolioStructure)dbInstance.loadObject(EPStructureElement.class, structure.getKey()); + } catch (ObjectNotFoundException e) { + return null; + } + } + public OLATResource loadOlatResourceFromStructureElByKey(Long key) { if (key == null) throw new NullPointerException(); - + StringBuilder sb = new StringBuilder(); sb.append("select element.olatResource from ").append(EPStructureElement.class.getName()).append(" element") .append(" where element.key=:key or element.olatResource.resId=:key "); diff --git a/src/main/java/org/olat/portfolio/ui/artefacts/view/EPMultipleArtefactsAsTableController.java b/src/main/java/org/olat/portfolio/ui/artefacts/view/EPMultipleArtefactsAsTableController.java index 1c327b24cb1c90bc80efa8e533d12a53f598dd5f..5125661596ecd2a5428d1456ca3237630b93f9db 100644 --- a/src/main/java/org/olat/portfolio/ui/artefacts/view/EPMultipleArtefactsAsTableController.java +++ b/src/main/java/org/olat/portfolio/ui/artefacts/view/EPMultipleArtefactsAsTableController.java @@ -229,7 +229,7 @@ public class EPMultipleArtefactsAsTableController extends BasicController implem } else if (CMD_CHOOSE.equals(action)){ fireEvent(ureq, new EPArtefactChoosenEvent(artefact)); } else if (CMD_UNLINK.equals(action)){ - struct = ePFMgr.loadPortfolioStructureByKey(struct.getKey()); + struct = ePFMgr.reloadPortfolioStructure(struct); ePFMgr.removeArtefactFromStructure(artefact, struct); artefactListTblCtrl.modelChanged(); fireEvent(ureq, new EPStructureChangeEvent(EPStructureChangeEvent.ADDED, struct)); diff --git a/src/main/java/org/olat/portfolio/ui/structel/EPPageViewController.java b/src/main/java/org/olat/portfolio/ui/structel/EPPageViewController.java index 83af57afa04e24bcf26fe12c9cd395689aea31c9..7eee1c06593222417db17366149bfc69a836af22 100644 --- a/src/main/java/org/olat/portfolio/ui/structel/EPPageViewController.java +++ b/src/main/java/org/olat/portfolio/ui/structel/EPPageViewController.java @@ -152,7 +152,7 @@ public class EPPageViewController extends BasicController { protected void event(UserRequest ureq, Controller source, Event event) { super.event(ureq, source, event); if (event instanceof EPStructureChangeEvent){ - this.page = (EPPage) ePFMgr.loadPortfolioStructureByKey(page.getKey()); + this.page = (EPPage) ePFMgr.reloadPortfolioStructure(page); init(ureq); } } diff --git a/src/main/java/org/olat/portfolio/ui/structel/edit/EPStructureDetailsController.java b/src/main/java/org/olat/portfolio/ui/structel/edit/EPStructureDetailsController.java index 7ed1ba07926e6509219d56286397e38ba7431c1c..3d183b1047a7e5cecb3ae457be1bc19e236c9af9 100644 --- a/src/main/java/org/olat/portfolio/ui/structel/edit/EPStructureDetailsController.java +++ b/src/main/java/org/olat/portfolio/ui/structel/edit/EPStructureDetailsController.java @@ -295,7 +295,7 @@ public class EPStructureDetailsController extends FormBasicController { */ @Override protected void formOK(final UserRequest ureq) { - editStructure = ePFMgr.loadPortfolioStructureByKey(editStructure.getKey()); + editStructure = ePFMgr.reloadPortfolioStructure(editStructure); editStructure.setTitle(titleEl.getValue()); editStructure.setDescription(descriptionEl.getValue()); editStructure.setArtefactRepresentationMode(viewRadio.getSelectedKey()); diff --git a/src/main/java/org/olat/portfolio/ui/structel/edit/EPStructureTreeAndDetailsEditController.java b/src/main/java/org/olat/portfolio/ui/structel/edit/EPStructureTreeAndDetailsEditController.java index 8e6cf6b02db7459fd98803001ae2bd78571764c5..eedf6d8d1346a4e2a514f56e79464084f57a1584 100644 --- a/src/main/java/org/olat/portfolio/ui/structel/edit/EPStructureTreeAndDetailsEditController.java +++ b/src/main/java/org/olat/portfolio/ui/structel/edit/EPStructureTreeAndDetailsEditController.java @@ -125,7 +125,7 @@ public class EPStructureTreeAndDetailsEditController extends FormBasicController if (source == mapStyle){ if (!mapStyle.getSelectedKey().equals(mapStyle.getUserObject())){ String newStyle = mapStyle.getSelectedKey(); - rootStructure = ePFMgr.loadPortfolioStructureByKey(rootStructure.getKey()); + rootStructure = ePFMgr.reloadPortfolioStructure(rootStructure); ((EPStructureElement)rootStructure).setStyle(newStyle); ePFMgr.savePortfolioStructure(rootStructure); fireEvent(ureq, Event.CHANGED_EVENT); @@ -136,7 +136,7 @@ public class EPStructureTreeAndDetailsEditController extends FormBasicController private void initOrUpdateToc(UserRequest ureq) { removeAsListenerAndDispose(tocCtrl); // with new links (pages, sub-elements or artefacts) to map, map gets a new version, therefore needs a refresh! - rootStructure = ePFMgr.loadPortfolioStructureByKey(rootStructure.getKey()); + rootStructure = ePFMgr.reloadPortfolioStructure(rootStructure); tocCtrl = new EPTOCController(ureq, getWindowControl(), selectedStructure, rootStructure, secCallback); listenTo(tocCtrl); flc.put("tocCtrl", tocCtrl.getInitialComponent()); @@ -192,7 +192,7 @@ public class EPStructureTreeAndDetailsEditController extends FormBasicController tocCtrl.refreshTree(rootStructure); } else if (event instanceof EPStructureChangeEvent && event.getCommand().equals(EPStructureChangeEvent.ADDED)) { // always reload to be on the save side! - selectedStructure = ePFMgr.loadPortfolioStructureByKey(((EPStructureChangeEvent)event).getPortfolioStructure().getKey()); + selectedStructure = ePFMgr.reloadPortfolioStructure(((EPStructureChangeEvent)event).getPortfolioStructure()); initOrUpdateToc(ureq); initOrUpdateDetailsEditor(ureq); } else if (event.equals(Event.CHANGED_EVENT)){ @@ -210,7 +210,7 @@ public class EPStructureTreeAndDetailsEditController extends FormBasicController if(EPStructureEvent.CHANGE.equals(structureEvent.getCommand())) { PortfolioStructure structure = structureEvent.getStructure(); if(rootStructure.equals(structure)) { - rootStructure = ePFMgr.loadPortfolioStructureByKey(rootStructure.getKey()); + rootStructure = ePFMgr.reloadPortfolioStructure(rootStructure); } // refresh the tree on changes! tocCtrl.update(ureq, structure);