package org.marketcetera.photon.internal.strategy.engine.ui.workbench.handlers; import org.eclipse.core.runtime.IProgressMonitor; import org.marketcetera.photon.commons.ui.workbench.AbstractSelectionHandler; import org.marketcetera.photon.strategy.engine.model.core.DeployedStrategy; import org.marketcetera.photon.strategy.engine.model.core.StrategyState; import org.marketcetera.util.misc.ClassVersion; import com.google.common.base.Predicate; /* $License$ */ /** * Handler for the {@code * org.marketcetera.photon.strategy.engine.ui.workbench.stop} command that stops * the currently selected {@link DeployedStrategy} objects. If one fails, the * operation will be aborted at that point. * * @author <a href="mailto:will@marketcetera.com">Will Horn</a> * @version $Id: StopHandler.java 16154 2012-07-14 16:34:05Z colin $ * @since 2.0.0 */ @ClassVersion("$Id: StopHandler.java 16154 2012-07-14 16:34:05Z colin $") public final class StopHandler extends AbstractSelectionHandler<DeployedStrategy> { private static final Predicate<DeployedStrategy> sRunningStrategies = new Predicate<DeployedStrategy>() { @Override public boolean apply(DeployedStrategy input) { return input.getState() == StrategyState.RUNNING; } }; /** * Returns a predicate that filters stopped strategies. * * @return the predicate */ static Predicate<DeployedStrategy> runningStrategies() { return sRunningStrategies; } /** * Constructor. */ public StopHandler() { super(DeployedStrategy.class, Messages.STOP_HANDLER_FAILED, runningStrategies()); } @Override protected void process(DeployedStrategy item, IProgressMonitor monitor) throws Exception { monitor.setTaskName(Messages.STOP_HANDLER__TASK_NAME.getText(item .getInstanceName(), item.getEngine().getName())); item.getEngine().getConnection().stop(item); } }