X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdatabase%2Fmemory%2FMemoryDatabase.java;h=d1ceee933b888d3c2d63572e1758bcd90a39ee64;hb=8d49fb185ee26853262a12f6d419ef2e39c1116c;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..d1ceee9 100644 --- a/src/main/java/net/pterodactylus/sone/database/memory/MemoryDatabase.java +++ b/src/main/java/net/pterodactylus/sone/database/memory/MemoryDatabase.java @@ -242,16 +242,6 @@ public class MemoryDatabase extends AbstractService implements Database { } // - // POSTBUILDERFACTORY METHODS - // - - /** {@inheritDocs} */ - @Override - public PostBuilder newPostBuilder() { - return new MemoryPostBuilder(this); - } - - // // POSTSTORE METHODS // @@ -492,6 +482,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 +554,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 +701,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 +871,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(); + } + }; + } + }