package org.nightlabs.jfire.dynamictrade.admin.ui.editor; import javax.jdo.FetchPlan; import org.nightlabs.base.ui.entity.editor.EntityEditor; import org.nightlabs.jdo.NLJDOHelper; import org.nightlabs.jfire.dynamictrade.admin.ui.resource.Messages; import org.nightlabs.jfire.dynamictrade.dao.DynamicProductTypeDAO; import org.nightlabs.jfire.dynamictrade.store.DynamicProductType; import org.nightlabs.jfire.prop.PropertySet; import org.nightlabs.jfire.store.ProductType; import org.nightlabs.jfire.store.id.ProductTypeID; import org.nightlabs.jfire.trade.admin.ui.editor.AbstractProductTypePageController; import org.nightlabs.progress.ProgressMonitor; import org.nightlabs.progress.SubProgressMonitor; /** * @author Daniel.Mazurek [at] NightLabs [dot] de * */ public class DynamicProductTypePropertySetPageController extends AbstractProductTypePageController<DynamicProductType> { private static final String[] FETCH_GROUPS = new String[] {FetchPlan.DEFAULT, DynamicProductType.FETCH_GROUP_PROPERTY_SET, PropertySet.FETCH_GROUP_DATA_FIELDS, PropertySet.FETCH_GROUP_FULL_DATA, ProductType.FETCH_GROUP_FIELD_METADATA_MAP}; /** * @param editor */ public DynamicProductTypePropertySetPageController(EntityEditor editor) { super(editor); } /** * @param editor * @param startBackgroundLoading */ public DynamicProductTypePropertySetPageController(EntityEditor editor, boolean startBackgroundLoading) { super(editor, startBackgroundLoading); } @Override protected String[] getEntityFetchGroups() { return FETCH_GROUPS; } @Override protected DynamicProductType retrieveEntity(ProgressMonitor monitor) { monitor.beginTask(Messages.getString("org.nightlabs.jfire.dynamictrade.admin.ui.editor.DynamicProductTypePropertySetPageController.loadProductTypeMonitor.task.name"), 3); //$NON-NLS-1$ monitor.worked(1); DynamicProductType productType = DynamicProductTypeDAO.sharedInstance().getDynamicProductType( getProductTypeID(), getEntityFetchGroups(), NLJDOHelper.MAX_FETCH_DEPTH_NO_LIMIT, new SubProgressMonitor(monitor, 2)); monitor.worked(1); return productType; } @Override public DynamicProductType getExtendedProductType(ProgressMonitor monitor , ProductTypeID extendedProductTypeID) { return DynamicProductTypeDAO.sharedInstance().getDynamicProductType(extendedProductTypeID, getEntityFetchGroups(), getEntityMaxFetchDepth(), monitor); } @Override protected DynamicProductType storeEntity(DynamicProductType controllerObject, ProgressMonitor monitor) { return DynamicProductTypeDAO.sharedInstance().storeJDOObject(controllerObject, true, getEntityFetchGroups(), getEntityMaxFetchDepth(), monitor); } public PropertySet getPropertySet() { DynamicProductType spt = getControllerObject(); if (spt == null) // This check seems not necessary (never had an NPE so far), but at least theoretically, this might be null (until the data is loaded). Marco. return null; return spt.getPropertySet(); } }