projects
/
Sone.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Use a multimap to store posts with recipienets.
[Sone.git]
/
src
/
main
/
java
/
net
/
pterodactylus
/
sone
/
database
/
memory
/
MemoryDatabase.java
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
8b25954
..
d7e9f58
100644
(file)
--- a/
src/main/java/net/pterodactylus/sone/database/memory/MemoryDatabase.java
+++ b/
src/main/java/net/pterodactylus/sone/database/memory/MemoryDatabase.java
@@
-54,6
+54,8
@@
import net.pterodactylus.util.config.Configuration;
import net.pterodactylus.util.config.ConfigurationException;
import com.google.common.base.Optional;
import net.pterodactylus.util.config.ConfigurationException;
import com.google.common.base.Optional;
+import com.google.common.collect.HashMultimap;
+import com.google.common.collect.Multimap;
import com.google.common.collect.SortedSetMultimap;
import com.google.common.collect.TreeMultimap;
import com.google.common.util.concurrent.AbstractService;
import com.google.common.collect.SortedSetMultimap;
import com.google.common.collect.TreeMultimap;
import com.google.common.util.concurrent.AbstractService;
@@
-79,10
+81,10
@@
public class MemoryDatabase extends AbstractService implements Database {
private final Map<String, Post> allPosts = new HashMap<String, Post>();
/** All posts by their Sones. */
private final Map<String, Post> allPosts = new HashMap<String, Post>();
/** All posts by their Sones. */
- private final M
ap<String, Collection<Post>> sonePosts = new HashMap<String, Collection<Post>>
();
+ private final M
ultimap<String, Post> sonePosts = HashMultimap.create
();
/** All posts by their recipient. */
/** All posts by their recipient. */
- private final M
ap<String, Collection<Post>> recipientPosts = new HashMap<String, Collection<Post>>
();
+ private final M
ultimap<String, Post> recipientPosts = HashMultimap.create
();
/** Whether posts are known. */
private final Set<String> knownPosts = new HashSet<String>();
/** Whether posts are known. */
private final Set<String> knownPosts = new HashSet<String>();
@@
-256,8
+258,8
@@
public class MemoryDatabase extends AbstractService implements Database {
lock.writeLock().lock();
try {
/* remove all posts by the Sone. */
lock.writeLock().lock();
try {
/* remove all posts by the Sone. */
-
getPostsFrom(sone.getId()).clear(
);
- for (Post post :
p
osts) {
+
Collection<Post> oldPosts = getPostsFrom(sone.getId()
);
+ for (Post post :
oldP
osts) {
allPosts.remove(post.getId());
if (post.getRecipientId().isPresent()) {
getPostsTo(post.getRecipientId().get()).remove(post);
allPosts.remove(post.getId());
if (post.getRecipientId().isPresent()) {
getPostsTo(post.getRecipientId().get()).remove(post);
@@
-608,26
+610,12
@@
public class MemoryDatabase extends AbstractService implements Database {
* @return All posts
*/
private Collection<Post> getPostsFrom(String soneId) {
* @return All posts
*/
private Collection<Post> getPostsFrom(String soneId) {
- Collection<Post> posts = null;
lock.readLock().lock();
try {
lock.readLock().lock();
try {
-
posts =
sonePosts.get(soneId);
+
return
sonePosts.get(soneId);
} finally {
lock.readLock().unlock();
}
} finally {
lock.readLock().unlock();
}
- if (posts != null) {
- return posts;
- }
-
- posts = new HashSet<Post>();
- lock.writeLock().lock();
- try {
- sonePosts.put(soneId, posts);
- } finally {
- lock.writeLock().unlock();
- }
-
- return posts;
}
/**
}
/**
@@
-639,26
+627,12
@@
public class MemoryDatabase extends AbstractService implements Database {
* @return All posts
*/
private Collection<Post> getPostsTo(String recipientId) {
* @return All posts
*/
private Collection<Post> getPostsTo(String recipientId) {
- Collection<Post> posts = null;
lock.readLock().lock();
try {
lock.readLock().lock();
try {
-
posts =
recipientPosts.get(recipientId);
+
return
recipientPosts.get(recipientId);
} finally {
lock.readLock().unlock();
}
} finally {
lock.readLock().unlock();
}
- if (posts != null) {
- return posts;
- }
-
- posts = new HashSet<Post>();
- lock.writeLock().lock();
- try {
- recipientPosts.put(recipientId, posts);
- } finally {
- lock.writeLock().unlock();
- }
-
- return posts;
}
/** Loads the known posts. */
}
/** Loads the known posts. */