Move post-related database functionality into its own class.
[Sone.git] / src / main / java / net / pterodactylus / sone / database / memory / ConfigurationLoader.java
index fe23153..e65cf48 100644 (file)
@@ -2,6 +2,7 @@ package net.pterodactylus.sone.database.memory;
 
 import static java.util.logging.Level.WARNING;
 
+import java.util.Collection;
 import java.util.HashSet;
 import java.util.Set;
 import java.util.logging.Logger;
@@ -9,6 +10,8 @@ import java.util.logging.Logger;
 import net.pterodactylus.util.config.Configuration;
 import net.pterodactylus.util.config.ConfigurationException;
 
+import com.google.common.base.Optional;
+
 /**
  * Helper class for interacting with a {@link Configuration}.
  *
@@ -17,17 +20,29 @@ import net.pterodactylus.util.config.ConfigurationException;
 public class ConfigurationLoader {
 
        private static final Logger logger =
-                       Logger.getLogger(ConfigurationLoader.class.getName());
+                       Logger.getLogger("Sone.Database.Memory.Configuration");
        private final Configuration configuration;
 
        public ConfigurationLoader(Configuration configuration) {
                this.configuration = configuration;
        }
 
+       public synchronized Set<String> loadFriends(String localSoneId) {
+               return loadIds("Sone/" + localSoneId + "/Friends");
+       }
+
+       public void saveFriends(String soneId, Collection<String> friends) {
+               saveIds("Sone/" + soneId + "/Friends", friends);
+       }
+
        public synchronized Set<String> loadKnownPosts() {
                return loadIds("KnownPosts");
        }
 
+       public synchronized void saveKnownPosts(Set<String> knownPosts) {
+               saveIds("KnownPosts", knownPosts);
+       }
+
        public synchronized Set<String> loadKnownPostReplies() {
                return loadIds("KnownReplies");
        }
@@ -56,10 +71,10 @@ public class ConfigurationLoader {
                saveIds("Bookmarks/Post", bookmarkedPosts);
        }
 
-       private void saveIds(String prefix, Set<String> bookmarkedPosts) {
+       private void saveIds(String prefix, Collection<String> ids) {
                try {
                        int idCounter = 0;
-                       for (String id : bookmarkedPosts) {
+                       for (String id : ids) {
                                configuration
                                                .getStringValue(prefix + "/" + idCounter++ + "/ID")
                                                .setValue(id);
@@ -72,4 +87,13 @@ public class ConfigurationLoader {
                }
        }
 
+       public long getLocalSoneTime(String localSoneId) {
+               Long time = configuration.getLongValue("Sone/" + localSoneId + "/Time").getValue(null);
+               return Optional.fromNullable(time).or(-1L);
+       }
+
+       public String getLastInsertFingerprint(String localSoneId) {
+               return configuration.getStringValue("Sone/" + localSoneId + "/LastInsertFingerprint").getValue("");
+       }
+
 }