projects
/
Sone.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
A linked hash map is no longer required, the order is now stored elsewhere.
[Sone.git]
/
src
/
main
/
java
/
net
/
pterodactylus
/
sone
/
data
/
Album.java
diff --git
a/src/main/java/net/pterodactylus/sone/data/Album.java
b/src/main/java/net/pterodactylus/sone/data/Album.java
index
5e5d08a
..
7d10e72
100644
(file)
--- a/
src/main/java/net/pterodactylus/sone/data/Album.java
+++ b/
src/main/java/net/pterodactylus/sone/data/Album.java
@@
-18,11
+18,13
@@
package net.pterodactylus.sone.data;
import java.util.ArrayList;
package net.pterodactylus.sone.data;
import java.util.ArrayList;
-import java.util.
Linked
HashMap;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
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.validation.Validation;
/**
import net.pterodactylus.util.validation.Validation;
/**
@@
-41,8
+43,11
@@
public class Album implements Fingerprintable {
/** Nested albums. */
private final List<Album> albums = new ArrayList<Album>();
/** Nested albums. */
private final List<Album> albums = new ArrayList<Album>();
+ /** The image IDs in order. */
+ private final List<String> imageIds = new ArrayList<String>();
+
/** The images in this album. */
/** The images in this album. */
- private final Map<String, Image> images = new
Linked
HashMap<String, Image>();
+ private final Map<String, Image> images = new HashMap<String, Image>();
/** The parent album. */
private Album parent;
/** The parent album. */
private Album parent;
@@
-151,7
+156,15
@@
public class Album implements Fingerprintable {
* @return The images in this album
*/
public List<Image> getImages() {
* @return The images in this album
*/
public List<Image> getImages() {
- return new ArrayList<Image>(images.values());
+ return Mappers.mappedList(imageIds, new Mapper<String, Image>() {
+
+ @Override
+ @SuppressWarnings("synthetic-access")
+ public Image map(String imageId) {
+ return images.get(imageId);
+ }
+
+ });
}
/**
}
/**
@@
-166,7
+179,11
@@
public class Album implements Fingerprintable {
image.getAlbum().removeImage(image);
}
image.setAlbum(this);
image.getAlbum().removeImage(image);
}
image.setAlbum(this);
- if (!images.containsKey(image.getId())) {
+ if (imageIds.isEmpty()) {
+ albumImage = image.getId();
+ }
+ if (!imageIds.contains(image.getId())) {
+ imageIds.add(image.getId());
images.put(image.getId(), image);
}
}
images.put(image.getId(), image);
}
}
@@
-179,7
+196,15
@@
public class Album implements Fingerprintable {
*/
public void removeImage(Image image) {
Validation.begin().isNotNull("Image", image).check().isEqual("Image Owner", image.getSone(), sone).check();
*/
public void removeImage(Image image) {
Validation.begin().isNotNull("Image", image).check().isEqual("Image Owner", image.getSone(), sone).check();
- images.remove(image);
+ imageIds.remove(image.getId());
+ images.remove(image.getId());
+ if (image.getId().equals(albumImage)) {
+ if (images.isEmpty()) {
+ albumImage = null;
+ } else {
+ albumImage = images.values().iterator().next().getId();
+ }
+ }
}
/**
}
/**