/*
- * Sone - MemoryDatabase.java - Copyright © 2013–2015 David Roden
+ * Sone - MemoryDatabase.java - Copyright © 2013–2016 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
package net.pterodactylus.sone.database.memory;
-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 java.util.concurrent.locks.ReadWriteLock;
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.data.Post;
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.Function;
-import com.google.common.base.Optional;
import com.google.common.base.Predicate;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.Multimap;
import com.google.common.util.concurrent.AbstractService;
import com.google.inject.Inject;
import com.google.inject.Singleton;
+import kotlin.jvm.functions.Function1;
/**
* Memory-based {@link PostDatabase} implementation.
/** 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 =
}
}
+ @Nonnull
@Override
- public Function<String, Optional<Sone>> soneLoader() {
- return new Function<String, Optional<Sone>>() {
+ public Function1<String, Sone> getSoneLoader() {
+ return new Function1<String, Sone>() {
@Override
- public Optional<Sone> apply(String soneId) {
+ public Sone invoke(String soneId) {
return getSone(soneId);
}
};
}
@Override
- public Optional<Sone> getSone(String soneId) {
+ public Sone getSone(String soneId) {
lock.readLock().lock();
try {
- return fromNullable(allSones.get(soneId));
+ return allSones.get(soneId);
} finally {
lock.readLock().unlock();
}
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();
}