// really do the move! private boolean moveArtefactToNewParent( final String artefactId, final String oldParentId, final String newParentId) { PortfolioStructure newParStruct; PortfolioStructure oldParStruct; AbstractArtefact artefact; try { artefact = ePFMgr.loadArtefactByKey(new Long(artefactId)); oldParStruct = ePFMgr.loadPortfolioStructureByKey(new Long(oldParentId)); newParStruct = ePFMgr.loadPortfolioStructureByKey(new Long(newParentId)); } catch (final Exception e) { log.error("could not load artefact, old and new parent", e); return false; } return ePFMgr.moveArtefactFromStructToStruct(artefact, oldParStruct, newParStruct); }
@SuppressWarnings("unused") @Override protected void event(final UserRequest ureq, final Component source, final Event event) { if (source instanceof Link) { final Link link = (Link) source; if (link.getCommand().equals(DELETE_LINK_CMD)) { if (artefactNodeClicked != null) { final AbstractArtefact artefact = ePFMgr.loadArtefactByKey(new Long(getArtefactIdFromNodeId(artefactNodeClicked))); final PortfolioStructure parentStruct = ePFMgr.loadPortfolioStructureByKey( new Long(getArtefactParentStructIdFromNodeId(artefactNodeClicked))); ePFMgr.removeArtefactFromStructure(artefact, parentStruct); // refresh the view fireEvent(ureq, Event.CHANGED_EVENT); } else if (structureClicked != null) { if ((structureClicked instanceof EPPage) && !(structureClicked instanceof EPAbstractMap)) { PortfolioStructure ps = structureClicked; while (ePFMgr.loadStructureParent(ps) != null) { ps = ePFMgr.loadStructureParent(ps); } final int childPages = ePFMgr.countStructureChildren(ps); if (childPages > 1) { eSTMgr.removeStructureRecursively(structureClicked); // refresh the view fireEvent(ureq, Event.CHANGED_EVENT); } else { showError("last.page.not.deletable"); } } else if (structureClicked instanceof EPStructureElement && !(structureClicked instanceof EPAbstractMap)) { // structures should always be deletable eSTMgr.removeStructureRecursively(structureClicked); // refresh the view fireEvent(ureq, Event.CHANGED_EVENT); } else { showInfo("element.not.deletable"); } } } } }
/** * check if an artefact might be moved to this new parent node artefact might be moved to pages or * structureElements, but not on maps * * @param artefactId * @param structureId * @return */ private boolean checkNewArtefactTarget(final String artefactId, final String structureId) { // artefact cannot be moved directly under root if (ROOT_NODE_IDENTIFIER.equals(structureId)) { return false; } PortfolioStructure newParStruct; AbstractArtefact artefact; try { artefact = ePFMgr.loadArtefactByKey(new Long(artefactId)); newParStruct = ePFMgr.loadPortfolioStructureByKey(new Long(structureId)); } catch (final Exception e) { log.warn("could not check for valid artefact target", e); return false; } final boolean sameTarget = ePFMgr.isArtefactInStructure(artefact, newParStruct); if (sameTarget) { return false; } if (newParStruct instanceof EPAbstractMap) { return false; } return true; }