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=fa608e4c969f990bcc44693c3714ccce5a6de83d;hp=eb0d20a7be718327396b6dc0fde4376e1ebc3c53;hb=419098bcd6215125408b29e60bd888e60979d37b;hpb=6e61aaf27462b1716569550e11f6074cacb628d6 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 eb0d20a..fa608e4 100644 --- a/src/main/java/net/pterodactylus/sone/database/memory/MemoryDatabase.java +++ b/src/main/java/net/pterodactylus/sone/database/memory/MemoryDatabase.java @@ -1,5 +1,5 @@ /* - * Sone - MemoryDatabase.java - Copyright © 2013 David Roden + * Sone - MemoryDatabase.java - Copyright © 2013–2015 David Roden * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -21,13 +21,13 @@ 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.unmodifiableCollection; import static net.pterodactylus.sone.data.Reply.TIME_COMPARATOR; import static net.pterodactylus.sone.data.Sone.LOCAL_SONE_FILTER; import static net.pterodactylus.sone.data.Sone.toAllAlbums; import static net.pterodactylus.sone.data.Sone.toAllImages; import java.util.Collection; +import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; @@ -56,6 +56,7 @@ import net.pterodactylus.sone.database.SoneProvider; 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.base.Predicate; import com.google.common.collect.HashMultimap; @@ -117,6 +118,7 @@ public class MemoryDatabase extends AbstractService implements Database { private final Multimap soneImages = HashMultimap.create(); private final MemoryBookmarkDatabase memoryBookmarkDatabase; + private final MemoryFriendDatabase memoryFriendDatabase; /** * Creates a new memory database. @@ -133,6 +135,7 @@ public class MemoryDatabase extends AbstractService implements Database { this.configurationLoader = new ConfigurationLoader(configuration); memoryBookmarkDatabase = new MemoryBookmarkDatabase(this, configurationLoader); + memoryFriendDatabase = new MemoryFriendDatabase(configurationLoader); } // @@ -178,7 +181,7 @@ public class MemoryDatabase extends AbstractService implements Database { @Override public SoneBuilder newSoneBuilder() { - return new MemorySoneBuilder(); + return new MemorySoneBuilder(this); } @Override @@ -239,6 +242,16 @@ public class MemoryDatabase extends AbstractService implements Database { } @Override + public Function> soneLoader() { + return new Function>() { + @Override + public Optional apply(String soneId) { + return getSone(soneId); + } + }; + } + + @Override public Optional getSone(String soneId) { lock.readLock().lock(); try { @@ -279,6 +292,38 @@ public class MemoryDatabase extends AbstractService implements Database { } } + @Override + public Collection getFriends(Sone localSone) { + if (!localSone.isLocal()) { + return Collections.emptySet(); + } + return memoryFriendDatabase.getFriends(localSone.getId()); + } + + @Override + public boolean isFriend(Sone localSone, String friendSoneId) { + if (!localSone.isLocal()) { + return false; + } + return memoryFriendDatabase.isFriend(localSone.getId(), friendSoneId); + } + + @Override + public void addFriend(Sone localSone, String friendSoneId) { + if (!localSone.isLocal()) { + return; + } + memoryFriendDatabase.addFriend(localSone.getId(), friendSoneId); + } + + @Override + public void removeFriend(Sone localSone, String friendSoneId) { + if (!localSone.isLocal()) { + return; + } + memoryFriendDatabase.removeFriend(localSone.getId(), friendSoneId); + } + // // POSTPROVIDER METHODS // @@ -676,22 +721,6 @@ public class MemoryDatabase extends AbstractService implements Database { } } - /** - * Returns all replies by the given Sone. - * - * @param id - * The ID of the Sone - * @return The post replies of the Sone, sorted by time (newest first) - */ - private Collection getRepliesFrom(String id) { - lock.readLock().lock(); - try { - return unmodifiableCollection(sonePostReplies.get(id)); - } finally { - lock.readLock().unlock(); - } - } - /** Loads the known post replies. */ private void loadKnownPostReplies() { Set knownPostReplies = configurationLoader.loadKnownPostReplies();