package org.nightlabs.jfire.dynamictrade.admin.ui.tree;
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.dynamictrade.dao.DynamicProductTypeDAO;
import org.nightlabs.jfire.dynamictrade.notification.DynamicProductTypeParentResolver;
import org.nightlabs.jfire.dynamictrade.store.DynamicProductType;
import org.nightlabs.jfire.jdo.notification.TreeNodeParentResolver;
import org.nightlabs.jfire.store.ProductType;
import org.nightlabs.jfire.store.id.ProductTypeID;
import org.nightlabs.progress.ProgressMonitor;
public abstract class ActiveDynamicProductTypeTreeController
extends ActiveJDOObjectTreeController<ProductTypeID, DynamicProductType, DynamicProductTypeTreeNode>
{
@Override
protected DynamicProductTypeTreeNode createNode()
{
return new DynamicProductTypeTreeNode();
}
public static final String[] FETCH_GROUPS_DYNAMIC_PRODUCT_TYPE = {
FetchPlan.DEFAULT, ProductType.FETCH_GROUP_NAME,
ProductType.FETCH_GROUP_EXTENDED_PRODUCT_TYPE_ID,
// DynamicProductType.FETCH_GROUP_OWNER, DynamicProductType.FETCH_GROUP_DELIVERY_CONFIGURATION,
// DynamicProductType.FETCH_GROUP_EXTENDED_PRODUCT_TYPE
};
@Override
protected Collection<DynamicProductType> retrieveChildren(ProductTypeID parentID, DynamicProductType parent, ProgressMonitor monitor)
{
Collection<DynamicProductType> res = DynamicProductTypeDAO.sharedInstance().getChildDynamicProductTypes(
parentID, FETCH_GROUPS_DYNAMIC_PRODUCT_TYPE, NLJDOHelper.MAX_FETCH_DEPTH_NO_LIMIT,
monitor);
return res;
}
@Override
protected Collection<DynamicProductType> retrieveJDOObjects(Set<ProductTypeID> objectIDs, ProgressMonitor monitor)
{
Collection<DynamicProductType> res = DynamicProductTypeDAO.sharedInstance().getDynamicProductTypes(
objectIDs, FETCH_GROUPS_DYNAMIC_PRODUCT_TYPE, NLJDOHelper.MAX_FETCH_DEPTH_NO_LIMIT,
monitor);
return res;
}
@Override
protected void sortJDOObjects(List<DynamicProductType> objects)
{
// no need to sort now - later maybe
}
@Override
protected TreeNodeParentResolver createTreeNodeParentResolver()
{
return new DynamicProductTypeParentResolver();
}
@Override
protected Class<DynamicProductType> getJDOObjectClass()
{
return DynamicProductType.class;
}
}