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=4437bafaf321264194397c42e426849baac3d27d;hpb=2f995a29d8731dc3b3d20e78fd9382be542292ff;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 4437baf..9a2637d 100644 --- a/src/main/java/net/pterodactylus/sone/database/memory/MemoryDatabase.java +++ b/src/main/java/net/pterodactylus/sone/database/memory/MemoryDatabase.java @@ -21,6 +21,7 @@ import static com.google.common.base.Optional.fromNullable; import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Predicates.not; import static com.google.common.collect.FluentIterable.from; +import static java.util.Collections.emptyList; import static net.pterodactylus.sone.data.Sone.LOCAL_SONE_FILTER; import java.util.ArrayList; @@ -52,6 +53,7 @@ import net.pterodactylus.sone.database.SoneBuilder; import net.pterodactylus.util.config.Configuration; import net.pterodactylus.util.config.ConfigurationException; +import com.google.common.base.Function; import com.google.common.base.Optional; import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.ListMultimap; @@ -361,7 +363,7 @@ public class MemoryDatabase extends AbstractService implements Database { lock.readLock().lock(); try { if (!postReplies.containsKey(postId)) { - return Collections.emptyList(); + return emptyList(); } return new ArrayList(postReplies.get(postId)); } finally { @@ -480,6 +482,48 @@ public class MemoryDatabase extends AbstractService implements Database { } } + @Override + public List getAlbums(Album parent) { + lock.readLock().lock(); + try { + return from(albumChildren.get(parent.getId())).transformAndConcat(getAlbum()).toList(); + } finally { + lock.readLock().unlock(); + } + } + + @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 // @@ -520,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 // @@ -625,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 // @@ -846,4 +872,22 @@ public class MemoryDatabase extends AbstractService implements Database { } } + private Function> getAlbum() { + return new Function>() { + @Override + public Iterable apply(String input) { + return (input == null) ? Collections.emptyList() : getAlbum(input).asSet(); + } + }; + } + + private Function> getImage() { + return new Function>() { + @Override + public Iterable apply(String input) { + return (input == null) ? Collections.emptyList() : getImage(input).asSet(); + } + }; + } + }