package org.nightlabs.jfire.trade.admin.ui.editor;
import javax.jdo.FetchPlan;
import javax.jdo.JDOHelper;
import org.nightlabs.base.ui.entity.editor.EntityEditor;
import org.nightlabs.jdo.NLJDOHelper;
import org.nightlabs.jfire.base.ui.entity.editor.ActiveEntityEditorPageController;
import org.nightlabs.jfire.store.Unit;
import org.nightlabs.jfire.store.dao.UnitDAO;
import org.nightlabs.jfire.store.id.UnitID;
import org.nightlabs.progress.ProgressMonitor;
import org.nightlabs.progress.SubProgressMonitor;
public class UnitEditorPageController
extends ActiveEntityEditorPageController<Unit>
{
public static final String[] FETCH_GROUP = new String[] {
FetchPlan.DEFAULT,
Unit.FETCH_GROUP_NAME,
Unit.FETCH_GROUP_SYMBOL};
public UnitEditorPageController(EntityEditor editor) {
super(editor);
}
@Override
protected String[] getEntityFetchGroups() {
return FETCH_GROUP;
}
@Override
protected Unit retrieveEntity(ProgressMonitor monitor) {
Unit unit = UnitDAO.sharedInstance().getUnit(getUnitID(), FETCH_GROUP, NLJDOHelper.MAX_FETCH_DEPTH_NO_LIMIT, monitor);
return unit;
}
@Override
protected Unit storeEntity(Unit controllerObject, ProgressMonitor monitor) {
monitor.beginTask("Storing Unit...", 100);
try {
UnitID unitID = (UnitID) JDOHelper.getObjectId(controllerObject);
if (unitID == null)
throw new IllegalStateException("JDOHelper.getObjectId(controllerObject) returned null for controllerObject = " + controllerObject); //$NON-NLS-1$
Unit unit = UnitDAO.sharedInstance().storeUnit(
controllerObject, false, getEntityFetchGroups(), getEntityMaxFetchDepth(),
new SubProgressMonitor(monitor, 50)
);
return unit;
} finally {
monitor.done();
}
}
protected UnitID getUnitID() {
UnitEditorInput input = (UnitEditorInput) getEntityEditor().getEditorInput();
return input.getJDOObjectID();
}
}