package org.nightlabs.jfire.reporting.admin.parameter.ui.command;
import javax.jdo.FetchPlan;
import javax.jdo.JDOHelper;
import org.eclipse.gef.commands.Command;
import org.nightlabs.jfire.idgenerator.IDGenerator;
import org.nightlabs.jfire.reporting.admin.parameter.ui.notification.ModelNotificationManager;
import org.nightlabs.jfire.reporting.admin.parameter.ui.request.ValueProviderCreateRequest;
import org.nightlabs.jfire.reporting.admin.parameter.ui.resource.Messages;
import org.nightlabs.jfire.reporting.admin.parameter.ui.util.ObjectIDProvider;
import org.nightlabs.jfire.reporting.parameter.ValueProvider;
import org.nightlabs.jfire.reporting.parameter.config.ValueAcquisitionSetup;
import org.nightlabs.jfire.reporting.parameter.config.ValueProviderConfig;
import org.nightlabs.jfire.reporting.parameter.config.id.ValueAcquisitionSetupID;
import org.nightlabs.jfire.reporting.parameter.config.id.ValueProviderConfigID;
import org.nightlabs.jfire.reporting.parameter.dao.ValueProviderDAO;
import org.nightlabs.jfire.reporting.parameter.id.ValueProviderID;
import org.nightlabs.progress.NullProgressMonitor;
/**
* @author Daniel.Mazurek [at] NightLabs [dot] de
*
*/
public class CreateValueProviderCommand
extends Command
{
private ValueProviderCreateRequest request;
public CreateValueProviderCommand(ValueProviderCreateRequest request)
{
super();
setLabel(Messages.getString("org.nightlabs.jfire.reporting.admin.parameter.ui.command.CreateValueProviderCommand.label")); //$NON-NLS-1$
this.request = request;
}
private ValueProviderConfig vpc;
@Override
public void execute()
{
ValueAcquisitionSetup setup = request.getValueAcquisitionSetup();
ValueProvider valueProvider = request.getValueProvider();
vpc = new ValueProviderConfig(setup, IDGenerator.nextID(ValueProviderConfig.class));
vpc.setValueProvider(valueProvider);
vpc.setX(request.getLocation().x);
vpc.setY(request.getLocation().y);
setup.getValueProviderConfigs().add(vpc);
ValueProvider provider = ValueProviderDAO.sharedInstance().getValueProvider(
(ValueProviderID) JDOHelper.getObjectId(valueProvider),
new String[] {FetchPlan.DEFAULT, ValueProvider.FETCH_GROUP_DEFAULT_MESSAGE},
new NullProgressMonitor()
);
vpc.getMessage().copyFrom(provider.getDefaultMessage());
ValueAcquisitionSetupID setupID = ValueAcquisitionSetupID.create(setup);
ModelNotificationManager.sharedInstance().notify(
setupID, ModelNotificationManager.PROP_CREATE, null, vpc);
ValueProviderConfigID valueProviderConfigID = ValueProviderConfigID.create(vpc);
ModelNotificationManager.sharedInstance().notify(
valueProviderConfigID, ModelNotificationManager.PROP_CREATE, null, vpc);
}
@Override
public void redo() {
ValueAcquisitionSetup setup = request.getValueAcquisitionSetup();
setup.getValueProviderConfigs().add(vpc);
ModelNotificationManager.sharedInstance().notify(
ObjectIDProvider.getObjectID(vpc),
ModelNotificationManager.PROP_DELETE, null, vpc);
}
@Override
public void undo() {
ValueAcquisitionSetup setup = request.getValueAcquisitionSetup();
setup.getValueProviderConfigs().remove(vpc);
ModelNotificationManager.sharedInstance().notify(
ObjectIDProvider.getObjectID(vpc),
ModelNotificationManager.PROP_CREATE, null, vpc);
}
}