X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdatabase%2Fmemory%2FMemoryDatabase.java;h=9a2637dae49d11d91db4efa90da98c5a911b90f3;hb=f6816b0b1519a69a68fc280ee7d21d7ab0607289;hp=0c38c2cf59d9eae61d6794e357b048a9cbb8a63b;hpb=338c3f45dcaf2b5cf42f19b550520217790cf747;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/database/memory/MemoryDatabase.java b/src/main/java/net/pterodactylus/sone/database/memory/MemoryDatabase.java index 0c38c2c..9a2637d 100644 --- a/src/main/java/net/pterodactylus/sone/database/memory/MemoryDatabase.java +++ b/src/main/java/net/pterodactylus/sone/database/memory/MemoryDatabase.java @@ -492,6 +492,38 @@ public class MemoryDatabase extends AbstractService implements Database { } } + @Override + public void moveUp(Album album) { + lock.writeLock().lock(); + try { + List albums = albumChildren.get(album.getParent().getId()); + int currentIndex = albums.indexOf(album.getId()); + if (currentIndex == 0) { + return; + } + albums.remove(album.getId()); + albums.add(currentIndex - 1, album.getId()); + } finally { + lock.writeLock().unlock(); + } + } + + @Override + public void moveDown(Album album) { + lock.writeLock().lock(); + try { + List albums = albumChildren.get(album.getParent().getId()); + int currentIndex = albums.indexOf(album.getId()); + if (currentIndex == (albums.size() - 1)) { + return; + } + albums.remove(album.getId()); + albums.add(currentIndex + 1, album.getId()); + } finally { + lock.writeLock().unlock(); + } + } + // // ALBUMSTORE METHODS // @@ -532,6 +564,48 @@ public class MemoryDatabase extends AbstractService implements Database { } } + @Override + public List getImages(Album parent) { + lock.readLock().lock(); + try { + return from(albumImages.get(parent.getId())).transformAndConcat(getImage()).toList(); + } finally { + lock.readLock().unlock(); + } + } + + @Override + public void moveUp(Image image) { + lock.writeLock().lock(); + try { + List images = albumImages.get(image.getAlbum().getId()); + int currentIndex = images.indexOf(image.getId()); + if (currentIndex == 0) { + return; + } + images.remove(image.getId()); + images.add(currentIndex - 1, image.getId()); + } finally { + lock.writeLock().unlock(); + } + } + + @Override + public void moveDown(Image image) { + lock.writeLock().lock(); + try { + List images = albumChildren.get(image.getAlbum().getId()); + int currentIndex = images.indexOf(image.getId()); + if (currentIndex == (images.size() - 1)) { + return; + } + images.remove(image.getId()); + images.add(currentIndex + 1, image.getId()); + } finally { + lock.writeLock().unlock(); + } + } + // // IMAGESTORE METHODS // @@ -637,66 +711,6 @@ public class MemoryDatabase extends AbstractService implements Database { } } - void moveUp(Album album) { - lock.writeLock().lock(); - try { - List albums = albumChildren.get(album.getParent().getId()); - int currentIndex = albums.indexOf(album.getId()); - if (currentIndex == 0) { - return; - } - albums.remove(album.getId()); - albums.add(currentIndex - 1, album.getId()); - } finally { - lock.writeLock().unlock(); - } - } - - void moveDown(Album album) { - lock.writeLock().lock(); - try { - List albums = albumChildren.get(album.getParent().getId()); - int currentIndex = albums.indexOf(album.getId()); - if (currentIndex == (albums.size() - 1)) { - return; - } - albums.remove(album.getId()); - albums.add(currentIndex + 1, album.getId()); - } finally { - lock.writeLock().unlock(); - } - } - - void moveUp(Image image) { - lock.writeLock().lock(); - try { - List images = albumImages.get(image.getAlbum().getId()); - int currentIndex = images.indexOf(image.getId()); - if (currentIndex == 0) { - return; - } - images.remove(image.getId()); - images.add(currentIndex - 1, image.getId()); - } finally { - lock.writeLock().unlock(); - } - } - - void moveDown(Image image) { - lock.writeLock().lock(); - try { - List images = albumChildren.get(image.getAlbum().getId()); - int currentIndex = images.indexOf(image.getId()); - if (currentIndex == (images.size() - 1)) { - return; - } - images.remove(image.getId()); - images.add(currentIndex + 1, image.getId()); - } finally { - lock.writeLock().unlock(); - } - } - // // PRIVATE METHODS // @@ -867,4 +881,13 @@ public class MemoryDatabase extends AbstractService implements Database { }; } + private Function> getImage() { + return new Function>() { + @Override + public Iterable apply(String input) { + return (input == null) ? Collections.emptyList() : getImage(input).asSet(); + } + }; + } + }