X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdata%2Fimpl%2FAbstractImageBuilder.java;h=13bf24b8625175df843d2f45f23580155f6cc5fe;hb=2e03e9dddbea4b81aacaf1aa316f5c3ccffd4bf9;hp=533ba39cc354c246534d13c20c51dd643aba046f;hpb=9d32a0f70e14a764946ae29edcf07304f9e5f75e;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/data/impl/AbstractImageBuilder.java b/src/main/java/net/pterodactylus/sone/data/impl/AbstractImageBuilder.java index 533ba39..13bf24b 100644 --- a/src/main/java/net/pterodactylus/sone/data/impl/AbstractImageBuilder.java +++ b/src/main/java/net/pterodactylus/sone/data/impl/AbstractImageBuilder.java @@ -16,10 +16,17 @@ */ 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.checkState; +import static java.lang.System.currentTimeMillis; +import static java.util.UUID.randomUUID; import net.pterodactylus.sone.database.ImageBuilder; +import com.google.common.base.Optional; + /** * Abstract {@link ImageBuilder} implementation. It stores the state of the new * album and performs validation, you only need to implement {@link #build()}. @@ -28,21 +35,34 @@ import net.pterodactylus.sone.database.ImageBuilder; */ public abstract class AbstractImageBuilder implements ImageBuilder { - /** Whether to create an album with a random ID. */ - protected boolean randomId; + protected Optional id = absent(); + protected Optional creationTime = absent(); + protected String key; + protected int width; + protected int height; - /** The ID of the album to create. */ - protected String id; + @Override + public ImageBuilder withId(String id) { + this.id = fromNullable(id); + return this; + } @Override - public ImageBuilder randomId() { - randomId = true; + public ImageBuilder created(long creationTime) { + this.creationTime = of(creationTime); return this; } @Override - public ImageBuilder withId(String id) { - this.id = id; + public ImageBuilder at(String key) { + this.key = key; + return this; + } + + @Override + public ImageBuilder sized(int width, int height) { + this.width = width; + this.height = height; return this; } @@ -50,6 +70,14 @@ public abstract class AbstractImageBuilder implements ImageBuilder { // PROTECTED METHODS // + protected String getId() { + return id.isPresent() ? id.get() : randomUUID().toString(); + } + + protected long getCreationTime() { + return creationTime.isPresent() ? creationTime.get() : currentTimeMillis(); + } + /** * Validates the state of this image builder. * @@ -57,7 +85,7 @@ public abstract class AbstractImageBuilder implements ImageBuilder { * if the state is not valid for building a new image */ protected void validate() throws IllegalStateException { - checkState((randomId && (id == null)) || (!randomId && (id != null)), "exactly one of random ID or custom ID must be set"); + checkState((width > 0) && (height > 0), "width and height must be set"); } }