Search in sources :

Example 11 with CollectRestriction

use of org.olat.portfolio.model.restriction.CollectRestriction in project OpenOLAT by OpenOLAT.

the class EPStructureManager method canAddArtefact.

protected boolean canAddArtefact(EPStructureElement structureEl, AbstractArtefact newArtefact) {
    List<CollectRestriction> restrictions = structureEl.getCollectRestrictions();
    if (restrictions == null || restrictions.isEmpty())
        return true;
    boolean allOk = true;
    List<String> artefactTypeAllowed = new ArrayList<String>();
    List<AbstractArtefact> artefacts = getArtefacts(structureEl);
    artefacts.add(newArtefact);
    for (CollectRestriction restriction : restrictions) {
        String type = restriction.getArtefactType();
        int count = countRestrictionType(artefacts, restriction);
        artefactTypeAllowed.add(type);
        if (type.equals(newArtefact.getResourceableTypeName())) {
            if (RestrictionsConstants.MAX.equals(restriction.getRestriction())) {
                allOk &= (restriction.getAmount() > 0 && count <= restriction.getAmount());
            } else if (RestrictionsConstants.EQUAL.equals(restriction.getRestriction())) {
                allOk &= (restriction.getAmount() > 0 && count <= restriction.getAmount());
            }
        }
    }
    allOk &= artefactTypeAllowed.contains(newArtefact.getResourceableTypeName());
    return allOk;
}
Also used : ArrayList(java.util.ArrayList) AbstractArtefact(org.olat.portfolio.model.artefacts.AbstractArtefact) CollectRestriction(org.olat.portfolio.model.restriction.CollectRestriction)

Example 12 with CollectRestriction

use of org.olat.portfolio.model.restriction.CollectRestriction in project OpenOLAT by OpenOLAT.

the class EPStructureManager method checkCollectRestriction.

/**
 * Check the collect restriction against the structure element
 * @param structure
 * @return
 */
protected boolean checkCollectRestriction(PortfolioStructure structure) {
    if (structure instanceof EPStructureElement) {
        EPStructureElement structureEl = (EPStructureElement) structure;
        List<CollectRestriction> restrictions = structureEl.getCollectRestrictions();
        if (restrictions == null || restrictions.isEmpty())
            return true;
        boolean allOk = true;
        List<String> artefactTypeAllowed = new ArrayList<String>();
        List<AbstractArtefact> artefacts = getArtefacts(structureEl);
        for (CollectRestriction restriction : restrictions) {
            int count = countRestrictionType(artefacts, restriction);
            artefactTypeAllowed.add(restriction.getArtefactType());
            boolean ok = true;
            if (RestrictionsConstants.MAX.equals(restriction.getRestriction())) {
                ok &= (restriction.getAmount() > 0 && count <= restriction.getAmount());
            } else if (RestrictionsConstants.MIN.equals(restriction.getRestriction())) {
                ok &= (restriction.getAmount() > 0 && count >= restriction.getAmount());
            } else if (RestrictionsConstants.EQUAL.equals(restriction.getRestriction())) {
                ok &= (restriction.getAmount() > 0 && count == restriction.getAmount());
            } else {
                ok &= false;
            }
            allOk &= ok;
        }
        for (AbstractArtefact artefact : artefacts) {
            allOk &= artefactTypeAllowed.contains(artefact.getResourceableTypeName());
        }
        return allOk;
    }
    return true;
}
Also used : EPStructureElement(org.olat.portfolio.model.structel.EPStructureElement) ArrayList(java.util.ArrayList) AbstractArtefact(org.olat.portfolio.model.artefacts.AbstractArtefact) CollectRestriction(org.olat.portfolio.model.restriction.CollectRestriction)

Example 13 with CollectRestriction

use of org.olat.portfolio.model.restriction.CollectRestriction in project OpenOLAT by OpenOLAT.

the class EPStructureManager method addCollectRestriction.

/**
 * Add or update a restriction to the collection of artefacts for a given structure element
 * @param structure
 * @param artefactType
 * @param restriction
 * @param amount
 */
public void addCollectRestriction(PortfolioStructure structure, String artefactType, String restriction, int amount) {
    if (structure == null)
        throw new NullPointerException("Structure cannot be null");
    EPStructureElement structEl = (EPStructureElement) structure;
    List<CollectRestriction> restrictions = structEl.getCollectRestrictions();
    CollectRestriction cr = new CollectRestriction();
    cr.setArtefactType(artefactType);
    cr.setRestriction(restriction);
    cr.setAmount(amount);
    restrictions.add(cr);
}
Also used : EPStructureElement(org.olat.portfolio.model.structel.EPStructureElement) CollectRestriction(org.olat.portfolio.model.restriction.CollectRestriction)

