package org.nightlabs.jfire.trade.ui.articlecontainer.header.recurring; import java.util.List; import java.util.Set; import javax.jdo.FetchPlan; import org.nightlabs.jdo.NLJDOHelper; import org.nightlabs.jfire.base.jdo.JDOObjectID2PCClassMap; import org.nightlabs.jfire.trade.ArticleContainer; import org.nightlabs.jfire.trade.Order; import org.nightlabs.jfire.trade.id.ArticleContainerID; import org.nightlabs.jfire.trade.id.OrderID; import org.nightlabs.jfire.trade.recurring.RecurringOrder; import org.nightlabs.jfire.trade.recurring.dao.RecurringOrderDAO; import org.nightlabs.jfire.trade.ui.articlecontainer.header.ArticleContainerRootTreeNode; import org.nightlabs.jfire.trade.ui.articlecontainer.header.HeaderTreeNode; import org.nightlabs.jfire.transfer.id.AnchorID; import org.nightlabs.progress.ProgressMonitor; import org.nightlabs.util.CollectionUtil; /** * @author Fitas Amine - fitas at nightlabs dot de */ public class RecurringOrderRootTreeNode extends ArticleContainerRootTreeNode { public static final String[] FETCH_GROUPS_ORDER = new String[] { FetchPlan.DEFAULT, Order.FETCH_GROUP_CURRENCY, Order.FETCH_GROUP_CUSTOMER_ID, Order.FETCH_GROUP_VENDOR_ID }; public RecurringOrderRootTreeNode(HeaderTreeNode parent, boolean purchaseMode, boolean endCustomerMode) { super( parent, "Orders", //$NON-NLS-1$ parent.getHeaderTreeComposite().getImageOrderRootTreeNode(), purchaseMode, endCustomerMode ); init(); } @Override protected HeaderTreeNode createArticleContainerNode(byte position, ArticleContainer articleContainer) { return new RecurringOrderTreeNode(this, position, (RecurringOrder) articleContainer); } @Override protected List<Object> doLoadChildElements(AnchorID vendorID, AnchorID customerID, long rangeBeginIdx, long rangeEndIdx, ProgressMonitor monitor ) throws Exception { AnchorID endCustomerID = null; if (isEndCustomerMode()) { endCustomerID = customerID; customerID = null; } return CollectionUtil.castList( RecurringOrderDAO.sharedInstance().getRecurringOrders( vendorID, customerID, endCustomerID, rangeBeginIdx, rangeEndIdx, FETCH_GROUPS_ORDER, NLJDOHelper.MAX_FETCH_DEPTH_NO_LIMIT, monitor ) ); } @Override protected List<ArticleContainer> doLoadNewArticleContainers( Set<ArticleContainerID> articleContainerIDs, ProgressMonitor monitor) { Set<OrderID> orderIDs = CollectionUtil.castSet(articleContainerIDs); return CollectionUtil.castList(RecurringOrderDAO.sharedInstance().getRecurringOrders( orderIDs, FETCH_GROUPS_ORDER, NLJDOHelper.MAX_FETCH_DEPTH_NO_LIMIT, monitor) ); } @Override protected boolean acceptNewArticleContainer(Object newObjectID) { Class<?> objectClass = JDOObjectID2PCClassMap.sharedInstance().getPersistenceCapableClass(newObjectID); return RecurringOrder.class.isAssignableFrom(objectClass); } }