/*******************************************************************************
* Copyright © 2011, 2013 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*
*******************************************************************************/
package org.eclipse.edt.ide.deployment.solution;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.edt.ide.deployment.internal.nls.Messages;
import org.eclipse.edt.ide.deployment.operation.IDeploymentOperation;
import org.eclipse.edt.ide.deployment.results.DeploymentResultsCollectorManager;
import org.eclipse.edt.ide.deployment.results.IDeploymentResultsCollector;
import org.eclipse.edt.ide.deployment.utilities.DeploymentUtilities;
public class AbstractDeploymentSolution implements IDeploymentSolution {
protected DeploymentContext context;
private List<IDeploymentOperation> operations = new ArrayList<IDeploymentOperation>();
public void addOperation( IDeploymentOperation operation ) {
operations.add( operation );
}
@Override
public void execute(IDeploymentResultsCollector resultsCollector, IProgressMonitor monitor) throws CoreException {
for ( int i = 0; i < operations.size(); i ++ ) {
IDeploymentOperation operation = operations.get( i );
operation.preCheck( context, resultsCollector, monitor );
}
if ( context.getStatus() == DeploymentContext.STATUS_STOP ) {
return;
}
if ( context.getStatus() != DeploymentContext.STATUS_SHOULD_RUN ) {
context.showMessage( Messages.deployment_action_no_parts_found );
DeploymentResultsCollectorManager.getInstance().getCollector(DeploymentUtilities.getDeploymentTargetId(context.getDeploymentDesc().getDeploymentTarget(), null, context.getDeploymentDesc().getName()), context.getDeploymentDesc().getName(), false, false).addMessage(
DeploymentUtilities.createDeployMessage(IStatus.WARNING, Messages.bind(Messages.deployment_no_parts_found, context.getDeploymentDesc().getName())));
return;
}
for ( int i = 0; i < operations.size(); i ++ ) {
IDeploymentOperation operation = operations.get( i );
operation.execute( context, resultsCollector, monitor );
monitor.worked(2);
}
}
@Override
public void setContext(DeploymentContext context) {
this.context = context;
}
}