ObjectList component using sub categories as headers

git-svn-id: https://svn.libreccm.org/ccm/trunk@6134 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2019-06-22 12:39:24 +00:00
parent 8560fba73e
commit b4d71d7613
1 changed files with 122 additions and 0 deletions

View File

@ -0,0 +1,122 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.arsdigita.navigation.ui.object;
import com.arsdigita.categorization.Category;
import com.arsdigita.categorization.CategoryCollection;
import com.arsdigita.cms.ContentItem;
import com.arsdigita.globalization.GlobalizationHelper;
import com.arsdigita.kernel.ACSObject;
import com.arsdigita.navigation.DataCollectionRenderer;
import com.arsdigita.navigation.Navigation;
import com.arsdigita.navigation.ui.AbstractComponent;
import com.arsdigita.persistence.DataCollection;
import com.arsdigita.persistence.SessionManager;
import com.arsdigita.xml.Element;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
*
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/
public class CategoriesObjectList extends AbstractComponent {
private String objectType;
private DataCollectionRenderer renderer;
public CategoriesObjectList() {
super();
objectType = ContentItem.BASE_DATA_OBJECT_TYPE;
}
public DataCollectionRenderer getRenderer() {
return renderer;
}
public String getObjectType() {
return objectType;
}
public void setObjectType(final String objectType) {
this.objectType = objectType;
}
public void setRenderer(final DataCollectionRenderer renderer) {
this.renderer = renderer;
renderer.setPageSize(100);
}
@Override
public void lock() {
super.lock();
renderer.lock();
}
@Override
public Element generateXML(final HttpServletRequest request,
final HttpServletResponse response) {
final Element listRootElem = Navigation
.newElement("categoriesObjectList");
final Category category = getCategory();
final CategoryCollection subCategories = category.getChildren();
while (subCategories.next()) {
generateCategoryListXml(listRootElem, subCategories.getCategory());
}
return listRootElem;
}
private void generateCategoryListXml(final Element rootListElem,
final Category category) {
final String lang = GlobalizationHelper
.getNegotiatedLocale()
.getLanguage();
final Element catListElem = rootListElem
.newChildElement("categoryObjectList");
final Element titleElem = catListElem.newChildElement("title");
titleElem.setText(category.getName(lang));
final Element objListElem = catListElem
.newChildElement("simpleObjectList");
final DataCollection objects = SessionManager
.getSession()
.retrieve(objectType);
objects.addPath("masterVersion.id");
objects.addPath("masterVersion.objectType");
objects.addEqualsFilter("parent.categories.id",
category.getID());
final com.arsdigita.persistence.Filter moreChildren = objects
.addNotInSubqueryFilter(
"parent.id",
"com.arsdigita.categorization.liveIndexItemsInCategory");
moreChildren.set("categoryID", category.getID());
objects.addEqualsFilter(ContentItem.VERSION, ContentItem.LIVE);
System.err.printf("Found %s objects%n", objects.size());
final Element listElem = renderer.generateXML(objects, 0);
objListElem.addContent(listElem);
// final CategorizedCollection items = category
// .getObjects(ACSObject.BASE_DATA_OBJECT_TYPE);
//
// while (items.next()) {
// final items.getACSObject()
// }
}
}