Search in sources :

Example 1 with CategoryLabel

use of org.olat.course.editor.PublishStepCatalog.CategoryLabel in project openolat by klemens.

the class PublishProcess method publishToCatalog.

protected void publishToCatalog(String choiceValue, List<CategoryLabel> labels) {
    CoursePropertyManager cpm = course.getCourseEnvironment().getCoursePropertyManager();
    CourseNode rootNode = course.getRunStructure().getRootNode();
    Property prop = cpm.findCourseNodeProperty(rootNode, null, null, "catalog-choice");
    if (prop == null) {
        prop = cpm.createCourseNodePropertyInstance(rootNode, null, null, "catalog-choice", null, null, choiceValue, null);
        cpm.saveProperty(prop);
    } else {
        prop.setStringValue(choiceValue);
        cpm.updateProperty(prop);
    }
    CatalogManager cm = CoreSpringFactory.getImpl(CatalogManager.class);
    List<CatalogEntry> refParentCategories = cm.getCatalogCategoriesFor(repositoryEntry);
    a_a: for (CategoryLabel label : labels) {
        CatalogEntry category = label.getCategory();
        CatalogEntry parentCategory = label.getParentCategory();
        if (label.isDeleted()) {
            // test
            if (category.getKey() != null) {
                List<CatalogEntry> children = cm.getChildrenOf(category);
                for (CatalogEntry child : children) {
                    if (child.getRepositoryEntry() != null && child.getRepositoryEntry().equalsByPersistableKey(repositoryEntry)) {
                        cm.deleteCatalogEntry(child);
                    }
                }
            }
        } else if (category.getKey() == null) {
            // it's a new entry -> check if not already in catalog at this position
            for (Iterator<CatalogEntry> refIt = refParentCategories.iterator(); refIt.hasNext(); ) {
                CatalogEntry refParentCategory = refIt.next();
                if (refParentCategory.equalsByPersistableKey(parentCategory)) {
                    refIt.remove();
                    break a_a;
                }
            }
            category.setOwnerGroup(BaseSecurityManager.getInstance().createAndPersistSecurityGroup());
            cm.addCatalogEntry(parentCategory, category);
        } else {
            for (Iterator<CatalogEntry> refIt = refParentCategories.iterator(); refIt.hasNext(); ) {
                CatalogEntry refParentCategory = refIt.next();
                if (refParentCategory.equalsByPersistableKey(category)) {
                    refIt.remove();
                }
            }
        }
    }
}
Also used : CatalogEntry(org.olat.repository.CatalogEntry) List(java.util.List) ArrayList(java.util.ArrayList) CourseNode(org.olat.course.nodes.CourseNode) CategoryLabel(org.olat.course.editor.PublishStepCatalog.CategoryLabel) Property(org.olat.properties.Property) CoursePropertyManager(org.olat.course.properties.CoursePropertyManager) CatalogManager(org.olat.repository.manager.CatalogManager)

Example 2 with CategoryLabel

use of org.olat.course.editor.PublishStepCatalog.CategoryLabel in project OpenOLAT by OpenOLAT.

the class PublishProcess method publishToCatalog.

protected void publishToCatalog(String choiceValue, List<CategoryLabel> labels) {
    CoursePropertyManager cpm = course.getCourseEnvironment().getCoursePropertyManager();
    CourseNode rootNode = course.getRunStructure().getRootNode();
    Property prop = cpm.findCourseNodeProperty(rootNode, null, null, "catalog-choice");
    if (prop == null) {
        prop = cpm.createCourseNodePropertyInstance(rootNode, null, null, "catalog-choice", null, null, choiceValue, null);
        cpm.saveProperty(prop);
    } else {
        prop.setStringValue(choiceValue);
        cpm.updateProperty(prop);
    }
    CatalogManager cm = CoreSpringFactory.getImpl(CatalogManager.class);
    List<CatalogEntry> refParentCategories = cm.getCatalogCategoriesFor(repositoryEntry);
    a_a: for (CategoryLabel label : labels) {
        CatalogEntry category = label.getCategory();
        CatalogEntry parentCategory = label.getParentCategory();
        if (label.isDeleted()) {
            // test
            if (category.getKey() != null) {
                List<CatalogEntry> children = cm.getChildrenOf(category);
                for (CatalogEntry child : children) {
                    if (child.getRepositoryEntry() != null && child.getRepositoryEntry().equalsByPersistableKey(repositoryEntry)) {
                        cm.deleteCatalogEntry(child);
                    }
                }
            }
        } else if (category.getKey() == null) {
            // it's a new entry -> check if not already in catalog at this position
            for (Iterator<CatalogEntry> refIt = refParentCategories.iterator(); refIt.hasNext(); ) {
                CatalogEntry refParentCategory = refIt.next();
                if (refParentCategory.equalsByPersistableKey(parentCategory)) {
                    refIt.remove();
                    break a_a;
                }
            }
            category.setOwnerGroup(BaseSecurityManager.getInstance().createAndPersistSecurityGroup());
            cm.addCatalogEntry(parentCategory, category);
        } else {
            for (Iterator<CatalogEntry> refIt = refParentCategories.iterator(); refIt.hasNext(); ) {
                CatalogEntry refParentCategory = refIt.next();
                if (refParentCategory.equalsByPersistableKey(category)) {
                    refIt.remove();
                }
            }
        }
    }
}
Also used : CatalogEntry(org.olat.repository.CatalogEntry) List(java.util.List) ArrayList(java.util.ArrayList) CourseNode(org.olat.course.nodes.CourseNode) CategoryLabel(org.olat.course.editor.PublishStepCatalog.CategoryLabel) Property(org.olat.properties.Property) CoursePropertyManager(org.olat.course.properties.CoursePropertyManager) CatalogManager(org.olat.repository.manager.CatalogManager)

Aggregations

ArrayList (java.util.ArrayList)2 List (java.util.List)2 CategoryLabel (org.olat.course.editor.PublishStepCatalog.CategoryLabel)2 CourseNode (org.olat.course.nodes.CourseNode)2 CoursePropertyManager (org.olat.course.properties.CoursePropertyManager)2 Property (org.olat.properties.Property)2 CatalogEntry (org.olat.repository.CatalogEntry)2 CatalogManager (org.olat.repository.manager.CatalogManager)2