1 package net.pterodactylus.sone.database.memory;
3 import static java.util.logging.Level.WARNING;
5 import java.util.Collection;
6 import java.util.HashSet;
8 import java.util.logging.Logger;
10 import net.pterodactylus.util.config.Configuration;
11 import net.pterodactylus.util.config.ConfigurationException;
13 import com.google.common.base.Optional;
16 * Helper class for interacting with a {@link Configuration}.
18 * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
20 public class ConfigurationLoader {
22 private static final Logger logger =
23 Logger.getLogger("Sone.Database.Memory.Configuration");
24 private final Configuration configuration;
26 public ConfigurationLoader(Configuration configuration) {
27 this.configuration = configuration;
30 public synchronized Set<String> loadFriends(String localSoneId) {
31 return loadIds("Sone/" + localSoneId + "/Friends");
34 public void saveFriends(String soneId, Collection<String> friends) {
35 saveIds("Sone/" + soneId + "/Friends", friends);
38 public synchronized Set<String> loadKnownSones() {
39 return loadIds("KnownSones");
42 public synchronized void saveKnownSones(Set<String> knownSones) {
43 saveIds("KnownSones", knownSones);
46 public synchronized Set<String> loadKnownPosts() {
47 return loadIds("KnownPosts");
50 public synchronized void saveKnownPosts(Set<String> knownPosts) {
51 saveIds("KnownPosts", knownPosts);
54 public synchronized Set<String> loadKnownPostReplies() {
55 return loadIds("KnownReplies");
58 public synchronized Set<String> loadBookmarkedPosts() {
59 return loadIds("Bookmarks/Post");
62 private Set<String> loadIds(String prefix) {
63 Set<String> ids = new HashSet<String>();
66 String id = configuration
67 .getStringValue(prefix + "/" + idCounter++ + "/ID")
77 public synchronized void saveBookmarkedPosts(
78 Set<String> bookmarkedPosts) {
79 saveIds("Bookmarks/Post", bookmarkedPosts);
82 private void saveIds(String prefix, Collection<String> ids) {
85 for (String id : ids) {
87 .getStringValue(prefix + "/" + idCounter++ + "/ID")
91 .getStringValue(prefix + "/" + idCounter + "/ID")
93 } catch (ConfigurationException ce1) {
94 logger.log(WARNING, "Could not save bookmarked posts!", ce1);
98 public long getLocalSoneTime(String localSoneId) {
99 Long time = configuration.getLongValue("Sone/" + localSoneId + "/Time").getValue(null);
100 return Optional.fromNullable(time).or(-1L);
103 public String getLastInsertFingerprint(String localSoneId) {
104 return configuration.getStringValue("Sone/" + localSoneId + "/LastInsertFingerprint").getValue("");