/******************************************************************************* * Copyright (c) 2016 Red Hat. * 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: * Red Hat - Initial Contribution *******************************************************************************/ package org.eclipse.linuxtools.internal.docker.ui.jobs; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.Job; import org.eclipse.linuxtools.docker.core.DockerException; import org.eclipse.linuxtools.docker.core.IDockerConnection; import org.eclipse.linuxtools.docker.core.IDockerProgressHandler; import org.eclipse.linuxtools.docker.ui.Activator; import org.eclipse.linuxtools.internal.docker.core.DockerCompose; import org.eclipse.linuxtools.internal.docker.ui.preferences.PreferenceConstants; /** * An {@link IDockerProgressHandler} {@link Job} to execute a * {@code docker-compose stop} commandline. */ public class DockerComposeStopJob extends Job { /** The {@link IDockerConnection} to use. */ private final IDockerConnection connection; /** The workDir containing the {@code docker-compose.yml}. */ private final String workingDir; /** * Constructor * * @param connection * the {@link IDockerConnection} to use * @param workingDir * the workDir containing the {@code docker-compose.yml} */ public DockerComposeStopJob(final IDockerConnection connection, final String workingDir) { super(JobMessages.getString("DockerComposeStop.title")); //$NON-NLS-1$ this.connection = connection; this.workingDir = workingDir; } @Override protected IStatus run(final IProgressMonitor monitor) { final String dockerComposeInstallDir = Activator.getDefault() .getPreferenceStore().getString( PreferenceConstants.DOCKER_COMPOSE_INSTALLATION_DIRECTORY); try { final Process dockerComposeStopProcess = DockerCompose.getInstance() .stop(this.connection, dockerComposeInstallDir, this.workingDir); dockerComposeStopProcess.waitFor(); } catch (InterruptedException | DockerException e) { Activator.logErrorMessage( JobMessages.getString("DockerComposeStop.error"), e); //$NON-NLS-1$ } return Status.OK_STATUS; } }