X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FCore.java;h=3f2111a6e32dc49b5c142505e7863f7cfdb9e632;hb=9dafc7dd9ac7da59e0b27581ea360f69e6097531;hp=5563bf6e8c2f614a055b46942b9e564669b9e838;hpb=b9380f348777ac62b12a0b0bf2990f2271f642d8;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/core/Core.java b/src/main/java/net/pterodactylus/sone/core/Core.java index 5563bf6..3f2111a 100644 --- a/src/main/java/net/pterodactylus/sone/core/Core.java +++ b/src/main/java/net/pterodactylus/sone/core/Core.java @@ -1135,9 +1135,10 @@ public class Core implements IdentityListener { * The Sone that creates the post * @param text * The text of the post + * @return The created post */ - public void createPost(Sone sone, String text) { - createPost(sone, System.currentTimeMillis(), text); + public Post createPost(Sone sone, String text) { + return createPost(sone, System.currentTimeMillis(), text); } /** @@ -1149,11 +1150,12 @@ public class Core implements IdentityListener { * The time of the post * @param text * The text of the post + * @return The created post */ - public void createPost(Sone sone, long time, String text) { + public Post createPost(Sone sone, long time, String text) { if (!isLocalSone(sone)) { logger.log(Level.FINE, "Tried to create post for non-local Sone: %s", sone); - return; + return null; } Post post = new Post(sone, time, text); synchronized (posts) { @@ -1164,6 +1166,7 @@ public class Core implements IdentityListener { } sone.addPost(post); saveSone(sone); + return post; } /** @@ -1200,6 +1203,22 @@ public class Core implements IdentityListener { } /** + * Marks the given post as known, if it is currently a new post (according + * to {@link #isNewPost(String)}). + * + * @param post + * The post to mark as known + */ + public void markPostKnown(Post post) { + synchronized (newPosts) { + if (newPosts.remove(post.getId())) { + knownPosts.add(post.getId()); + coreListenerManager.fireMarkPostKnown(post); + } + } + } + + /** * Creates a new reply. * * @param sone @@ -1249,6 +1268,22 @@ public class Core implements IdentityListener { } /** + * Marks the given reply as known, if it is currently a new reply (according + * to {@link #isNewReply(String)}). + * + * @param reply + * The reply to mark as known + */ + public void markReplyKnown(Reply reply) { + synchronized (newReplies) { + if (newReplies.remove(reply.getId())) { + knownReplies.add(reply.getId()); + coreListenerManager.fireMarkReplyKnown(reply); + } + } + } + + /** * Starts the core. */ public void start() { @@ -1268,6 +1303,52 @@ public class Core implements IdentityListener { stopped = true; } + /** + * Saves the current options. + */ + public void saveConfiguration() { + /* store the options first. */ + try { + configuration.getIntValue("Option/InsertionDelay").setValue(options.getIntegerOption("InsertionDelay").getReal()); + configuration.getBooleanValue("Option/SoneRescueMode").setValue(options.getBooleanOption("SoneRescueMode").getReal()); + configuration.getBooleanValue("Option/ClearOnNextRestart").setValue(options.getBooleanOption("ClearOnNextRestart").getReal()); + configuration.getBooleanValue("Option/ReallyClearOnNextRestart").setValue(options.getBooleanOption("ReallyClearOnNextRestart").getReal()); + + /* save known Sones. */ + int soneCounter = 0; + synchronized (newSones) { + for (String knownSoneId : knownSones) { + configuration.getStringValue("KnownSone/" + soneCounter++ + "/ID").setValue(knownSoneId); + } + configuration.getStringValue("KnownSone/" + soneCounter + "/ID").setValue(null); + } + + /* save known posts. */ + int postCounter = 0; + synchronized (newPosts) { + for (String knownPostId : knownPosts) { + configuration.getStringValue("KnownPosts/" + postCounter++ + "/ID").setValue(knownPostId); + } + configuration.getStringValue("KnownPosts/" + postCounter + "/ID").setValue(null); + } + + /* save known replies. */ + int replyCounter = 0; + synchronized (newReplies) { + for (String knownReplyId : knownReplies) { + configuration.getStringValue("KnownReplies/" + replyCounter++ + "/ID").setValue(knownReplyId); + } + configuration.getStringValue("KnownReplies/" + replyCounter + "/ID").setValue(null); + } + + /* now save it. */ + configuration.save(); + + } catch (ConfigurationException ce1) { + logger.log(Level.SEVERE, "Could not store configuration!", ce1); + } + } + // // PRIVATE METHODS // @@ -1343,49 +1424,6 @@ public class Core implements IdentityListener { } /** - * Saves the current options. - */ - private void saveConfiguration() { - /* store the options first. */ - try { - configuration.getIntValue("Option/InsertionDelay").setValue(options.getIntegerOption("InsertionDelay").getReal()); - configuration.getBooleanValue("Option/SoneRescueMode").setValue(options.getBooleanOption("SoneRescueMode").getReal()); - configuration.getBooleanValue("Option/ClearOnNextRestart").setValue(options.getBooleanOption("ClearOnNextRestart").getReal()); - configuration.getBooleanValue("Option/ReallyClearOnNextRestart").setValue(options.getBooleanOption("ReallyClearOnNextRestart").getReal()); - - /* save known Sones. */ - int soneCounter = 0; - synchronized (newSones) { - for (String knownSoneId : knownSones) { - configuration.getStringValue("KnownSone/" + soneCounter++ + "/ID").setValue(knownSoneId); - } - configuration.getStringValue("KnownSone/" + soneCounter + "/ID").setValue(null); - } - - /* save known posts. */ - int postCounter = 0; - synchronized (newPosts) { - for (String knownPostId : knownPosts) { - configuration.getStringValue("KnownPosts/" + postCounter++ + "/ID").setValue(knownPostId); - } - configuration.getStringValue("KnownPosts/" + postCounter + "/ID").setValue(null); - } - - /* save known replies. */ - int replyCounter = 0; - synchronized (newReplies) { - for (String knownReplyId : knownReplies) { - configuration.getStringValue("KnownReplies/" + replyCounter++ + "/ID").setValue(knownReplyId); - } - configuration.getStringValue("KnownReplies/" + replyCounter + "/ID").setValue(null); - } - - } catch (ConfigurationException ce1) { - logger.log(Level.SEVERE, "Could not store configuration!", ce1); - } - } - - /** * Generate a Sone URI from the given URI and latest edition. * * @param uriString