import java.util.concurrent.locks.ReentrantReadWriteLock;
import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
import net.pterodactylus.sone.data.Album;
import net.pterodactylus.sone.data.Image;
import net.pterodactylus.sone.database.PostDatabase;
import net.pterodactylus.sone.database.PostReplyBuilder;
import net.pterodactylus.sone.database.SoneBuilder;
-import net.pterodactylus.sone.database.SoneProvider;
import net.pterodactylus.util.config.Configuration;
import net.pterodactylus.util.config.ConfigurationException;
-import com.google.common.base.Optional;
import com.google.common.base.Predicate;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.Multimap;
/** The lock. */
private final ReadWriteLock lock = new ReentrantReadWriteLock();
- /** The Sone provider. */
- private final SoneProvider soneProvider;
-
/** The configuration. */
private final Configuration configuration;
private final ConfigurationLoader configurationLoader;
/**
* Creates a new memory database.
*
- * @param soneProvider
- * The Sone provider
* @param configuration
* The configuration for loading and saving elements
*/
@Inject
- public MemoryDatabase(SoneProvider soneProvider, Configuration configuration) {
- this.soneProvider = soneProvider;
+ public MemoryDatabase(Configuration configuration) {
this.configuration = configuration;
this.configurationLoader = new ConfigurationLoader(configuration);
memoryBookmarkDatabase =
memoryFriendDatabase.removeFriend(localSone.getId(), friendSoneId);
}
+ @Nullable
+ @Override
+ public Long getFollowingTime(@Nonnull String friendSoneId) {
+ return memoryFriendDatabase.getFollowingTime(friendSoneId);
+ }
+
//
// POSTPROVIDER METHODS
//
- /** {@inheritDocs} */
+ @Nullable
@Override
- public Optional<Post> getPost(String postId) {
+ public Post getPost(@Nonnull String postId) {
lock.readLock().lock();
try {
- return fromNullable(allPosts.get(postId));
+ return allPosts.get(postId);
} finally {
lock.readLock().unlock();
}
/** {@inheritDocs} */
@Override
public PostBuilder newPostBuilder() {
- return new MemoryPostBuilder(this, soneProvider);
+ return new MemoryPostBuilder(this, this);
}
//
// POSTREPLYPROVIDER METHODS
//
- /** {@inheritDocs} */
+ @Nullable
@Override
- public Optional<PostReply> getPostReply(String id) {
+ public PostReply getPostReply(String id) {
lock.readLock().lock();
try {
- return fromNullable(allPostReplies.get(id));
+ return allPostReplies.get(id);
} finally {
lock.readLock().unlock();
}
/** {@inheritDocs} */
@Override
public PostReplyBuilder newPostReplyBuilder() {
- return new MemoryPostReplyBuilder(this, soneProvider);
+ return new MemoryPostReplyBuilder(this, this);
}
//
// ALBUMPROVDER METHODS
//
+ @Nullable
@Override
- public Optional<Album> getAlbum(String albumId) {
+ public Album getAlbum(@Nonnull String albumId) {
lock.readLock().lock();
try {
- return fromNullable(allAlbums.get(albumId));
+ return allAlbums.get(albumId);
} finally {
lock.readLock().unlock();
}
// IMAGEPROVIDER METHODS
//
+ @Nullable
@Override
- public Optional<Image> getImage(String imageId) {
+ public Image getImage(@Nonnull String imageId) {
lock.readLock().lock();
try {
- return fromNullable(allImages.get(imageId));
+ return allImages.get(imageId);
} finally {
lock.readLock().unlock();
}