import net.pterodactylus.sone.core.Options.DefaultOption;
import net.pterodactylus.sone.core.Options.Option;
import net.pterodactylus.sone.core.Options.OptionWatcher;
import net.pterodactylus.sone.core.Options.DefaultOption;
import net.pterodactylus.sone.core.Options.Option;
import net.pterodactylus.sone.core.Options.OptionWatcher;
import net.pterodactylus.sone.core.event.MarkPostKnownEvent;
import net.pterodactylus.sone.core.event.MarkPostReplyKnownEvent;
import net.pterodactylus.sone.core.event.MarkSoneKnownEvent;
import net.pterodactylus.sone.core.event.NewPostFoundEvent;
import net.pterodactylus.sone.core.event.NewPostReplyFoundEvent;
import net.pterodactylus.sone.core.event.NewSoneFoundEvent;
import net.pterodactylus.sone.core.event.MarkPostKnownEvent;
import net.pterodactylus.sone.core.event.MarkPostReplyKnownEvent;
import net.pterodactylus.sone.core.event.MarkSoneKnownEvent;
import net.pterodactylus.sone.core.event.NewPostFoundEvent;
import net.pterodactylus.sone.core.event.NewPostReplyFoundEvent;
import net.pterodactylus.sone.core.event.NewSoneFoundEvent;
+import net.pterodactylus.sone.core.event.PostRemovedEvent;
+import net.pterodactylus.sone.core.event.PostReplyRemovedEvent;
+import net.pterodactylus.sone.core.event.SoneInsertAbortedEvent;
+import net.pterodactylus.sone.core.event.SoneInsertedEvent;
+import net.pterodactylus.sone.core.event.SoneInsertingEvent;
+import net.pterodactylus.sone.core.event.SoneLockedEvent;
import net.pterodactylus.sone.data.Album;
import net.pterodactylus.sone.data.Client;
import net.pterodactylus.sone.data.Image;
import net.pterodactylus.sone.data.Album;
import net.pterodactylus.sone.data.Client;
import net.pterodactylus.sone.data.Image;
public void lockSone(Sone sone) {
synchronized (lockedSones) {
if (lockedSones.add(sone)) {
public void lockSone(Sone sone) {
synchronized (lockedSones) {
if (lockedSones.add(sone)) {
public void unlockSone(Sone sone) {
synchronized (lockedSones) {
if (lockedSones.remove(sone)) {
public void unlockSone(Sone sone) {
synchronized (lockedSones) {
if (lockedSones.remove(sone)) {
for (Post post : storedSone.getPosts()) {
posts.remove(post.getId());
if (!sone.getPosts().contains(post)) {
for (Post post : storedSone.getPosts()) {
posts.remove(post.getId());
if (!sone.getPosts().contains(post)) {
for (PostReply reply : storedSone.getReplies()) {
replies.remove(reply.getId());
if (!sone.getReplies().contains(reply)) {
for (PostReply reply : storedSone.getReplies()) {
replies.remove(reply.getId());
if (!sone.getReplies().contains(reply)) {
synchronized (knownPosts) {
for (Post post : sone.getPosts()) {
posts.remove(post.getId());
synchronized (knownPosts) {
for (Post post : sone.getPosts()) {
posts.remove(post.getId());
synchronized (knownReplies) {
for (PostReply reply : sone.getReplies()) {
replies.remove(reply.getId());
synchronized (knownReplies) {
for (PostReply reply : sone.getReplies()) {
replies.remove(reply.getId());
@Override
public void imageInsertStarted(Image image) {
logger.log(Level.WARNING, String.format("Image insert started for %s...", image));
@Override
public void imageInsertStarted(Image image) {
logger.log(Level.WARNING, String.format("Image insert started for %s...", image));
@Override
public void imageInsertAborted(Image image) {
logger.log(Level.WARNING, String.format("Image insert aborted for %s.", image));
@Override
public void imageInsertAborted(Image image) {
logger.log(Level.WARNING, String.format("Image insert aborted for %s.", image));