package com.hubspot.blazar.base;
import java.util.Objects;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.base.Optional;
public class InterProjectBuildMapping {
private final Optional<Long> id;
private final long interProjectBuildId;
private final int branchId;
private Optional<Long> repoBuildId;
private final int moduleId;
private final Optional<Long> moduleBuildId;
private InterProjectBuild.State state;
@JsonCreator
public InterProjectBuildMapping(@JsonProperty("id") Optional<Long> id,
@JsonProperty("interProjectBuildId") long interProjectBuildId,
@JsonProperty("branchid") int branchId,
@JsonProperty("repoBuildId") Optional<Long> repoBuildId,
@JsonProperty("moduleId") int moduleId,
@JsonProperty("moduleBuildId") Optional<Long> moduleBuildId,
@JsonProperty("state") InterProjectBuild.State state) {
this.id = id;
this.interProjectBuildId = interProjectBuildId;
this.branchId = branchId;
this.repoBuildId = repoBuildId;
this.moduleId = moduleId;
this.moduleBuildId = moduleBuildId;
this.state = state;
}
public static InterProjectBuildMapping makeNewMapping(long interProjectBuildId, int branchId, Optional<Long> repoBuildId, int moduleId) {
return new InterProjectBuildMapping(Optional.<Long>absent(), interProjectBuildId, branchId, repoBuildId, moduleId, Optional.<Long>absent(), InterProjectBuild.State.QUEUED);
}
public InterProjectBuildMapping withModuleBuildId(Long moduleBuildId) {
return new InterProjectBuildMapping(id, interProjectBuildId, branchId, repoBuildId, moduleId, Optional.of(moduleBuildId), state);
}
public InterProjectBuildMapping withModuleBuildId(InterProjectBuild.State state) {
return new InterProjectBuildMapping(id, interProjectBuildId, branchId, repoBuildId, moduleId, moduleBuildId, state);
}
public Optional<Long> getId() {
return id;
}
public long getInterProjectBuildId() {
return interProjectBuildId;
}
public int getBranchId() {
return branchId;
}
public Optional<Long> getRepoBuildId() {
return repoBuildId;
}
public int getModuleId() {
return moduleId;
}
public Optional<Long> getModuleBuildId() {
return moduleBuildId;
}
public InterProjectBuild.State getState() {
return state;
}
@Override
public String toString() {
return com.google.common.base.Objects.toStringHelper(this)
.add("id", id)
.add("interProjectBuildId", interProjectBuildId)
.add("branchId", branchId)
.add("repoBuildId", repoBuildId)
.add("moduleId", moduleId)
.add("moduleBuildId", moduleBuildId)
.add("state", state)
.toString();
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
InterProjectBuildMapping m = (InterProjectBuildMapping) o;
return Objects.equals(id, m.id) && Objects.equals(state, m.state);
}
@Override
public int hashCode() {
return Objects.hash(id, interProjectBuildId, branchId, repoBuildId, moduleId, moduleBuildId, state);
}
}