package org.marketcetera.photon.internal.strategy.engine.ui.workbench.handlers;
import java.util.Collection;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.SubMonitor;
import org.eclipse.jface.operation.ModalContext;
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.StrategyEngine;
import org.marketcetera.util.misc.ClassVersion;
import com.google.common.collect.Collections2;
/**
* Handler for the {@code
* org.marketcetera.photon.strategy.engine.ui.workbench.stopAll} command that
* stops all running strategies deployed on the selected {@link StrategyEngine}
* objects. If one fails, the operation will be aborted at that point.
*
* @author <a href="mailto:will@marketcetera.com">Will Horn</a>
* @version $Id: StopAllHandler.java 16154 2012-07-14 16:34:05Z colin $
* @since 2.0.0
*/
@ClassVersion("$Id: StopAllHandler.java 16154 2012-07-14 16:34:05Z colin $")
public final class StopAllHandler extends
AbstractSelectionHandler<StrategyEngine> {
/**
* Constructor.
*/
public StopAllHandler() {
super(StrategyEngine.class, Messages.STOP_HANDLER_FAILED);
}
@Override
protected void process(StrategyEngine item, IProgressMonitor monitor)
throws Exception {
Collection<DeployedStrategy> strategies = Collections2.filter(item
.getDeployedStrategies(), StopHandler.runningStrategies());
SubMonitor progress = SubMonitor.convert(monitor, strategies.size());
for (DeployedStrategy strategy : strategies) {
ModalContext.checkCanceled(progress);
progress.setTaskName(Messages.STOP_HANDLER__TASK_NAME.getText(
strategy.getInstanceName(), item.getName()));
strategy.getEngine().getConnection().stop(strategy);
progress.worked(1);
}
}
}