projects
/
Sone.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Store order of images separately.
[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
89823a8
..
94eec8f
100644
(file)
--- a/
src/main/java/net/pterodactylus/sone/data/Album.java
+++ b/
src/main/java/net/pterodactylus/sone/data/Album.java
@@
-23,6
+23,8
@@
import java.util.List;
import java.util.Map;
import java.util.UUID;
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,6
+43,9
@@
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. */
private final Map<String, Image> images = new LinkedHashMap<String, Image>();
/** The images in this album. */
private final Map<String, Image> images = new LinkedHashMap<String, Image>();
@@
-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,10
+179,11
@@
public class Album implements Fingerprintable {
image.getAlbum().removeImage(image);
}
image.setAlbum(this);
image.getAlbum().removeImage(image);
}
image.setAlbum(this);
- if (images.isEmpty()) {
+ if (image
Id
s.isEmpty()) {
albumImage = image.getId();
}
albumImage = image.getId();
}
- if (!images.containsKey(image.getId())) {
+ if (!imageIds.contains(image.getId())) {
+ imageIds.add(image.getId());
images.put(image.getId(), image);
}
}
images.put(image.getId(), image);
}
}
@@
-182,7
+196,8
@@
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;
if (image.getId().equals(albumImage)) {
if (images.isEmpty()) {
albumImage = null;