/******************************************************************************* * 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.IDockerConnection2; import org.eclipse.linuxtools.docker.core.IDockerContainer; import org.eclipse.linuxtools.docker.core.IDockerImage; import org.eclipse.linuxtools.docker.core.IDockerImageHierarchyNode; import org.eclipse.linuxtools.docker.ui.Activator; /** * A {@link Job} to retrieve the hierarchy of an {@link IDockerImage} or an * {@link IDockerContainer} */ public class RetrieveImageHierarchyJob extends Job { private final IDockerConnection2 connection; /** * the {@link IDockerImage} or {@link IDockerContainer} for which the * hierarchy needs to be retrieved. */ private final Object selectedElement; /** * the resulting {@link IDockerImageHierarchyNode} that was retrieved while * the job was executed. */ private IDockerImageHierarchyNode imageHierarchy; /** * Constructor * * @param connection * the current {@link IDockerConnection2} * @param selectedElement * the {@link IDockerImage} or {@link IDockerContainer} for which * the hierarchy needs to be retrieved. */ public RetrieveImageHierarchyJob(final IDockerConnection2 connection, final Object selectedElement) { super(JobMessages.getString("RetrieveImageHierarchyJob.title")); //$NON-NLS-1$ this.connection = connection; this.selectedElement = selectedElement; } @Override protected IStatus run(IProgressMonitor monitor) { try { monitor.beginTask( JobMessages.getString("RetrieveImageHierarchyJob.title"), //$NON-NLS-1$ 1); if (selectedElement instanceof IDockerContainer) { this.imageHierarchy = connection.resolveImageHierarchy( (IDockerContainer) selectedElement); } else if (selectedElement instanceof IDockerImage) { this.imageHierarchy = connection .resolveImageHierarchy((IDockerImage) selectedElement); } else { if (selectedElement != null) { Activator.log( new DockerException(JobMessages.getFormattedString( "RetrieveImageHierarchyJob.error", //$NON-NLS-1$ selectedElement.getClass().getName()))); } } } finally { monitor.done(); } return Status.OK_STATUS; } /** * @return the {@link IDockerImageHierarchyNode} that was retrieved while the * job was executed. */ public IDockerImageHierarchyNode getImageHierarchy() { return this.imageHierarchy; } }