ObjectList component using sub categories as headers
git-svn-id: https://svn.libreccm.org/ccm/trunk@6134 8810af33-2d31-482b-a856-94f89814c4dfmaster
parent
8560fba73e
commit
b4d71d7613
|
|
@ -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()
|
||||
// }
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue