
com.hubspot.singularity.SingularityTaskHistoryQuery Maven / Gradle / Ivy
The newest version!
package com.hubspot.singularity;
import java.util.Comparator;
import com.google.common.base.Optional;
import com.google.common.base.Predicate;
import com.google.common.collect.ComparisonChain;
public class SingularityTaskHistoryQuery {
private final Optional requestId;
private final Optional deployId;
private final Optional host;
private final Optional lastTaskStatus;
private final Optional startedBefore;
private final Optional startedAfter;
private final Optional orderDirection;
public SingularityTaskHistoryQuery(String requestId) {
this(Optional.of(requestId), Optional. absent(), Optional. absent(), Optional. absent(), Optional. absent(), Optional. absent(),
Optional. absent());
}
public SingularityTaskHistoryQuery(Optional requestId, Optional deployId, Optional host, Optional lastTaskStatus, Optional startedBefore,
Optional startedAfter, Optional orderDirection) {
this.requestId = requestId;
this.deployId = deployId;
this.host = host;
this.lastTaskStatus = lastTaskStatus;
this.startedBefore = startedBefore;
this.startedAfter = startedAfter;
this.orderDirection = orderDirection;
}
public Optional getRequestId() {
return requestId;
}
public Optional getDeployId() {
return deployId;
}
public Optional getHost() {
return host;
}
public Optional getLastTaskStatus() {
return lastTaskStatus;
}
public Optional getStartedBefore() {
return startedBefore;
}
public Optional getStartedAfter() {
return startedAfter;
}
public Optional getOrderDirection() {
return orderDirection;
}
public Predicate getHistoryFilter() {
return new Predicate() {
@Override
public boolean apply(SingularityTaskIdHistory input) {
final SingularityTaskId taskId = input.getTaskId();
if (requestId.isPresent() && !requestId.get().equals(taskId.getRequestId())) {
return false;
}
if (host.isPresent() && !host.get().equals(taskId.getHost())) {
return false;
}
if (deployId.isPresent() && !deployId.get().equals(taskId.getDeployId())) {
return false;
}
if (lastTaskStatus.isPresent()) {
if (!input.getLastTaskState().isPresent()) {
return false;
}
if (lastTaskStatus.get() != input.getLastTaskState().get()) {
return false;
}
}
if (startedAfter.isPresent() && startedAfter.get() >= taskId.getStartedAt()) {
return false;
}
if (startedBefore.isPresent() && startedBefore.get() <= taskId.getStartedAt()) {
return false;
}
return true;
}
};
}
public Comparator getComparator() {
final OrderDirection localOrderDirection = orderDirection.or(OrderDirection.DESC);
return new Comparator() {
@Override
public int compare(SingularityTaskIdHistory o1, SingularityTaskIdHistory o2) {
ComparisonChain chain = ComparisonChain.start();
if (localOrderDirection == OrderDirection.ASC) {
chain = chain.compare(o1.getTaskId().getStartedAt(), o2.getTaskId().getStartedAt());
} else {
chain = chain.compare(o2.getTaskId().getStartedAt(), o1.getTaskId().getStartedAt());
}
return chain.compare(o1.getTaskId().getRequestId(), o2.getTaskId().getRequestId()).result();
}
};
}
@Override
public String toString() {
return "SingularityTaskHistoryQuery [requestId=" + requestId + ", deployId=" + deployId + ", host=" + host + ", lastTaskStatus=" + lastTaskStatus + ", startedBefore=" + startedBefore
+ ", startedAfter=" + startedAfter + ", orderDirection=" + orderDirection + "]";
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy