X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdata%2FId.java;h=228344792e751e081ec0d9e2ec152de7ebada37d;hp=75f9bc6e4f5098d5bba29274d74221762814e611;hb=91e7fe2aee5cc2e6d355935c247ed87fc9145227;hpb=6ee2bd5211b82e4b02b82468d242c91dcc4537f4 diff --git a/src/main/java/net/pterodactylus/sone/data/Id.java b/src/main/java/net/pterodactylus/sone/data/Id.java index 75f9bc6..2283447 100644 --- a/src/main/java/net/pterodactylus/sone/data/Id.java +++ b/src/main/java/net/pterodactylus/sone/data/Id.java @@ -1,7 +1,10 @@ package net.pterodactylus.sone.data; +import static com.google.common.base.Preconditions.checkNotNull; + import com.google.common.base.Charsets; import com.google.common.base.Objects; +import com.google.common.base.Optional; import com.google.common.hash.HashFunction; import com.google.common.hash.Hashing; @@ -16,27 +19,45 @@ public class Id { private final String soneId; private final String elementId; + private final String externalId; + + private Id(String externalId) { + this(null, null, checkNotNull(externalId)); + } private Id(String soneId, String elementId) { + this(checkNotNull(soneId), checkNotNull(elementId), calculateExternalId(soneId, elementId)); + } + + private Id(String soneId, String elementId, String externalId) { this.soneId = soneId; this.elementId = elementId; + this.externalId = externalId; } - public String getSoneId() { - return soneId; + public Optional getSoneId() { + return Optional.fromNullable(soneId); } - public String getElementId() { - return elementId; + public Optional getElementId() { + return Optional.fromNullable(elementId); } public String getExternal() { + return externalId; + } + + private static String calculateExternalId(String soneId, String elementId) { return sha256.newHasher() .putBytes(soneId.getBytes(Charsets.UTF_8)) .putBytes(elementId.getBytes(Charsets.UTF_8)) .hash().toString(); } + public static Id from(String externalId) { + return new Id(externalId); + } + public static Id from(String soneId, String elementId) { return new Id(soneId, elementId); } @@ -47,13 +68,12 @@ public class Id { return false; } Id id = (Id) o; - return Objects.equal(soneId, id.soneId) - && Objects.equal(elementId, id.elementId); + return Objects.equal(externalId, id.externalId); } @Override public int hashCode() { - return Objects.hashCode(soneId, elementId); + return Objects.hashCode(externalId); } @Override