Search in sources :

Example 11 with CPItem

use of org.olat.ims.cp.objects.CPItem in project openolat by klemens.

the class CPTreeController method getParentIdentifier.

/**
 * Retrieves the parent identifier of the current page
 *
 * @return The identifier of the current page's parent
 */
private String getParentIdentifier() {
    DefaultElement currentElem = CPManager.getInstance().getElementByIdentifier(cp, currentPage.getIdentifier());
    // Get the parent node to be displayed after deletion.
    String parentIdentifier = null;
    if (currentElem instanceof CPItem) {
        Element parent = ((CPItem) currentElem).getParentElement();
        if (parent instanceof CPItem) {
            CPItem parentItem = (CPItem) parent;
            parentIdentifier = parentItem.getIdentifier();
        } else if (parent instanceof CPOrganization) {
            CPOrganization parentItem = (CPOrganization) parent;
            parentIdentifier = parentItem.getIdentifier();
        }
    }
    return parentIdentifier;
}
Also used : DefaultElement(org.dom4j.tree.DefaultElement) DefaultElement(org.dom4j.tree.DefaultElement) Element(org.dom4j.Element) CPItem(org.olat.ims.cp.objects.CPItem) CPOrganization(org.olat.ims.cp.objects.CPOrganization)

Example 12 with CPItem

use of org.olat.ims.cp.objects.CPItem in project openolat by klemens.

the class CPCore method addElementAfter.

/**
 * adds an element to the cp. Adds it after the item with identifier "id"
 *
 * @param newElement
 * @param id
 * @return
 */
public boolean addElementAfter(DefaultElement newElement, String id) {
    DefaultElement beforeElement = rootNode.getElementByIdentifier(id);
    if (beforeElement == null)
        return false;
    if (beforeElement instanceof CPItem) {
        // beforeElement is a <item>
        // ==> newElement has to be an <item>
        CPItem beforeItem = (CPItem) beforeElement;
        DefaultElement parent = beforeItem.getParentElement();
        if (!(newElement instanceof CPItem)) {
            throw new OLATRuntimeException(CPOrganizations.class, "only <item> element allowed", new Exception());
        }
        if (parent instanceof CPItem) {
            CPItem p = (CPItem) parent;
            p.addItemAt((CPItem) newElement, beforeItem.getPosition() + 1);
        } else if (parent instanceof CPOrganization) {
            CPOrganization o = (CPOrganization) parent;
            o.addItemAt((CPItem) newElement, beforeItem.getPosition() + 1);
        } else {
            throw new OLATRuntimeException(CPOrganizations.class, "you cannot add an <item> element to a " + parent.getName() + " element", new Exception());
        }
    }
    return true;
}
Also used : CPOrganizations(org.olat.ims.cp.objects.CPOrganizations) DefaultElement(org.dom4j.tree.DefaultElement) OLATRuntimeException(org.olat.core.logging.OLATRuntimeException) CPItem(org.olat.ims.cp.objects.CPItem) OLATRuntimeException(org.olat.core.logging.OLATRuntimeException) CPOrganization(org.olat.ims.cp.objects.CPOrganization)

Example 13 with CPItem

use of org.olat.ims.cp.objects.CPItem in project openolat by klemens.

the class CPCore method copyElement.

/**
 * duplicates an element and inserts it after targetID
 *
 * @param sourceID
 * @param targetID
 */
public String copyElement(String sourceID, String targetID) {
    DefaultElement elementToCopy = rootNode.getElementByIdentifier(sourceID);
    if (elementToCopy == null) {
        throw new OLATRuntimeException(CPOrganizations.class, "element with identifier \"" + sourceID + "\" not found..!", new Exception());
    }
    if (elementToCopy instanceof CPItem) {
        CPItem newItem = (CPItem) elementToCopy.clone();
        cloneResourceOfItemAndSubitems(newItem);
        addElementAfter(newItem, targetID);
        return newItem.getIdentifier();
    } else {
        // not yet supported
        throw new OLATRuntimeException(CPOrganizations.class, "You can only copy <item>-elements...!", new Exception());
    }
}
Also used : DefaultElement(org.dom4j.tree.DefaultElement) OLATRuntimeException(org.olat.core.logging.OLATRuntimeException) OLATRuntimeException(org.olat.core.logging.OLATRuntimeException) CPItem(org.olat.ims.cp.objects.CPItem)

Example 14 with CPItem

use of org.olat.ims.cp.objects.CPItem in project openolat by klemens.

the class CPCore method referencesCount.

/**
 * Checks how many item-elements link to the given resource element.
 *
 * @param resource
 * @return
 */
protected int referencesCount(CPResource resource) {
    int linkCount = 0;
    Vector<CPItem> items = new Vector<CPItem>();
    for (Iterator<CPOrganization> it = rootNode.getOrganizations().getOrganizationIterator(); it.hasNext(); ) {
        CPOrganization org = it.next();
        items.addAll(org.getAllItems());
    }
    for (CPItem item : items) {
        if (item.getIdentifierRef().equals(resource.getIdentifier()))
            linkCount++;
    }
    Vector<CPDependency> dependencies = rootNode.getResources().getAllDependencies();
    for (CPDependency dependency : dependencies) {
        if (dependency.getIdentifierRef().equals(resource.getIdentifier()))
            linkCount++;
    }
    return linkCount;
}
Also used : Vector(java.util.Vector) CPItem(org.olat.ims.cp.objects.CPItem) CPOrganization(org.olat.ims.cp.objects.CPOrganization) CPDependency(org.olat.ims.cp.objects.CPDependency)

Example 15 with CPItem

use of org.olat.ims.cp.objects.CPItem in project OpenOLAT by OpenOLAT.

the class CPManagerTest method testAddElementAfter.

public void testAddElementAfter() {
    CPItem newItem = new CPItem();
    mgr.addElementAfter(cp, newItem, ITEM_ID);
    assertTrue("The new item wasn't inserted at the second position.", newItem.getPosition() == 1);
}
Also used : CPItem(org.olat.ims.cp.objects.CPItem)

Aggregations

CPItem (org.olat.ims.cp.objects.CPItem)32 CPOrganization (org.olat.ims.cp.objects.CPOrganization)22 DefaultElement (org.dom4j.tree.DefaultElement)20 OLATRuntimeException (org.olat.core.logging.OLATRuntimeException)12 CPResource (org.olat.ims.cp.objects.CPResource)10 CPDependency (org.olat.ims.cp.objects.CPDependency)6 CPOrganizations (org.olat.ims.cp.objects.CPOrganizations)6 CPFile (org.olat.ims.cp.objects.CPFile)4 ArrayList (java.util.ArrayList)2 Iterator (java.util.Iterator)2 Vector (java.util.Vector)2 Logger (java.util.logging.Logger)2 Element (org.dom4j.Element)2 JSONException (org.json.JSONException)2 Test (org.junit.Test)2 GenericTreeNode (org.olat.core.gui.components.tree.GenericTreeNode)2 TreeNode (org.olat.core.gui.components.tree.TreeNode)2 VFSLeaf (org.olat.core.util.vfs.VFSLeaf)2 ContentPackage (org.olat.ims.cp.ContentPackage)2 CPMetadata (org.olat.ims.cp.objects.CPMetadata)2