/******************************************************************************* * 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.MessageProcessor; import javax.validation.constraints.NotNull; import java.util.Objects; import static java.util.Objects.requireNonNull; /** * Arguments holder for {@link org.eclipse.che.plugin.docker.client.DockerConnector#getContainerLogs(GetContainerLogsParams, MessageProcessor)}. * * @author Mykola Morhun */ public class GetContainerLogsParams { private String container; private Boolean details; private Boolean follow; private Long since; private Boolean timestamps; private String tail; private GetContainerLogsParams() {} /** * Creates arguments holder with required parameters. * * @param container * id or name of container * @return arguments holder with required parameters */ public static GetContainerLogsParams create(@NotNull String container) { return new GetContainerLogsParams().withContainer(container); } /** * Adds container to this parameters. * * @param container * id or name of container * @return this params instance * @throws NullPointerException * if {@code container} is null */ public GetContainerLogsParams withContainer(@NotNull String container) { requireNonNull(container); this.container = container; return this; } /** * Shows extra details provided to logs. * * @param details * flag which indicates whether show extra details * @return this params instance */ public GetContainerLogsParams withDetails(boolean details) { this.details = details; return this; } /** * Flag for getting output stream from a container. * * @param follow * if {@code true} gets output stream from container.<br/> * Note, that live stream blocks until container is running. * @return this params instance */ public GetContainerLogsParams withFollow(boolean follow) { this.follow = follow; return this; } /** * UNIX timestamp to filter logs. * * @param since * specifying a timestamp will only output log-entries since that timestamp * @return this params instance */ public GetContainerLogsParams withSince(long since) { this.since = since; return this; } /** * Prints timestamps for every log line. * * @param timestamps * flag whether print timestamps for every log line. * @return this params instance */ public GetContainerLogsParams withTimestamps(boolean timestamps) { this.timestamps = timestamps; return this; } /** * Output specified number of lines at the end of logs. * Default is all logs. * * @param tail * number of lines at the end of logs or {@code all} * @return this params instance */ public GetContainerLogsParams withTail(String tail) { this.tail = tail; return this; } public String getContainer() { return container; } public Boolean isDetails() { return details; } public Boolean isFollow() { return follow; } public Long getSince() { return since; } public Boolean isTimestamps() { return timestamps; } public String getTail() { return tail; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; GetContainerLogsParams that = (GetContainerLogsParams)o; return Objects.equals(container, that.container) && Objects.equals(details, that.details) && Objects.equals(follow, that.follow) && Objects.equals(since, that.since) && Objects.equals(timestamps, that.timestamps) && Objects.equals(tail, that.tail); } @Override public int hashCode() { return Objects.hash(container, details, follow, since, timestamps, tail); } }