package com.liveramp.hank.storage.incremental;
import com.liveramp.hank.coordinator.DomainVersion;
import java.util.*;
public class IncrementalUpdatePlan {
private final DomainVersion base;
private final List<DomainVersion> deltasOrdered;
public IncrementalUpdatePlan(DomainVersion base) {
this(base, Collections.<DomainVersion>emptyList());
}
public IncrementalUpdatePlan(DomainVersion base, DomainVersion delta) {
this.base = base;
this.deltasOrdered = new ArrayList<DomainVersion>(1);
this.deltasOrdered.add(delta);
}
public IncrementalUpdatePlan(DomainVersion base, List<DomainVersion> deltasOrdered) {
this.base = base;
this.deltasOrdered = deltasOrdered;
}
public IncrementalUpdatePlan(DomainVersion base, DomainVersion... deltas) {
this(base, Arrays.asList(deltas));
}
public DomainVersion getBase() {
return base;
}
public List<DomainVersion> getDeltasOrdered() {
return deltasOrdered;
}
public Set<DomainVersion> getAllVersions() {
Set<DomainVersion> result = new HashSet<DomainVersion>();
result.add(base);
result.addAll(deltasOrdered);
return result;
}
@Override
public String toString() {
return "IncrementalUpdatePlan [base=" + base
+ ", deltas=" + deltasOrdered + "]";
}
@Override
public boolean equals(Object other) {
if (other instanceof IncrementalUpdatePlan) {
IncrementalUpdatePlan plan = (IncrementalUpdatePlan) other;
return this.base.equals(plan.base) && this.deltasOrdered.equals(plan.deltasOrdered);
} else {
return false;
}
}
}