+ //
+ // CORELISTENER METHODS
+ //
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void rescuingSone(Sone sone) {
+ rescuingSonesNotification.add(sone);
+ notificationManager.addNotification(rescuingSonesNotification);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void rescuedSone(Sone sone) {
+ rescuingSonesNotification.remove(sone);
+ sonesRescuedNotification.add(sone);
+ notificationManager.addNotification(sonesRescuedNotification);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void newSoneFound(Sone sone) {
+ newSoneNotification.add(sone);
+ if (!hasFirstStartNotification()) {
+ notificationManager.addNotification(newSoneNotification);
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void newPostFound(Post post) {
+ newPostNotification.add(post);
+ if (!hasFirstStartNotification()) {
+ notificationManager.addNotification(newPostNotification);
+ } else {
+ getCore().markPostKnown(post);
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void newReplyFound(Reply reply) {
+ if (reply.getPost().getSone() == null) {
+ return;
+ }
+ newReplyNotification.add(reply);
+ if (!hasFirstStartNotification()) {
+ notificationManager.addNotification(newReplyNotification);
+ } else {
+ getCore().markReplyKnown(reply);
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void markSoneKnown(Sone sone) {
+ newSoneNotification.remove(sone);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void markPostKnown(Post post) {
+ newPostNotification.remove(post);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void markReplyKnown(Reply reply) {
+ newReplyNotification.remove(reply);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void postRemoved(Post post) {
+ newPostNotification.remove(post);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void replyRemoved(Reply reply) {
+ newReplyNotification.remove(reply);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void soneLocked(final Sone sone) {
+ Object tickerObject = Ticker.getInstance().registerEvent(System.currentTimeMillis() + (5 * 60) * 1000, new Runnable() {
+
+ @Override
+ @SuppressWarnings("synthetic-access")
+ public void run() {
+ lockedSonesNotification.add(sone);
+ lockedSonesTickerObjects.remove(sone);
+ notificationManager.addNotification(lockedSonesNotification);
+ }
+ }, "Sone Locked Notification");
+ lockedSonesTickerObjects.put(sone, tickerObject);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void soneUnlocked(Sone sone) {
+ lockedSonesNotification.remove(sone);
+ Ticker.getInstance().deregisterEvent(lockedSonesTickerObjects.remove(sone));
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void updateFound(Version version, long releaseTime) {
+ newVersionNotification.set("version", version);
+ newVersionNotification.set("releaseTime", releaseTime);
+ notificationManager.addNotification(newVersionNotification);
+ }
+