Change logger names.
[Sone.git] / src / main / java / net / pterodactylus / sone / database / memory / ConfigurationLoader.java
1 package net.pterodactylus.sone.database.memory;
2
3 import static java.util.logging.Level.WARNING;
4
5 import java.util.HashSet;
6 import java.util.Set;
7 import java.util.logging.Logger;
8
9 import net.pterodactylus.util.config.Configuration;
10 import net.pterodactylus.util.config.ConfigurationException;
11
12 /**
13  * Helper class for interacting with a {@link Configuration}.
14  *
15  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
16  */
17 public class ConfigurationLoader {
18
19         private static final Logger logger =
20                         Logger.getLogger("Sone.Database.Memory.Configuration");
21         private final Configuration configuration;
22
23         public ConfigurationLoader(Configuration configuration) {
24                 this.configuration = configuration;
25         }
26
27         public synchronized Set<String> loadKnownPosts() {
28                 return loadIds("KnownPosts");
29         }
30
31         public synchronized Set<String> loadKnownPostReplies() {
32                 return loadIds("KnownReplies");
33         }
34
35         public synchronized Set<String> loadBookmarkedPosts() {
36                 return loadIds("Bookmarks/Post");
37         }
38
39         private Set<String> loadIds(String prefix) {
40                 Set<String> ids = new HashSet<String>();
41                 int idCounter = 0;
42                 while (true) {
43                         String id = configuration
44                                         .getStringValue(prefix + "/" + idCounter++ + "/ID")
45                                         .getValue(null);
46                         if (id == null) {
47                                 break;
48                         }
49                         ids.add(id);
50                 }
51                 return ids;
52         }
53
54         public synchronized void saveBookmarkedPosts(
55                         Set<String> bookmarkedPosts) {
56                 saveIds("Bookmarks/Post", bookmarkedPosts);
57         }
58
59         private void saveIds(String prefix, Set<String> bookmarkedPosts) {
60                 try {
61                         int idCounter = 0;
62                         for (String id : bookmarkedPosts) {
63                                 configuration
64                                                 .getStringValue(prefix + "/" + idCounter++ + "/ID")
65                                                 .setValue(id);
66                         }
67                         configuration
68                                         .getStringValue(prefix + "/" + idCounter + "/ID")
69                                         .setValue(null);
70                 } catch (ConfigurationException ce1) {
71                         logger.log(WARNING, "Could not save bookmarked posts!", ce1);
72                 }
73         }
74
75 }