package com.celements.collections; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.xwiki.component.annotation.Component; import org.xwiki.model.reference.DocumentReference; import com.celements.web.comparators.BaseObjectComparator; import com.xpn.xwiki.doc.XWikiDocument; import com.xpn.xwiki.objects.BaseObject; @Component public class CollectionsService implements ICollectionsService { public List<BaseObject> getObjectsOrdered(XWikiDocument doc, DocumentReference classRef, String orderField, boolean asc) { return getObjectsOrdered(doc, classRef, orderField, asc, null, false); } /** * Get a list of Objects for a Document sorted by one or two fields. * * @param doc * The Document where the Objects are attached. * @param classRef * The reference to the class of the Objects to return * @param orderField1 * Field to order the objects by. First priority. * @param asc1 * Order first priority ascending or descending. * @param orderField2 * Field to order the objects by. Second priority. * @param asc2 * Order second priority ascending or descending. * @return List of objects ordered as specified */ public List<BaseObject> getObjectsOrdered(XWikiDocument doc, DocumentReference classRef, String orderField1, boolean asc1, String orderField2, boolean asc2) { List<BaseObject> resultList = new ArrayList<BaseObject>(); if (doc != null) { List<BaseObject> allObjects = doc.getXObjects(classRef); if (allObjects != null) { for (BaseObject obj : allObjects) { if (obj != null) { resultList.add(obj); } } } Collections.sort(resultList, new BaseObjectComparator(orderField1, asc1, orderField2, asc2)); } return resultList; } }