Move reply like functionality from Sone to Reply.
[Sone.git] / src / main / java / net / pterodactylus / sone / data / Reply.java
index c229d04..510b81f 100644 (file)
@@ -18,7 +18,9 @@
 package net.pterodactylus.sone.data;
 
 import java.util.Comparator;
+import java.util.Set;
 
+import com.google.common.base.Optional;
 import com.google.common.base.Predicate;
 
 /**
@@ -91,13 +93,25 @@ public interface Reply<T extends Reply<T>> extends Identified {
         */
        public boolean isKnown();
 
-       /**
-        * Sets whether this reply is known.
-        *
-        * @param known
-        *            {@code true} if this reply is known, {@code false} otherwise
-        * @return This reply
-        */
-       public T setKnown(boolean known);
+       void like(Sone localSone);
+       void unlike(Sone localSone);
+
+       boolean isLiked(Sone sone);
+       Set<Sone> getLikes();
+
+       Modifier<T> modify();
+
+       interface Modifier<T> {
+
+               Modifier<T> setKnown();
+               T update(Optional<ReplyUpdated<T>> replyUpdated);
+
+               interface ReplyUpdated<T> {
+
+                       void replyUpdated(T reply);
+
+               }
+
+       }
 
 }