X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdata%2Fimpl%2FAbstractPostBuilder.java;h=650455867802358ea884f3e7140cf288bca9f9f5;hb=403b51bcf5b736808e3c554b8589759e7d3d5d47;hp=65dd1bd72722c32ab1b8c11d4c9eb81f0077456a;hpb=2f4dcbcbc66688f159d96ebfb04d8bd5f96e9c28;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/data/impl/AbstractPostBuilder.java b/src/main/java/net/pterodactylus/sone/data/impl/AbstractPostBuilder.java index 65dd1bd..6504558 100644 --- a/src/main/java/net/pterodactylus/sone/data/impl/AbstractPostBuilder.java +++ b/src/main/java/net/pterodactylus/sone/data/impl/AbstractPostBuilder.java @@ -18,10 +18,13 @@ package net.pterodactylus.sone.data.impl; import static com.google.common.base.Optional.absent; +import static com.google.common.base.Optional.fromNullable; +import static com.google.common.base.Optional.of; import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Preconditions.checkState; +import static java.lang.System.currentTimeMillis; +import static java.util.UUID.randomUUID; -import net.pterodactylus.sone.data.Post; import net.pterodactylus.sone.database.Database; import net.pterodactylus.sone.database.PostBuilder; @@ -39,17 +42,11 @@ public abstract class AbstractPostBuilder implements PostBuilder { protected final Database database; protected final String senderId; - /** Wether to create a post with a random ID. */ - protected boolean randomId; - /** The ID of the post. */ - protected String id; - - /** Whether to use the current time when creating the post. */ - protected boolean currentTime; + protected Optional id = absent(); /** The time of the post. */ - protected long time; + protected Optional time = absent(); /** The text of the post. */ protected String text; @@ -66,54 +63,24 @@ public abstract class AbstractPostBuilder implements PostBuilder { // POSTBUILDER METHODS // - /** - * {@inheritDoc} - */ - @Override - public PostBuilder randomId() { - randomId = true; - return this; - } - - /** - * {@inheritDoc} - */ @Override public PostBuilder withId(String id) { - this.id = id; - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public PostBuilder currentTime() { - currentTime = true; + this.id = fromNullable(id); return this; } - /** - * {@inheritDoc} - */ @Override public PostBuilder withTime(long time) { - this.time = time; + this.time = of(time); return this; } - /** - * {@inheritDoc} - */ @Override public PostBuilder withText(String text) { this.text = text; return this; } - /** - * {@inheritDoc} - */ @Override public PostBuilder to(Optional recipientId) { this.recipientId = recipientId; @@ -124,6 +91,14 @@ public abstract class AbstractPostBuilder implements PostBuilder { // PROTECTED METHODS // + protected String getId() { + return id.isPresent() ? id.get() : randomUUID().toString(); + } + + protected long getTime() { + return time.isPresent() ? time.get() : currentTimeMillis(); + } + /** * Validates the state of this post builder. * @@ -131,8 +106,6 @@ public abstract class AbstractPostBuilder implements PostBuilder { * if the state is not valid for building a new post */ protected void validate() throws IllegalStateException { - checkState((randomId && (id == null)) || (!randomId && (id != null)), "exactly one of random ID or custom ID must be set"); - checkState((currentTime && (time == 0)) || (!currentTime && (time > 0)), "one of current time or custom time must be set"); checkState(!StringUtils.isBlank(text), "text must not be empty"); checkState(!recipientId.isPresent() || !senderId.equals(recipientId.get()), "sender and recipient must not be the same"); }