/*******************************************************************************
* 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.core;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.linuxtools.docker.core.IDockerContainer;
import org.eclipse.linuxtools.docker.core.IDockerImage;
import org.eclipse.linuxtools.docker.core.IDockerImageHierarchyNode;
/**
* Default implementation of the {@link IDockerImageHierarchyNode} interface.
*/
public abstract class DockerImageHierarchyNode
implements IDockerImageHierarchyNode {
private IDockerImageHierarchyNode parent;
private List<IDockerImageHierarchyNode> children;
public DockerImageHierarchyNode(
final IDockerImageHierarchyNode parentImageHiearchyNode) {
this.children = new ArrayList<>();
this.parent = parentImageHiearchyNode;
if (parent != null) {
this.parent.getChildren().add(this);
}
}
@Override
public <T> T getAdapter(final Class<T> adapter) {
return null;
}
@Override
public IDockerImageHierarchyNode getParent() {
return this.parent;
}
@Override
public List<IDockerImageHierarchyNode> getChildren() {
return this.children;
}
@Override
public IDockerImageHierarchyNode getChild(final String id) {
return this.children.stream().filter(n -> {
if (n.getElement() instanceof IDockerImage) {
return ((IDockerImage) n.getElement()).id().equals(id);
} else {
return ((IDockerContainer) n.getElement()).id().equals(id);
}
}).findFirst().orElse(null);
}
@Override
public IDockerImageHierarchyNode getRoot() {
if (this.parent == null) {
return this;
}
return this.parent.getRoot();
}
@Override
public String toString() {
return getElement().toString();
}
}