package com.hubspot.blazar.base;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.base.Optional;
import java.util.Objects;
public class RepositoryState {
private final GitInfo gitInfo;
private final Optional<RepositoryBuild> lastBuild;
private final Optional<RepositoryBuild> inProgressBuild;
private final Optional<RepositoryBuild> pendingBuild;
@JsonCreator
public RepositoryState(@JsonProperty("gitInfo") GitInfo gitInfo,
@JsonProperty("lastBuild") Optional<RepositoryBuild> lastBuild,
@JsonProperty("inProgressBuild") Optional<RepositoryBuild> inProgressBuild,
@JsonProperty("pendingBuild") Optional<RepositoryBuild> pendingBuild) {
this.gitInfo = gitInfo;
if (lastBuild.isPresent() && !lastBuild.get().getId().isPresent()) {
this.lastBuild = Optional.absent();
} else {
this.lastBuild = lastBuild;
}
if (inProgressBuild.isPresent() && !inProgressBuild.get().getId().isPresent()) {
this.inProgressBuild = Optional.absent();
} else {
this.inProgressBuild = inProgressBuild;
}
if (pendingBuild.isPresent() && !pendingBuild.get().getId().isPresent()) {
this.pendingBuild = Optional.absent();
} else {
this.pendingBuild = pendingBuild;
}
}
public GitInfo getGitInfo() {
return gitInfo;
}
public Optional<RepositoryBuild> getLastBuild() {
return lastBuild;
}
public Optional<RepositoryBuild> getInProgressBuild() {
return inProgressBuild;
}
public Optional<RepositoryBuild> getPendingBuild() {
return pendingBuild;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
RepositoryState that = (RepositoryState) o;
return Objects.equals(gitInfo, that.gitInfo) &&
Objects.equals(lastBuild, that.lastBuild) &&
Objects.equals(inProgressBuild, that.inProgressBuild) &&
Objects.equals(pendingBuild, that.pendingBuild);
}
@Override
public int hashCode() {
return Objects.hash(gitInfo, lastBuild, inProgressBuild, pendingBuild);
}
}