Image builders always need to know their Sones.
[Sone.git] / src / main / java / net / pterodactylus / sone / core / Core.java
index fac14a9..b8b8f1a 100644 (file)
@@ -643,40 +643,8 @@ public class Core extends AbstractService implements SoneProvider, PostProvider,
                return newAlbum;
        }
 
-       /**
-        * Returns the image with the given ID, creating it if necessary.
-        *
-        * @param imageId
-        *            The ID of the image
-        * @return The image with the given ID
-        */
-       public Image getImage(String imageId) {
-               return getImage(imageId, true);
-       }
-
-       /**
-        * Returns the image with the given ID, optionally creating it if it does
-        * not exist.
-        *
-        * @param imageId
-        *            The ID of the image
-        * @param create
-        *            {@code true} to create an image if none exists with the given
-        *            ID
-        * @return The image with the given ID, or {@code null} if none exists and
-        *         none was created
-        */
-       public Image getImage(String imageId, boolean create) {
-               Optional<Image> image = database.getImage(imageId);
-               if (image.isPresent()) {
-                       return image.get();
-               }
-               if (!create) {
-                       return null;
-               }
-               Image newImage = database.newImageBuilder().withId(imageId).build();
-               database.storeImage(newImage);
-               return newImage;
+       public Optional<Image> getImage(String imageId) {
+               return database.getImage(imageId);
        }
 
        /**
@@ -1284,14 +1252,13 @@ public class Core extends AbstractService implements SoneProvider, PostProvider,
                                logger.log(Level.WARNING, "Invalid album image encountered, aborting load!");
                                return;
                        }
-                       Image image = getImage(imageId).modify().setSone(sone).setCreationTime(creationTime).setKey(key).setTitle(title).setDescription(description).setWidth(width).setHeight(height).update();
-                       album.addImage(image);
+                       album.newImageBuilder().withId(imageId).created(creationTime).at(key).sized(width, height).build().modify().setTitle(title).setDescription(description).update();
                }
 
                /* load avatar. */
                String avatarId = configuration.getStringValue(sonePrefix + "/Profile/Avatar").getValue(null);
                if (avatarId != null) {
-                       profile.setAvatar(getImage(avatarId, false));
+                       profile.setAvatar(getImage(avatarId).orNull());
                }
 
                /* load options. */
@@ -1639,8 +1606,7 @@ public class Core extends AbstractService implements SoneProvider, PostProvider,
                checkNotNull(temporaryImage, "temporaryImage must not be null");
                checkArgument(sone.isLocal(), "sone must be a local Sone");
                checkArgument(sone.equals(album.getSone()), "album must belong to the given Sone");
-               Image image = database.newImageBuilder().withId(temporaryImage.getId()).build().modify().setSone(sone).setCreationTime(System.currentTimeMillis()).update();
-               album.addImage(image);
+               Image image = album.newImageBuilder().withId(temporaryImage.getId()).createdNow().sized(temporaryImage.getWidth(), temporaryImage.getHeight()).build();
                database.storeImage(image);
                imageInserter.insertImage(temporaryImage, image);
                return image;
@@ -1702,9 +1668,9 @@ public class Core extends AbstractService implements SoneProvider, PostProvider,
                synchronized (temporaryImages) {
                        temporaryImages.remove(imageId);
                }
-               Image image = getImage(imageId, false);
-               if (image != null) {
-                       imageInserter.cancelImageInsert(image);
+               Optional<Image> image = getImage(imageId);
+               if (image.isPresent()) {
+                       imageInserter.cancelImageInsert(image.get());
                }
        }