X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdata%2FAlbum.java;h=20862a4647300e904d04995abbde7d244772ba16;hb=356a84e5ec2bb0936b7d1cdc635f7f051788da6a;hp=ac7e11db0bfe488b81330bb8513dbefe6c99d8ae;hpb=6d660240ba79ea710fc80e816871413c953ee604;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 ac7e11d..20862a4 100644 --- a/src/main/java/net/pterodactylus/sone/data/Album.java +++ b/src/main/java/net/pterodactylus/sone/data/Album.java @@ -103,7 +103,7 @@ public class Album implements Fingerprintable { * @return This album */ public Album setSone(Sone sone) { - Validation.begin().isNull("Current Album Owner", this.sone).isNotNull("New Album Owner", sone).check(); + Validation.begin().isNotNull("New Album Owner", sone).isEither("Old Album Owner", this.sone, null, sone).check(); this.sone = sone; return this; } @@ -124,9 +124,11 @@ public class Album implements Fingerprintable { * The album to add */ public void addAlbum(Album album) { - Validation.begin().isNotNull("Album", album).check().isEqual("Album Owner", album.sone, sone).isNull("Album Parent", album.parent).check(); - albums.add(album); + Validation.begin().isNotNull("Album", album).check().isEqual("Album Owner", album.sone, sone).isEither("Old Album Parent", this.parent, null, album.parent).check(); album.setParent(this); + if (!albums.contains(album)) { + albums.add(album); + } } /** @@ -158,8 +160,13 @@ public class Album implements Fingerprintable { */ public void addImage(Image image) { Validation.begin().isNotNull("Image", image).check().isNotNull("Image Owner", image.getSone()).check().isEqual("Image Owner", image.getSone(), sone).check(); + if (image.getAlbum() != null) { + image.getAlbum().removeImage(image); + } image.setAlbum(this); - images.add(image); + if (!images.contains(image)) { + images.add(image); + } } /** @@ -224,7 +231,6 @@ public class Album implements Fingerprintable { * @return This album */ protected Album removeParent() { - Validation.begin().isNotNull("Album Parent", parent).check(); this.parent = null; return this; }