X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FCore.java;h=c41d04b06537fbcab5d245d4dbe3a39a6a2d003f;hb=a78eb39c508342d22fa063dad9dc2dab1d24bc0a;hp=33c4dbb360b7a81a713e55a3e9a08b7d195b944c;hpb=5d48c956d2bb5a3c23dcc1428a1fabf32713ebdc;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 33c4dbb..c41d04b 100644 --- a/src/main/java/net/pterodactylus/sone/core/Core.java +++ b/src/main/java/net/pterodactylus/sone/core/Core.java @@ -84,7 +84,7 @@ public class Core implements IdentityListener { private final CoreListenerManager coreListenerManager = new CoreListenerManager(this); /** The configuration. */ - private final Configuration configuration; + private Configuration configuration; /** The identity manager. */ private final IdentityManager identityManager; @@ -190,6 +190,18 @@ public class Core implements IdentityListener { // /** + * Sets the configuration to use. This will automatically save the current + * configuration to the given configuration. + * + * @param configuration + * The new configuration to use + */ + public void setConfiguration(Configuration configuration) { + this.configuration = configuration; + saveConfiguration(); + } + + /** * Returns the options used by the core. * * @return The options of the core @@ -851,7 +863,9 @@ public class Core implements IdentityListener { } } synchronized (storedSone) { - storedSone.setTime(sone.getTime()); + if (!soneRescueMode || (sone.getTime() > storedSone.getTime())) { + storedSone.setTime(sone.getTime()); + } storedSone.setClient(sone.getClient()); storedSone.setProfile(sone.getProfile()); if (soneRescueMode) { @@ -873,7 +887,7 @@ public class Core implements IdentityListener { storedSone.setLikePostIds(sone.getLikedPostIds()); storedSone.setLikeReplyIds(sone.getLikedReplyIds()); } - storedSone.setLatestEdition(sone.getRequestUri().getEdition()); + storedSone.setLatestEdition(sone.getLatestEdition()); } } } @@ -1254,6 +1268,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 // @@ -1329,49 +1389,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