package org.nightlabs.jfire.trade.ui.store; import java.util.Collection; import java.util.Map; import java.util.Set; import javax.jdo.FetchPlan; import org.nightlabs.jdo.NLJDOHelper; import org.nightlabs.jfire.base.ui.jdo.tree.lazy.ActiveJDOObjectLazyTreeController; 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; /** * @author Fitas Amine - fitas [dot] nightlabs [dot] de * */ public class ActiveProductTypeLazyTreeController extends ActiveJDOObjectLazyTreeController<ProductTypeID, ProductType, ProductTypeLazyTreeNode> { 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 ProductTypeLazyTreeNode createNode() { return new ProductTypeLazyTreeNode(); } @Override protected TreeNodeParentResolver createTreeNodeParentResolver() { return new ProductTypeParentResolver(); } @Override protected Class<ProductType> getJDOObjectClass() { return ProductType.class; } @Override protected Collection<ProductTypeID> retrieveChildObjectIDs(ProductTypeID parentID, ProgressMonitor monitor) { return ProductTypeDAO.sharedInstance().getChildProductTypesIDs(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 Map<ProductTypeID, Long> retrieveChildCount( Set<ProductTypeID> parentIDs, ProgressMonitor monitor) { return ProductTypeDAO.sharedInstance().getChildProductTypeCounts(parentIDs, monitor); } }