X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdata%2Fimpl%2FAbstractImageBuilder.java;h=1692beea4a31469a829ec407b556ed69f8afdce3;hb=835eaad37c4ba9b634a57356d56b3b8711fdff1b;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..1692bee 100644 --- a/src/main/java/net/pterodactylus/sone/data/impl/AbstractImageBuilder.java +++ b/src/main/java/net/pterodactylus/sone/data/impl/AbstractImageBuilder.java @@ -17,7 +17,9 @@ package net.pterodactylus.sone.data.impl; import static com.google.common.base.Preconditions.checkState; +import static java.util.UUID.randomUUID; +import net.pterodactylus.sone.data.Sone; import net.pterodactylus.sone.database.ImageBuilder; /** @@ -33,6 +35,12 @@ public abstract class AbstractImageBuilder implements ImageBuilder { /** The ID of the album to create. */ protected String id; + protected Sone sone; + protected long creationTime; + protected boolean createdNow; + protected String key; + protected int width; + protected int height; @Override public ImageBuilder randomId() { @@ -46,10 +54,49 @@ public abstract class AbstractImageBuilder implements ImageBuilder { return this; } + @Override + public ImageBuilder by(Sone sone) { + this.sone = sone; + return this; + } + + @Override + public ImageBuilder created(long creationTime) { + this.creationTime = creationTime; + return this; + } + + @Override + public ImageBuilder createdNow() { + createdNow = true; + return this; + } + + @Override + 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; + } + // // PROTECTED METHODS // + protected String getId() { + return randomId ? randomUUID().toString() : id; + } + + protected long getCreationTime() { + return createdNow ? System.currentTimeMillis() : creationTime; + } + /** * Validates the state of this image builder. * @@ -58,6 +105,9 @@ public abstract class AbstractImageBuilder implements ImageBuilder { */ protected void validate() throws IllegalStateException { checkState((randomId && (id == null)) || (!randomId && (id != null)), "exactly one of random ID or custom ID must be set"); + checkState(sone != null, "sone must not be null"); + checkState((createdNow && (creationTime == 0)) || (!createdNow && (creationTime > 0)), "exactly one of created now or creation time must be set"); + checkState((width > 0) && (height > 0), "width and height must be set"); } }