package edu.berkeley.thebes.hat.common.data;
import java.util.List;
import com.google.common.base.Objects;
import com.google.common.collect.Lists;
import edu.berkeley.thebes.common.data.Version;
import edu.berkeley.thebes.hat.common.thrift.ThriftDataDependency;
public class DataDependency {
private final String key;
private final Version version;
public DataDependency(String key, Version version) {
this.key = key;
this.version = version;
}
public static DataDependency fromThrift(ThriftDataDependency dataDependency) {
return new DataDependency(dataDependency.getKey(),
Version.fromThrift(dataDependency.getVersion()));
}
public static List<DataDependency> fromThrift(List<ThriftDataDependency> dataDependencies) {
if (dataDependencies == null) {
return null;
}
List<DataDependency> l = Lists.newArrayListWithCapacity(dataDependencies.size());
for (ThriftDataDependency dep : dataDependencies) {
l.add(fromThrift(dep));
}
return l;
}
public static ThriftDataDependency toThrift(DataDependency dataDependency) {
return new ThriftDataDependency(dataDependency.getKey(),
Version.toThrift(dataDependency.getVersion()));
}
public static List<ThriftDataDependency> toThrift(List<DataDependency> dataDependencies) {
if (dataDependencies == null) {
return null;
}
List<ThriftDataDependency> l = Lists.newArrayListWithCapacity(dataDependencies.size());
for (DataDependency dep : dataDependencies) {
l.add(toThrift(dep));
}
return l;
}
public String getKey() {
return key;
}
public Version getVersion() {
return version;
}
@Override
public int hashCode() {
return Objects.hashCode(key, version);
}
@Override
public boolean equals(Object other) {
if (! (other instanceof DataDependency)) {
return false;
}
DataDependency dd = (DataDependency) other;
return Objects.equal(getKey(), dd.getKey()) &&
Objects.equal(getVersion(), dd.getVersion());
}
}