1 package net.pterodactylus.sone.data;
3 import com.google.common.base.Charsets;
4 import com.google.common.base.Objects;
5 import com.google.common.hash.HashFunction;
6 import com.google.common.hash.Hashing;
9 * Container for a combined ID, originally computed from a {@link Sone}’s ID and an element’s ID.
11 * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
15 private static final HashFunction sha256 = Hashing.sha256();
17 private final String soneId;
18 private final String elementId;
20 private Id(String soneId, String elementId) {
22 this.elementId = elementId;
25 public String getSoneId() {
29 public String getElementId() {
33 public String getExternal() {
34 return sha256.newHasher()
35 .putBytes(soneId.getBytes(Charsets.UTF_8))
36 .putBytes(elementId.getBytes(Charsets.UTF_8))
40 public static Id from(String soneId, String elementId) {
41 return new Id(soneId, elementId);
45 public boolean equals(Object o) {
46 if (o == null || getClass() != o.getClass()) {
50 return Objects.equal(soneId, id.soneId)
51 && Objects.equal(elementId, id.elementId);
55 public int hashCode() {
56 return Objects.hashCode(soneId, elementId);
60 public String toString() {