package org.pitest.classinfo;
import java.math.BigInteger;
public final class HierarchicalClassId {
private final ClassIdentifier classId;
private final String hierarchicalHash;
public HierarchicalClassId(final ClassIdentifier classId,
final String hierarchicalHash) {
this.classId = classId;
this.hierarchicalHash = hierarchicalHash;
}
public HierarchicalClassId(final ClassIdentifier id, final BigInteger deepHash) {
this(id, deepHash.toString(16));
}
public HierarchicalClassId(final long hash, final ClassName name,
final String hierarchicalHash) {
this(new ClassIdentifier(hash, name), hierarchicalHash);
}
public String getHierarchicalHash() {
return this.hierarchicalHash;
}
public ClassName getName() {
return this.classId.getName();
}
public ClassIdentifier getId() {
return this.classId;
}
@Override
public String toString() {
return "HierarchicalClassId [classId=" + this.classId
+ ", hierarchicalHash=" + this.hierarchicalHash + "]";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = (prime * result)
+ ((this.classId == null) ? 0 : this.classId.hashCode());
result = (prime * result)
+ ((this.hierarchicalHash == null) ? 0 : this.hierarchicalHash
.hashCode());
return result;
}
@Override
public boolean equals(final Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final HierarchicalClassId other = (HierarchicalClassId) obj;
if (this.classId == null) {
if (other.classId != null) {
return false;
}
} else if (!this.classId.equals(other.classId)) {
return false;
}
if (this.hierarchicalHash == null) {
if (other.hierarchicalHash != null) {
return false;
}
} else if (!this.hierarchicalHash.equals(other.hierarchicalHash)) {
return false;
}
return true;
}
}