X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FCore.java;h=f5d695cb9112c64211971e57834ccafc32e3634b;hb=102382a92bd1fda430a0bd882b2e065426a48e64;hp=59116751188b5064633cab1ebce3d45e8ce8b693;hpb=9671acb06f9c54e65898b4237b8cf3b2fbae085e;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/core/Core.java b/src/main/java/net/pterodactylus/sone/core/Core.java index 5911675..f5d695c 100644 --- a/src/main/java/net/pterodactylus/sone/core/Core.java +++ b/src/main/java/net/pterodactylus/sone/core/Core.java @@ -1343,8 +1343,9 @@ public class Core implements IdentityListener, UpdateListener, ImageInsertListen /* load albums. */ List topLevelAlbums = new ArrayList(); + int albumCounter = 0; while (true) { - String albumPrefix = sonePrefix + "/Albums/" + albums.size(); + String albumPrefix = sonePrefix + "/Albums/" + albumCounter++; String albumId = configuration.getStringValue(albumPrefix + "/ID").getValue(null); if (albumId == null) { break; @@ -1846,6 +1847,29 @@ public class Core implements IdentityListener, UpdateListener, ImageInsertListen } /** + * Deletes the given album. The owner of the album has to be a local Sone, + * and the album has to be {@link Album#isEmpty() empty} to be deleted. + * + * @param album + * The album to remove + */ + public void deleteAlbum(Album album) { + Validation.begin().isNotNull("Album", album).check().is("Local Sone", isLocalSone(album.getSone())).check(); + if (!album.isEmpty()) { + return; + } + if (album.getParent() == null) { + album.getSone().removeAlbum(album); + } else { + album.getParent().removeAlbum(album); + } + synchronized (albums) { + albums.remove(album.getId()); + } + saveSone(album.getSone()); + } + + /** * Creates a new image. * * @param sone @@ -1863,10 +1887,29 @@ public class Core implements IdentityListener, UpdateListener, ImageInsertListen synchronized (images) { images.put(image.getId(), image); } + imageInserter.insertImage(temporaryImage, image); return image; } /** + * Deletes the given image. This method will also delete a matching + * temporary image. + * + * @see #deleteTemporaryImage(TemporaryImage) + * @param image + * The image to delete + */ + public void deleteImage(Image image) { + Validation.begin().isNotNull("Image", image).check().is("Local Sone", isLocalSone(image.getSone())).check(); + deleteTemporaryImage(image.getId()); + image.getAlbum().removeImage(image); + synchronized (images) { + images.remove(image.getId()); + } + saveSone(image.getSone()); + } + + /** * Creates a new temporary image. * * @param mimeType @@ -1890,7 +1933,7 @@ public class Core implements IdentityListener, UpdateListener, ImageInsertListen * @param temporaryImage * The temporary image to delete */ - public void deteleTemporaryImage(TemporaryImage temporaryImage) { + public void deleteTemporaryImage(TemporaryImage temporaryImage) { Validation.begin().isNotNull("Temporary Image", temporaryImage).check(); deleteTemporaryImage(temporaryImage.getId()); } @@ -1906,6 +1949,10 @@ public class Core implements IdentityListener, UpdateListener, ImageInsertListen synchronized (temporaryImages) { temporaryImages.remove(imageId); } + Image image = getImage(imageId, false); + if (image != null) { + imageInserter.cancelImageInsert(image); + } } /**