package org.nightlabs.jfire.trade.ui.store; import java.util.Collection; import java.util.List; import java.util.Set; import javax.jdo.FetchPlan; import org.nightlabs.jdo.NLJDOHelper; import org.nightlabs.jfire.base.ui.jdo.tree.ActiveJDOObjectTreeController; import org.nightlabs.jfire.jdo.notification.TreeNodeParentResolver; import org.nightlabs.jfire.store.ProductType; import org.nightlabs.jfire.store.ProductTypeParentResolver; import org.nightlabs.jfire.store.dao.ProductTypeDAO; import org.nightlabs.jfire.store.id.ProductTypeID; import org.nightlabs.progress.ProgressMonitor; public abstract class ActiveProductTypeTreeController extends ActiveJDOObjectTreeController<ProductTypeID, ProductType, ProductTypeTreeNode> { public static final String[] FETCH_GROUPS_PRODUCT_TYPE = { FetchPlan.DEFAULT, ProductType.FETCH_GROUP_NAME, ProductType.FETCH_GROUP_PRODUCT_TYPE_LOCAL, ProductType.FETCH_GROUP_EXTENDED_PRODUCT_TYPE_ID }; @Override protected ProductTypeTreeNode createNode() { return new ProductTypeTreeNode(); } @Override protected TreeNodeParentResolver createTreeNodeParentResolver() { return new ProductTypeParentResolver(); } @Override protected Class<ProductType> getJDOObjectClass() { return ProductType.class; } @Override protected Collection<ProductType> retrieveChildren(ProductTypeID parentID, ProductType parent, ProgressMonitor monitor) { return ProductTypeDAO.sharedInstance().getChildProductTypes(parentID, FETCH_GROUPS_PRODUCT_TYPE, NLJDOHelper.MAX_FETCH_DEPTH_NO_LIMIT, monitor); } @Override protected Collection<ProductType> retrieveJDOObjects(Set<ProductTypeID> objectIDs, ProgressMonitor monitor) { return ProductTypeDAO.sharedInstance().getProductTypes(objectIDs, FETCH_GROUPS_PRODUCT_TYPE, NLJDOHelper.MAX_FETCH_DEPTH_NO_LIMIT, monitor); } @Override protected void sortJDOObjects(List<ProductType> objects) { // no need to sort - maybe later } }