Example 14 with CollectRestriction

use of org.olat.portfolio.model.restriction.CollectRestriction in project OpenOLAT by OpenOLAT.

the class EPPageViewController method init.

private void init(UserRequest ureq) {
    vC.contextPut("page", page);
    PortfolioStructureMap parentOfPage = (PortfolioStructureMap) ePFMgr.loadStructureParent(page);
    boolean parentMapClosed = StructureStatusEnum.CLOSED.equals(parentOfPage.getStatus());
    vC.remove(vC.getComponent("checkResults"));
    if (secCallback.isRestrictionsEnabled()) {
        removeAsListenerAndDispose(resultCtrl);
        List<CollectRestriction> restrictions = page.getCollectRestrictions();
        if (!restrictions.isEmpty()) {
            boolean check = ePFMgr.checkCollectRestriction(page);
            resultCtrl = new EPCollectRestrictionResultController(ureq, getWindowControl());
            resultCtrl.setMessage(restrictions, check);
            vC.put("checkResults", resultCtrl.getInitialComponent());
            listenTo(resultCtrl);
        }
    }
    vC.remove(vC.getComponent("artefacts"));
    List<AbstractArtefact> artefacts = ePFMgr.getArtefacts(page);
    if (artefacts.size() != 0) {
        EPMultiArtefactsController artefactCtrl = EPUIFactory.getConfigDependentArtefactsControllerForStructure(ureq, getWindowControl(), artefacts, page, secCallback);
        vC.put("artefacts", artefactCtrl.getInitialComponent());
        listenTo(artefactCtrl);
    }
    vC.remove(vC.getComponent("structElements"));
    List<PortfolioStructure> structElements = ePFMgr.loadStructureChildren(page);
    if (structElements.size() != 0) {
        EPStructureElementsController structElCtrl = new EPStructureElementsController(ureq, getWindowControl(), structElements, secCallback, parentMapClosed);
        vC.put("structElements", structElCtrl.getInitialComponent());
        listenTo(structElCtrl);
    }
    vC.remove(vC.getComponent("addButton"));
    if (!parentMapClosed && (secCallback.canAddArtefact() || secCallback.canAddStructure())) {
        addButtonCtrl = new EPAddElementsController(ureq, getWindowControl(), page);
        listenTo(addButtonCtrl);
        if (secCallback.canAddArtefact()) {
            addButtonCtrl.setShowLink(EPAddElementsController.ADD_ARTEFACT);
        }
        if (secCallback.canAddStructure()) {
            addButtonCtrl.setShowLink(EPAddElementsController.ADD_STRUCTUREELEMENT);
        }
        vC.put("addButton", addButtonCtrl.getInitialComponent());
    }
    vC.remove(vC.getComponent("commentCtrl"));
    if (secCallback.canCommentAndRate()) {
        removeAsListenerAndDispose(commentsAndRatingCtr);
        boolean anonym = ureq.getUserSession().getRoles().isGuestOnly();
        CommentAndRatingSecurityCallback ratingSecCallback = new CommentAndRatingDefaultSecurityCallback(getIdentity(), false, anonym);
        commentsAndRatingCtr = new UserCommentsAndRatingsController(ureq, getWindowControl(), map.getOlatResource(), page.getKey().toString(), ratingSecCallback, true, true, true);
        listenTo(commentsAndRatingCtr);
        vC.put("commentCtrl", commentsAndRatingCtr.getInitialComponent());
    }
}
Also used : PortfolioStructureMap(org.olat.portfolio.model.structel.PortfolioStructureMap) EPCollectRestrictionResultController(org.olat.portfolio.ui.structel.edit.EPCollectRestrictionResultController) CommentAndRatingSecurityCallback(org.olat.core.commons.services.commentAndRating.CommentAndRatingSecurityCallback) EPMultiArtefactsController(org.olat.portfolio.ui.artefacts.view.EPMultiArtefactsController) AbstractArtefact(org.olat.portfolio.model.artefacts.AbstractArtefact) CommentAndRatingDefaultSecurityCallback(org.olat.core.commons.services.commentAndRating.CommentAndRatingDefaultSecurityCallback) UserCommentsAndRatingsController(org.olat.core.commons.services.commentAndRating.ui.UserCommentsAndRatingsController) PortfolioStructure(org.olat.portfolio.model.structel.PortfolioStructure) CollectRestriction(org.olat.portfolio.model.restriction.CollectRestriction)

Example 15 with CollectRestriction

use of org.olat.portfolio.model.restriction.CollectRestriction in project OpenOLAT by OpenOLAT.

the class EPStructureElementsController method initForm.

/**
 * @see org.olat.core.gui.components.form.flexible.impl.FormBasicController#initForm(org.olat.core.gui.components.form.flexible.FormItemContainer, org.olat.core.gui.control.Controller, org.olat.core.gui.UserRequest)
 */
