+ * Loads the known posts.
+ */
+ private void loadKnownPosts() {
+ lock.writeLock().lock();
+ try {
+ int postCounter = 0;
+ while (true) {
+ String knownPostId = configuration.getStringValue("KnownPosts/" + postCounter++ + "/ID").getValue(null);
+ if (knownPostId == null) {
+ break;
+ }
+ knownPosts.add(knownPostId);
+ }
+ } finally {
+ lock.writeLock().unlock();
+ }
+ }
+
+ /**
+ * Saves the known posts to the configuration.
+ *
+ * @throws DatabaseException
+ * if a configuration error occurs
+ */
+ private void saveKnownPosts() throws DatabaseException {
+ lock.readLock().lock();
+ try {
+ int postCounter = 0;
+ for (String knownPostId : knownPosts) {
+ configuration.getStringValue("KnownPosts/" + postCounter++ + "/ID").setValue(knownPostId);
+ }
+ configuration.getStringValue("KnownPosts/" + postCounter + "/ID").setValue(null);
+ } catch (ConfigurationException ce1) {
+ throw new DatabaseException("Could not save database.", ce1);
+ } finally {
+ lock.readLock().unlock();
+ }
+ }
+
+ /**
+ * Loads the known post replies.
+ */
+ private void loadKnownPostReplies() {
+ lock.writeLock().lock();
+ try {
+ int replyCounter = 0;
+ while (true) {
+ String knownReplyId = configuration.getStringValue("KnownReplies/" + replyCounter++ + "/ID").getValue(null);
+ if (knownReplyId == null) {
+ break;
+ }
+ knownPostReplies.add(knownReplyId);
+ }
+ } finally {
+ lock.writeLock().unlock();
+ }
+ }
+
+ /**
+ * Saves the known post replies to the configuration.
+ *
+ * @throws DatabaseException
+ * if a configuration error occurs
+ */
+ private void saveKnownPostReplies() throws DatabaseException {
+ lock.readLock().lock();
+ try {
+ int replyCounter = 0;
+ for (String knownReplyId : knownPostReplies) {
+ configuration.getStringValue("KnownReplies/" + replyCounter++ + "/ID").setValue(knownReplyId);
+ }
+ configuration.getStringValue("KnownReplies/" + replyCounter + "/ID").setValue(null);
+ } catch (ConfigurationException ce1) {
+ throw new DatabaseException("Could not save database.", ce1);
+ } finally {
+ lock.readLock().unlock();
+ }
+ }
+
+ /**