X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdatabase%2Fmemory%2FConfigurationLoader.java;h=1691ddb7ffa09bba3dcfaee188ef4b5f74e80781;hp=24505acf1f7319de93e5573ff6ada3ccf9187f14;hb=2524f4d47c56874a263f9e53ec5c4035f2baa7e0;hpb=36b8e20651c14970ca30a1b8ed43af219b367bc9 diff --git a/src/main/java/net/pterodactylus/sone/database/memory/ConfigurationLoader.java b/src/main/java/net/pterodactylus/sone/database/memory/ConfigurationLoader.java index 24505ac..1691ddb 100644 --- a/src/main/java/net/pterodactylus/sone/database/memory/ConfigurationLoader.java +++ b/src/main/java/net/pterodactylus/sone/database/memory/ConfigurationLoader.java @@ -1,9 +1,14 @@ 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; import net.pterodactylus.util.config.Configuration; +import net.pterodactylus.util.config.ConfigurationException; /** * Helper class for interacting with a {@link Configuration}. @@ -12,55 +17,68 @@ import net.pterodactylus.util.config.Configuration; */ public class ConfigurationLoader { + private static final Logger logger = + Logger.getLogger("Sone.Database.Memory.Configuration"); private final Configuration configuration; public ConfigurationLoader(Configuration configuration) { this.configuration = configuration; } + public synchronized Set loadFriends(String localSoneId) { + return loadIds("Sone/" + localSoneId + "/Friends"); + } + + public void saveFriends(String soneId, Collection friends) { + saveIds("Sone/" + soneId + "/Friends", friends); + } + public synchronized Set loadKnownPosts() { - Set knownPosts = new HashSet(); - int postCounter = 0; - while (true) { - String knownPostId = configuration - .getStringValue("KnownPosts/" + postCounter++ + "/ID") - .getValue(null); - if (knownPostId == null) { - break; - } - knownPosts.add(knownPostId); - } - return knownPosts; + return loadIds("KnownPosts"); } public synchronized Set loadKnownPostReplies() { - Set knownPostReplies = new HashSet(); - int replyCounter = 0; + return loadIds("KnownReplies"); + } + + public synchronized Set loadBookmarkedPosts() { + return loadIds("Bookmarks/Post"); + } + + private Set loadIds(String prefix) { + Set ids = new HashSet(); + int idCounter = 0; while (true) { - String knownReplyId = configuration - .getStringValue("KnownReplies/" + replyCounter++ + "/ID") + String id = configuration + .getStringValue(prefix + "/" + idCounter++ + "/ID") .getValue(null); - if (knownReplyId == null) { + if (id == null) { break; } - knownPostReplies.add(knownReplyId); + ids.add(id); } - return knownPostReplies; + return ids; } - public synchronized Set loadBookmarkedPosts() { - Set bookmarkedPosts = new HashSet(); - int postCounter = 0; - while (true) { - String bookmarkedPostId = configuration - .getStringValue("Bookmarks/Post/" + postCounter++ + "/ID") - .getValue(null); - if (bookmarkedPostId == null) { - break; + public synchronized void saveBookmarkedPosts( + Set bookmarkedPosts) { + saveIds("Bookmarks/Post", bookmarkedPosts); + } + + private void saveIds(String prefix, Collection ids) { + try { + int idCounter = 0; + for (String id : ids) { + configuration + .getStringValue(prefix + "/" + idCounter++ + "/ID") + .setValue(id); } - bookmarkedPosts.add(bookmarkedPostId); + configuration + .getStringValue(prefix + "/" + idCounter + "/ID") + .setValue(null); + } catch (ConfigurationException ce1) { + logger.log(WARNING, "Could not save bookmarked posts!", ce1); } - return bookmarkedPosts; } }