X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdata%2FAlbum.java;h=88029e19ac4a50aae64e905632905150378c6630;hb=8ded406fabed389e0f9dc304232f2ab7f3cd65d7;hp=94eec8f142ae5f2df8daf0b41a9a7898c270b708;hpb=49e0bc7a5120b0f07ad19a486b6c0c18def8ca66;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/data/Album.java b/src/main/java/net/pterodactylus/sone/data/Album.java index 94eec8f..88029e1 100644 --- a/src/main/java/net/pterodactylus/sone/data/Album.java +++ b/src/main/java/net/pterodactylus/sone/data/Album.java @@ -18,13 +18,14 @@ package net.pterodactylus.sone.data; import java.util.ArrayList; -import java.util.LinkedHashMap; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; import net.pterodactylus.util.collection.Mapper; import net.pterodactylus.util.collection.Mappers; +import net.pterodactylus.util.object.Default; import net.pterodactylus.util.validation.Validation; /** @@ -47,7 +48,7 @@ public class Album implements Fingerprintable { private final List imageIds = new ArrayList(); /** The images in this album. */ - private final Map images = new LinkedHashMap(); + private final Map images = new HashMap(); /** The parent album. */ private Album parent; @@ -208,6 +209,40 @@ public class Album implements Fingerprintable { } /** + * Moves the given image up in this album’s images. If the image is already + * the first image, nothing happens. + * + * @param image + * The image to move up + */ + public void moveImageUp(Image image) { + Validation.begin().isNotNull("Image", image).check().isEqual("Image Album", image.getAlbum(), this).isEqual("Album Owner", image.getAlbum().getSone(), sone).check(); + int oldIndex = imageIds.indexOf(image.getId()); + if (oldIndex <= 0) { + return; + } + imageIds.remove(image.getId()); + imageIds.add(oldIndex - 1, image.getId()); + } + + /** + * Move the given image down in this album’s images. If the image is already + * the last image, nothing happens. + * + * @param image + * The image to move down + */ + public void moveImageDown(Image image) { + Validation.begin().isNotNull("Image", image).check().isEqual("Image Album", image.getAlbum(), this).isEqual("Album Owner", image.getAlbum().getSone(), sone).check(); + int oldIndex = imageIds.indexOf(image.getId()); + if ((oldIndex == -1) || (oldIndex >= (imageIds.size() - 1))) { + return; + } + imageIds.remove(image.getId()); + imageIds.add(oldIndex + 1, image.getId()); + } + + /** * Returns the album image of this album, or {@code null} if no album image * has been set. * @@ -217,7 +252,7 @@ public class Album implements Fingerprintable { if (albumImage == null) { return null; } - return images.get(albumImage); + return Default.forNull(images.get(albumImage), images.values().iterator().next()); } /**