package org.nightlabs.jfire.contact.ui;
import javax.jdo.FetchPlan;
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.contact.ui.resource.Messages;
import org.nightlabs.jfire.person.Person;
import org.nightlabs.jfire.prop.IStruct;
import org.nightlabs.jfire.prop.PropertySet;
import org.nightlabs.jfire.prop.dao.PropertySetDAO;
import org.nightlabs.progress.ProgressMonitor;
import org.nightlabs.progress.SubProgressMonitor;
/**
* @author Chairat Kongarayawetchakun <!-- chairat [AT] nightlabs [DOT] de -->
*/
public class ContactEditorPageController
extends ActiveEntityEditorPageController<Person>
{
private static final String[] FETCH_GROUPS = new String[] {
FetchPlan.DEFAULT, PropertySet.FETCH_GROUP_DATA_FIELDS, PropertySet.FETCH_GROUP_FULL_DATA
};
public ContactEditorPageController(EntityEditor editor)
{
super(editor);
}
@Override
protected String[] getEntityFetchGroups() {
return FETCH_GROUPS;
}
@Override
protected Person retrieveEntity(ProgressMonitor monitor) {
ContactEditorInput input = (ContactEditorInput) getEntityEditor().getEditorInput();
Person person = (Person)PropertySetDAO.sharedInstance().getPropertySet(input.getJDOObjectID(), getEntityFetchGroups(), getEntityMaxFetchDepth(), new SubProgressMonitor(monitor, 70));
return person;
}
@Override
protected Person storeEntity(Person controllerObject,
ProgressMonitor monitor) {
monitor.beginTask(Messages.getString("org.nightlabs.jfire.contact.ui.ContactEditorPageController.storeEntity.monitor.task.name"), 100); //$NON-NLS-1$
try {
IStruct structure = controllerObject.getStructure();
controllerObject.deflate();
controllerObject = (Person) PropertySetDAO.sharedInstance().storeJDOObject(
controllerObject, true, FETCH_GROUPS, NLJDOHelper.MAX_FETCH_DEPTH_NO_LIMIT,
new SubProgressMonitor(monitor, 100)
);
controllerObject.inflate(structure);
} finally {
monitor.done();
}
return controllerObject;
}
}