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;
14 * Helper class for interacting with a {@link Configuration}.
16 * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
18 public class ConfigurationLoader {
20 private static final Logger logger =
21 Logger.getLogger("Sone.Database.Memory.Configuration");
22 private final Configuration configuration;
24 public ConfigurationLoader(Configuration configuration) {
25 this.configuration = configuration;
28 public synchronized Set<String> loadFriends(String localSoneId) {
29 return loadIds("Sone/" + localSoneId + "/Friends");
32 public void saveFriends(String soneId, Collection<String> friends) {
33 saveIds("Sone/" + soneId + "/Friends", friends);
36 public synchronized Set<String> loadKnownPosts() {
37 return loadIds("KnownPosts");
40 public synchronized Set<String> loadKnownPostReplies() {
41 return loadIds("KnownReplies");
44 public synchronized Set<String> loadBookmarkedPosts() {
45 return loadIds("Bookmarks/Post");
48 private Set<String> loadIds(String prefix) {
49 Set<String> ids = new HashSet<String>();
52 String id = configuration
53 .getStringValue(prefix + "/" + idCounter++ + "/ID")
63 public synchronized void saveBookmarkedPosts(
64 Set<String> bookmarkedPosts) {
65 saveIds("Bookmarks/Post", bookmarkedPosts);
68 private void saveIds(String prefix, Collection<String> ids) {
71 for (String id : ids) {
73 .getStringValue(prefix + "/" + idCounter++ + "/ID")
77 .getStringValue(prefix + "/" + idCounter + "/ID")
79 } catch (ConfigurationException ce1) {
80 logger.log(WARNING, "Could not save bookmarked posts!", ce1);