/** * */ package org.nightlabs.jfire.reporting.admin.ui.category.editor; import javax.jdo.FetchPlan; import org.nightlabs.base.ui.entity.editor.EntityEditor; import org.nightlabs.base.ui.entity.editor.IEntityEditorPageController; import org.nightlabs.inheritance.Inheritable; import org.nightlabs.jfire.base.admin.ui.editor.authority.AuthorityPageControllerHelper; import org.nightlabs.jfire.base.admin.ui.editor.authority.InheritedSecuringAuthorityResolver; import org.nightlabs.jfire.base.ui.entity.editor.ActiveEntityEditorPageController; import org.nightlabs.jfire.reporting.admin.ui.layout.editor.IReportRegistryItemEditorInput; import org.nightlabs.jfire.reporting.dao.ReportRegistryItemDAO; import org.nightlabs.jfire.reporting.layout.ReportRegistryItem; import org.nightlabs.jfire.security.id.AuthorityID; import org.nightlabs.progress.ProgressMonitor; /** * {@link IEntityEditorPageController} to be used for authority pages for a {@link ReportRegistryItem}. * * @author Alexander Bieber <!-- alex [AT] nightlabs [DOT] de --> */ public class AuthorityPageController extends ActiveEntityEditorPageController<ReportRegistryItem> { private final AuthorityPageControllerHelper pageControllerHelper = new AuthorityPageControllerHelper() { @Override protected InheritedSecuringAuthorityResolver createInheritedSecuringAuthorityResolver() { return new InheritedSecuringAuthorityResolver() { @Override public AuthorityID getInheritedSecuringAuthorityID(ProgressMonitor monitor) { if (getControllerObject().getParentCategory() != null) return getControllerObject().getParentCategory().getSecuringAuthorityID(); return null; } // @Override // public boolean isInitiallyInherited(ProgressMonitor monitor) { // return getControllerObject().getFieldMetaData(FieldName.securingAuthorityID).isValueInherited(); // } @Override public Inheritable retrieveSecuredObjectInheritable(ProgressMonitor monitor) { return loadRegistryItem(monitor); } }; } }; /** * @param editor */ public AuthorityPageController(EntityEditor editor) { super(editor); } /** * @param editor * @param startBackgroundLoading */ public AuthorityPageController(EntityEditor editor, boolean startBackgroundLoading) { super(editor, startBackgroundLoading); } public AuthorityPageControllerHelper getAuthorityPageControllerHelper() { return pageControllerHelper; } @Override protected String[] getEntityFetchGroups() { return new String[] { FetchPlan.DEFAULT, ReportRegistryItem.FETCH_GROUP_PARENT_CATEGORY, ReportRegistryItem.FETCH_GROUP_FIELD_META_DATA }; } private ReportRegistryItem loadRegistryItem(ProgressMonitor monitor) { IReportRegistryItemEditorInput input = (IReportRegistryItemEditorInput) getEntityEditor().getEditorInput(); return ReportRegistryItemDAO.sharedInstance().getReportRegistryItem(input.getReportRegistryItemID(), getEntityFetchGroups(), monitor); } @Override protected ReportRegistryItem retrieveEntity(ProgressMonitor monitor) { ReportRegistryItem item = loadRegistryItem(monitor); pageControllerHelper.load(item, monitor); return item; } @Override protected ReportRegistryItem storeEntity(ReportRegistryItem controllerObject, ProgressMonitor monitor) { // Storing data is delegated to the helper, too. pageControllerHelper.store(monitor); return getControllerObject(); } }