*/
public void lockSone(Sone sone) {
synchronized (lockedSones) {
- lockedSones.add(sone);
+ if (lockedSones.add(sone)) {
+ coreListenerManager.fireSoneLocked(sone);
+ }
}
}
*/
public void unlockSone(Sone sone) {
synchronized (lockedSones) {
- lockedSones.remove(sone);
+ if (lockedSones.remove(sone)) {
+ coreListenerManager.fireSoneUnlocked(sone);
+ }
}
}
if (!soneRescueMode) {
for (Post post : storedSone.getPosts()) {
posts.remove(post.getId());
+ if (!sone.getPosts().contains(post)) {
+ coreListenerManager.firePostRemoved(post);
+ }
}
}
synchronized (newPosts) {
if (!soneRescueMode) {
for (Reply reply : storedSone.getReplies()) {
replies.remove(reply.getId());
+ if (!sone.getReplies().contains(reply)) {
+ coreListenerManager.fireReplyRemoved(reply);
+ }
}
}
synchronized (newReplies) {
* @param sone
* The Sone to save
*/
- public void saveSone(Sone sone) {
+ public synchronized void saveSone(Sone sone) {
if (!isLocalSone(sone)) {
logger.log(Level.FINE, "Tried to save non-local Sone: %s", sone);
return;
}
configuration.getStringValue(sonePrefix + "/Friends/" + friendCounter + "/ID").setValue(null);
+ configuration.save();
logger.log(Level.INFO, "Sone %s saved.", sone);
} catch (ConfigurationException ce1) {
logger.log(Level.WARNING, "Could not save Sone: " + sone, ce1);
/**
* Saves the current options.
*/
- public void saveConfiguration() {
+ public synchronized void saveConfiguration() {
/* store the options first. */
try {
configuration.getIntValue("Option/InsertionDelay").setValue(options.getIntegerOption("InsertionDelay").getReal());