X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdatabase%2Fmemory%2FMemoryDatabase.java;h=5a292851bfa9024e19e8048b760296330afd601e;hp=0b2c5a21c14869ec2f3545c0f4847bf69ba60b61;hb=ebd842a2ffdd117073401ce0f47a7dfd598c7a61;hpb=51ab7efd1f6376f9d7a27b63a121262a9cef9cb0 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 0b2c5a2..5a29285 100644 --- a/src/main/java/net/pterodactylus/sone/database/memory/MemoryDatabase.java +++ b/src/main/java/net/pterodactylus/sone/database/memory/MemoryDatabase.java @@ -100,15 +100,6 @@ public class MemoryDatabase extends AbstractService implements Database { } }, TIME_COMPARATOR); - /** Replies by post. */ - private final SortedSetMultimap postReplies = TreeMultimap.create(new Comparator() { - - @Override - public int compare(String leftString, String rightString) { - return leftString.compareTo(rightString); - } - }, TIME_COMPARATOR); - /** Whether post replies are known. */ private final Set knownPostReplies = new HashSet(); @@ -311,13 +302,16 @@ public class MemoryDatabase extends AbstractService implements Database { /** {@inheritDocs} */ @Override - public List getReplies(String postId) { + public List getReplies(final String postId) { lock.readLock().lock(); try { - if (!postReplies.containsKey(postId)) { - return Collections.emptyList(); - } - return new ArrayList(postReplies.get(postId)); + return from(allPostReplies.values()) + .filter(new Predicate() { + @Override + public boolean apply(PostReply postReply) { + return postReply.getPostId().equals(postId); + } + }).toSortedList(TIME_COMPARATOR); } finally { lock.readLock().unlock(); } @@ -343,7 +337,6 @@ public class MemoryDatabase extends AbstractService implements Database { lock.writeLock().lock(); try { allPostReplies.put(postReply.getId(), postReply); - postReplies.put(postReply.getPostId(), postReply); } finally { lock.writeLock().unlock(); } @@ -369,7 +362,6 @@ public class MemoryDatabase extends AbstractService implements Database { for (PostReply postReply : postReplies) { allPostReplies.put(postReply.getId(), postReply); sonePostReplies.put(postReply.getSone().getId(), postReply); - this.postReplies.put(postReply.getPostId(), postReply); } } finally { lock.writeLock().unlock(); @@ -382,9 +374,6 @@ public class MemoryDatabase extends AbstractService implements Database { lock.writeLock().lock(); try { allPostReplies.remove(postReply.getId()); - if (postReplies.containsKey(postReply.getPostId())) { - postReplies.get(postReply.getPostId()).remove(postReply); - } } finally { lock.writeLock().unlock(); }