Search in sources :

Example 26 with CPItem

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

the class CPCore method findReferencesToResource.

/**
 * Searches for <item>-elements or <dependency>-elements which references to
 * the resource with id "resourceIdentifier"
 *
 * if an element is found, search is aborted and the found element is returned
 *
 * @param resourceIdentifier
 * @return the found element or null
 */
public DefaultElement findReferencesToResource(String resourceIdentifier) {
    // search for <item identifierref="resourceIdentifier" >
    for (Iterator<CPOrganization> it = rootNode.getOrganizations().getOrganizationIterator(); it.hasNext(); ) {
        CPOrganization org = it.next();
        for (Iterator<CPItem> itO = org.getItems().iterator(); itO.hasNext(); ) {
            CPItem item = itO.next();
            CPItem found = _findReferencesToRes(item, resourceIdentifier);
            if (found != null)
                return found;
        }
    }
    // search for <dependency identifierref="resourceIdentifier" >
    for (Iterator<CPResource> itRes = rootNode.getResources().getResourceIterator(); itRes.hasNext(); ) {
        CPResource res = itRes.next();
        for (Iterator<CPDependency> itDep = res.getDependencyIterator(); itDep.hasNext(); ) {
            CPDependency dep = itDep.next();
            if (dep.getIdentifierRef().equals(resourceIdentifier))
                return dep;
        }
    }
    return null;
}
Also used : CPResource(org.olat.ims.cp.objects.CPResource) CPOrganization(org.olat.ims.cp.objects.CPOrganization) CPItem(org.olat.ims.cp.objects.CPItem) CPDependency(org.olat.ims.cp.objects.CPDependency)

Example 27 with CPItem

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

the class CPCore method getPageByItemID.

/**
 * Gets the linked page for the <item> element with given id if no resource
 * (page) is referenced, null is returned
 *
 * @param id
 * @return
 */
public String getPageByItemID(String id) {
    DefaultElement ele = getElementByIdentifier(id);
    if (ele instanceof CPItem) {
        CPItem item = (CPItem) ele;
        if (item.getIdentifierRef() == null || item.getIdentifierRef().equals("")) {
            return null;
        }
        DefaultElement resElement = getElementByIdentifier(item.getIdentifierRef());
        if (resElement instanceof CPResource) {
            CPResource res = (CPResource) resElement;
            return res.getFullHref();
        } else {
            Logger log = Logger.getLogger(this.getClass().getName());
            log.info("method: getPageByItemID(" + id + ") :  invalid manifest.. identifierred of <item> must point to a <resource>-element");
            return null;
        }
    } else {
        return null;
    }
}
Also used : DefaultElement(org.dom4j.tree.DefaultElement) CPResource(org.olat.ims.cp.objects.CPResource) Logger(java.util.logging.Logger) CPItem(org.olat.ims.cp.objects.CPItem)

Example 28 with CPItem

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

the class CPTreeDataModel method addElementToPath.

/**
 * @param identifier
 * @param path
 * @param slash
 * @param elem
 */
private void addElementToPath(DefaultElement elem, StringBuffer path) {
    final String slash = "/";
    if (elem instanceof CPItem) {
        CPItem item = (CPItem) elem;
        path.insert(0, slash).insert(1, getNodeIDForIdentifier(item.getIdentifier()));
        DefaultElement parent = item.getParentElement();
        if (parent != null)
            addElementToPath(parent, path);
    } else if (elem instanceof CPOrganization) {
        CPOrganization item = (CPOrganization) elem;
        path.insert(0, slash).insert(1, getNodeIDForIdentifier(item.getIdentifier()));
    }
}
Also used : DefaultElement(org.dom4j.tree.DefaultElement) CPItem(org.olat.ims.cp.objects.CPItem) CPOrganization(org.olat.ims.cp.objects.CPOrganization)

Example 29 with CPItem

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

the class CPTreeDataModel method getChildrenFor.

public List<TreeNode> getChildrenFor(String nodeId) {
    List<TreeNode> nodeList = new ArrayList<TreeNode>();
    nodeId = getIdentifierForNodeID(nodeId);
    DefaultElement el = cp.getElementByIdentifier(nodeId);
    if (el == null) {
        log.info("element not found (id " + nodeId + ")");
        return nodeList;
    }
    try {
        if (el.getName().equals(CPCore.ORGANIZATION)) {
            CPOrganization org = (CPOrganization) el;
            for (Iterator<CPItem> it = org.getItemIterator(); it.hasNext(); ) {
                CPItem item = it.next();
                addItem(nodeList, item);
            }
        } else if (el.getName().equals(CPCore.ITEM)) {
            CPItem pItem = (CPItem) el;
            for (Iterator<CPItem> it = pItem.getItemIterator(); it.hasNext(); ) {
                CPItem item = it.next();
                addItem(nodeList, item);
            }
        } else {
            // element is not item nor orga -> ergo wrong element
            log.info("unknown element while building treemodel for gui (id: " + nodeId + ")");
        }
    } catch (JSONException e) {
        log.error("error while building treemodel");
    }
    return nodeList;
}
Also used : DefaultElement(org.dom4j.tree.DefaultElement) GenericTreeNode(org.olat.core.gui.components.tree.GenericTreeNode) TreeNode(org.olat.core.gui.components.tree.TreeNode) ArrayList(java.util.ArrayList) Iterator(java.util.Iterator) JSONException(org.json.JSONException) CPOrganization(org.olat.ims.cp.objects.CPOrganization) CPItem(org.olat.ims.cp.objects.CPItem)

Example 30 with CPItem

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

the class CPCore method removeElement.

/**
 * removes an element with identifier "identifier" from the manifest
 *
 * @param identifier the identifier if the element to remove
 * @param booleanFlag indicates whether to remove linked resources as well...!
 *          (needed for moving elements)
 */
public void removeElement(String identifier, boolean resourceFlag) {
    DefaultElement el = rootNode.getElementByIdentifier(identifier);
    if (el != null) {
        if (el instanceof CPItem) {
            // element is CPItem
            CPItem item = (CPItem) el;
            // first remove resources
            if (resourceFlag) {
                // Delete children (depth first search)
                removeChildElements(item, resourceFlag);
                // remove referenced resource
                CPResource res = (CPResource) rootNode.getElementByIdentifier(item.getIdentifierRef());
                if (res != null && referencesCount(res) == 1) {
                    res.removeFromManifest();
                }
            }
            // then remove item
            item.removeFromManifest();
        } else if (el instanceof CPOrganization) {
            // element is organization
            CPOrganization org = (CPOrganization) el;
            org.removeFromManifest(resourceFlag);
        } else if (el instanceof CPMetadata) {
            // element is <metadata>
            CPMetadata md = (CPMetadata) el;
            md.removeFromManifest();
        }
    } else {
        throw new OLATRuntimeException(CPOrganizations.class, "couldn't remove element with id \"" + identifier + "\"! Element not found in manifest ", new Exception());
    }
}
Also used : DefaultElement(org.dom4j.tree.DefaultElement) OLATRuntimeException(org.olat.core.logging.OLATRuntimeException) CPResource(org.olat.ims.cp.objects.CPResource) CPItem(org.olat.ims.cp.objects.CPItem) CPOrganization(org.olat.ims.cp.objects.CPOrganization) OLATRuntimeException(org.olat.core.logging.OLATRuntimeException) CPMetadata(org.olat.ims.cp.objects.CPMetadata)

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