/*
- * Sone - MemoryDatabase.java - Copyright © 2013 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
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;
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;
private final Multimap<String, Image> soneImages = HashMultimap.create();
private final MemoryBookmarkDatabase memoryBookmarkDatabase;
+ private final MemoryFriendDatabase memoryFriendDatabase;
/**
* Creates a new memory database.
this.configurationLoader = new ConfigurationLoader(configuration);
memoryBookmarkDatabase =
new MemoryBookmarkDatabase(this, configurationLoader);
+ memoryFriendDatabase = new MemoryFriendDatabase(configurationLoader);
}
//
@Override
public SoneBuilder newSoneBuilder() {
- return new MemorySoneBuilder();
+ return new MemorySoneBuilder(this);
}
@Override
}
@Override
+ public Function<String, Optional<Sone>> soneLoader() {
+ return new Function<String, Optional<Sone>>() {
+ @Override
+ public Optional<Sone> apply(String soneId) {
+ return getSone(soneId);
+ }
+ };
+ }
+
+ @Override
public Optional<Sone> getSone(String soneId) {
lock.readLock().lock();
try {
}
}
+ @Override
+ public Collection<String> 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
//
}
}
- /**
- * 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<PostReply> 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<String> knownPostReplies = configurationLoader.loadKnownPostReplies();