package org.nightlabs.jfire.trade.admin.ui.editor;
import org.nightlabs.base.ui.entity.editor.EntityEditor;
import org.nightlabs.jfire.accounting.book.LocalAccountantDelegate;
import org.nightlabs.jfire.base.jdo.IJDOObjectDAO;
import org.nightlabs.jfire.store.ProductType;
import org.nightlabs.jfire.store.dao.ProductTypeDAO;
import org.nightlabs.jfire.store.id.ProductTypeID;
import org.nightlabs.jfire.trade.admin.ui.moneyflow.MoneyFlowMappingTree;
import org.nightlabs.jfire.trade.admin.ui.resource.Messages;
import org.nightlabs.progress.ProgressMonitor;
import org.nightlabs.progress.SubProgressMonitor;
/**
* @author Daniel.Mazurek [at] NightLabs [dot] de
*
*/
public abstract class ProductTypeMoneyFlowConfigPageController<
ProductTypeType extends ProductType, JDOObjectDAOType extends IJDOObjectDAO<ProductTypeType>>
extends AbstractProductTypePageController<ProductTypeType>
{
private static final long serialVersionUID = 1L;
private LocalAccountantDelegate localAccountantDelegate;
/**
* @param editor
*/
public ProductTypeMoneyFlowConfigPageController(EntityEditor editor) {
super(editor);
}
/**
* @param editor
* @param startBackgroundLoading
*/
public ProductTypeMoneyFlowConfigPageController(EntityEditor editor,
boolean startBackgroundLoading) {
super(editor, startBackgroundLoading);
}
protected abstract JDOObjectDAOType getProductTypeDAO();
@Override
protected String[] getEntityFetchGroups() {
return MoneyFlowMappingTree.DEFAULT_PTYPE_FETCH_GROUPS;
}
@Override
protected ProductTypeType storeEntity(ProductTypeType controllerObject,
ProgressMonitor monitor) {
return getProductTypeDAO().storeJDOObject(controllerObject, true, getEntityFetchGroups(), getEntityMaxFetchDepth(), monitor);
}
@Override
protected ProductTypeType retrieveEntity(ProgressMonitor monitor) {
// Load nothing as this is done by MoneyFlowConfigComposite.setProductType(...)
monitor.beginTask(Messages.getString("org.nightlabs.jfire.trade.admin.ui.editor.ProductTypeMoneyFlowConfigPageController.loadMoneyFlowConfigMonitor.task.name"), 3); //$NON-NLS-1$
monitor.worked(1);
ProductTypeType productType = (ProductTypeType) ProductTypeDAO.sharedInstance().getProductType(
getProductTypeID(),
getEntityFetchGroups(),
getEntityMaxFetchDepth(),
new SubProgressMonitor(monitor, 2));
monitor.done();
return productType;
}
@Override
public ProductTypeType getExtendedProductType(ProgressMonitor monitor, ProductTypeID extendedProductTypeID)
{
return (ProductTypeType) ProductTypeDAO.sharedInstance().getProductType(extendedProductTypeID,
getEntityFetchGroups(),
getEntityMaxFetchDepth(),
monitor);
}
public LocalAccountantDelegate getLocalAccountantDelegate() {
return localAccountantDelegate;
}
public void setLocalAccountantDelegate(LocalAccountantDelegate localAccountantDelegate) {
this.localAccountantDelegate = localAccountantDelegate;
}
}