protected void initForm(UserRequest ureq) {
    flc.contextPut("structElements", structElements);
    tableCtrls = new ArrayList<Controller>();
    addBtnCtrls = new ArrayList<Controller>();
    int i = 1;
    removeComponents();
    for (PortfolioStructure portStruct : structElements) {
        if (secCallback.isRestrictionsEnabled()) {
            List<CollectRestriction> restrictions = portStruct.getCollectRestrictions();
            if (!restrictions.isEmpty()) {
                boolean check = ePFMgr.checkCollectRestriction(portStruct);
                EPCollectRestrictionResultController resultCtrl = new EPCollectRestrictionResultController(ureq, getWindowControl());
                resultCtrl.setMessage(portStruct.getCollectRestrictions(), check);
                flc.put("checkResults" + i, resultCtrl.getInitialComponent());
                listenTo(resultCtrl);
            }
        }
        // get artefacts for this structure
        List<AbstractArtefact> artefacts = ePFMgr.getArtefacts(portStruct);
        if (artefacts.size() != 0) {
            EPMultiArtefactsController artefactCtrl = EPUIFactory.getConfigDependentArtefactsControllerForStructure(ureq, getWindowControl(), artefacts, portStruct, secCallback);
            flc.put("artefacts" + i, artefactCtrl.getInitialComponent());
            listenTo(artefactCtrl);
            tableCtrls.add(artefactCtrl);
        }
        if (!parentMapClosed && secCallback.canAddArtefact()) {
            // get an addElement-button for each structure
            EPAddElementsController addButton = new EPAddElementsController(ureq, getWindowControl(), portStruct);
            listenTo(addButton);
            addButton.setShowLink(EPAddElementsController.ADD_ARTEFACT);
            flc.put("addButton" + i, addButton.getInitialComponent());
            addBtnCtrls.add(addButton);
        }
        i++;
    }
    if (i != maxStructAmount)
        maxStructAmount = i;
}
Also used : EPCollectRestrictionResultController(org.olat.portfolio.ui.structel.edit.EPCollectRestrictionResultController) EPMultiArtefactsController(org.olat.portfolio.ui.artefacts.view.EPMultiArtefactsController) PortfolioStructure(org.olat.portfolio.model.structel.PortfolioStructure) AbstractArtefact(org.olat.portfolio.model.artefacts.AbstractArtefact) CollectRestriction(org.olat.portfolio.model.restriction.CollectRestriction) Controller(org.olat.core.gui.control.Controller) EPMultiArtefactsController(org.olat.portfolio.ui.artefacts.view.EPMultiArtefactsController) BasicController(org.olat.core.gui.control.controller.BasicController) EPCollectRestrictionResultController(org.olat.portfolio.ui.structel.edit.EPCollectRestrictionResultController)

Aggregations

CollectRestriction (org.olat.portfolio.model.restriction.CollectRestriction)26 ArrayList (java.util.ArrayList)10 AbstractArtefact (org.olat.portfolio.model.artefacts.AbstractArtefact)10 SingleSelection (org.olat.core.gui.components.form.flexible.elements.SingleSelection)8 EPStructureElement (org.olat.portfolio.model.structel.EPStructureElement)8 StaticTextElement (org.olat.core.gui.components.form.flexible.elements.StaticTextElement)6 EPStructuredMapTemplate (org.olat.portfolio.model.structel.EPStructuredMapTemplate)6 FormLink (org.olat.core.gui.components.form.flexible.elements.FormLink)4 RichTextElement (org.olat.core.gui.components.form.flexible.elements.RichTextElement)4 TextElement (org.olat.core.gui.components.form.flexible.elements.TextElement)4 PortfolioStructure (org.olat.portfolio.model.structel.PortfolioStructure)4 EPMultiArtefactsController (org.olat.portfolio.ui.artefacts.view.EPMultiArtefactsController)4 EPCollectRestrictionResultController (org.olat.portfolio.ui.structel.edit.EPCollectRestrictionResultController)4 CommentAndRatingDefaultSecurityCallback (org.olat.core.commons.services.commentAndRating.CommentAndRatingDefaultSecurityCallback)2 CommentAndRatingSecurityCallback (org.olat.core.commons.services.commentAndRating.CommentAndRatingSecurityCallback)2 UserCommentsAndRatingsController (org.olat.core.commons.services.commentAndRating.ui.UserCommentsAndRatingsController)2 FormLayoutContainer (org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer)2 Controller (org.olat.core.gui.control.Controller)2 BasicController (org.olat.core.gui.control.controller.BasicController)2 EPArtefactHandler (org.olat.portfolio.EPArtefactHandler)2