Image builders always need to know their Sones.
[Sone.git] / src / main / java / net / pterodactylus / sone / data / impl / AbstractImageBuilder.java
index 209ef0f..6ccd130 100644 (file)
  */
 package net.pterodactylus.sone.data.impl;
 
-import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
+import static java.util.UUID.randomUUID;
 
-import net.pterodactylus.sone.data.Album;
-import net.pterodactylus.sone.data.Sone;
 import net.pterodactylus.sone.database.ImageBuilder;
 
 /**
@@ -31,24 +29,17 @@ import net.pterodactylus.sone.database.ImageBuilder;
  */
 public abstract class AbstractImageBuilder implements ImageBuilder {
 
-       protected final Album album;
-
        /** Whether to create an album with a random ID. */
        protected boolean randomId;
 
        /** 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;
 
-       public AbstractImageBuilder(Album album) {
-               this.album = checkNotNull(album, "album must not be null");
-       }
-
        @Override
        public ImageBuilder randomId() {
                randomId = true;
@@ -62,12 +53,6 @@ public abstract class AbstractImageBuilder implements ImageBuilder {
        }
 
        @Override
-       public ImageBuilder by(Sone sone) {
-               this.sone = sone;
-               return this;
-       }
-
-       @Override
        public ImageBuilder created(long creationTime) {
                this.creationTime = creationTime;
                return this;
@@ -96,6 +81,14 @@ public abstract class AbstractImageBuilder implements ImageBuilder {
        // 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.
         *
@@ -104,7 +97,6 @@ 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");
        }