/******************************************************************************* * Copyright (c) 2012-2017 Codenvy, S.A. * 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: * Codenvy, S.A. - initial API and implementation *******************************************************************************/ package org.eclipse.che.plugin.docker.client.params; import org.eclipse.che.plugin.docker.client.json.Filters; import java.util.Objects; import static java.util.Objects.requireNonNull; /** * Arguments holder for {@link org.eclipse.che.plugin.docker.client.DockerConnector#listContainers(ListContainersParams)}. * * @author Alexander Andrienko */ public class ListContainersParams { private Boolean all; private Integer limit; private String since; private String before; private Boolean size; private Filters filters; private ListContainersParams() { } /** * Creates and returns arguments holder. */ public static ListContainersParams create() { return new ListContainersParams(); } /** * Adds parameter show all containers. Only running containers are shown by default. * * @param all * if true show all containers, if false show only running containers */ public ListContainersParams withAll(boolean all) { this.all = all; return this; } /** * Adds parameter show limit last created containers, include non-running ones. * * @param limit * amount elements of the list containers */ public ListContainersParams withLimit(int limit) { this.limit = limit; return this; } /** * Adds parameter show only containers created since container with {@code id}. * * @param id * container id */ public ListContainersParams withSince(String id) { requireNonNull(id); this.since = id; return this; } /** * Adds parameter show only containers created before container with {@code id}. * * @param id * container id */ public ListContainersParams withBefore(String id) { requireNonNull(id); this.before = id; return this; } /** * Adds parameter show docker container size information. * * @param size * if size = true then api add container size information, otherwise hide this information. * Warning: if size = true docker api need more time for calculation container size */ public ListContainersParams withSize(boolean size) { this.size = size; return this; } /** * Adds parameter filters for filter list containers. See more {@link Filters} * * @param filters * parameters for filter list containers. * Filter values: * <li>exited=<int>; -- containers with exit code of <int>;</li> * <li>status=(created|restarting|running|paused|exited|dead)</li> * <li>label=key or label="key=value" of a container label</li> * <li>isolation=(default|process|hyperv) (Windows daemon only)</li> * <li>ancestor=(<image-name>[:<tag>], <image id> or <image@digest>)</li> * <li>before=(<container id> or <container name>)</li> * <li>since=(<container id> or <container name>)</li> * <li>volume=(<volume name> or <mount point destination>)</li> */ public ListContainersParams withFilters(Filters filters) { requireNonNull(filters); this.filters = filters; return this; } public Boolean isAll() { return all; } public Integer getLimit() { return limit; } public String getSince() { return since; } public String getBefore() { return before; } public Boolean isSize() { return size; } public Filters getFilters() { return filters; } @Override public String toString() { return "ListContainersParams{" + "all=" + all + ", limit=" + limit + ", since='" + since + '\'' + ", before='" + before + '\'' + ", size=" + size + ", filters=" + filters + '}'; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (!(obj instanceof ListContainersParams)) return false; ListContainersParams another = (ListContainersParams)obj; return Objects.equals(isAll(), another.isAll()) && Objects.equals(getLimit(), another.getLimit()) && Objects.equals(getSince(), another.getSince()) && Objects.equals(getBefore(), another.getBefore()) && Objects.equals(isSize(), another.isSize()) && Objects.equals(getFilters(), another.getFilters()); } @Override public int hashCode() { return Objects.hash(isAll(), getLimit(), getSince(), getBefore(), isSize(), getFilters()); } }