Move post liking from Sone to Post.
[Sone.git] / src / main / java / net / pterodactylus / sone / data / impl / DefaultPost.java
index c4dcb62..2fe4308 100644 (file)
 
 package net.pterodactylus.sone.data.impl;
 
-import java.util.UUID;
+import static com.google.common.collect.FluentIterable.from;
+
+import java.util.List;
 
 import net.pterodactylus.sone.data.Post;
+import net.pterodactylus.sone.data.PostReply;
+import net.pterodactylus.sone.data.Reply;
 import net.pterodactylus.sone.data.Sone;
 import net.pterodactylus.sone.database.Database;
 
@@ -35,8 +39,8 @@ public class DefaultPost implements Post {
 
        private final Database database;
 
-       /** The GUID of the post. */
-       private final UUID id;
+       /** The ID of the post. */
+       private final String id;
 
        /** The ID of the owning Sone. */
        private final String soneId;
@@ -71,7 +75,7 @@ public class DefaultPost implements Post {
         */
        public DefaultPost(Database database, String id, String soneId, String recipientId, long time, String text) {
                this.database = database;
-               this.id = UUID.fromString(id);
+               this.id = id;
                this.soneId = soneId;
                this.recipientId = recipientId;
                this.time = time;
@@ -82,86 +86,66 @@ public class DefaultPost implements Post {
        // ACCESSORS
        //
 
-       /**
-        * {@inheritDoc}
-        */
        @Override
        public String getId() {
-               return id.toString();
+               return id;
        }
 
-       /**
-        * {@inheritDoc}
-        */
        @Override
        public Sone getSone() {
                return database.getSone(soneId).get();
        }
 
-       /**
-        * {@inheritDocs}
-        */
        @Override
        public Optional<String> getRecipientId() {
                return Optional.fromNullable(recipientId);
        }
 
-       /**
-        * {@inheritDoc}
-        */
        @Override
        public Optional<Sone> getRecipient() {
                return database.getSone(recipientId);
        }
 
-       /**
-        * {@inheritDoc}
-        */
        @Override
        public long getTime() {
                return time;
        }
 
-       /**
-        * {@inheritDoc}
-        */
        @Override
        public String getText() {
                return text;
        }
 
-       /**
-        * {@inheritDoc}
-        */
        @Override
        public boolean isKnown() {
                return known;
        }
 
-       /**
-        * {@inheritDoc}
-        */
        @Override
        public DefaultPost setKnown(boolean known) {
                this.known = known;
                return this;
        }
 
+       @Override
+       public void like(Sone localSone) {
+               database.likePost(this, localSone);
+       }
+
+       @Override
+       public List<PostReply> getReplies() {
+               return from(database.getReplies(getId())).toSortedList(Reply.TIME_COMPARATOR);
+       }
+
        //
        // OBJECT METHODS
        //
 
-       /**
-        * {@inheritDoc}
-        */
        @Override
        public int hashCode() {
                return id.hashCode();
        }
 
-       /**
-        * {@inheritDoc}
-        */
        @Override
        public boolean equals(Object object) {
                if (!(object instanceof DefaultPost)) {
@@ -171,9 +155,6 @@ public class DefaultPost implements Post {
                return post.id.equals(id);
        }
 
-       /**
-        * {@inheritDoc}
-        */
        @Override
        public String toString() {
                return String.format("%s[id=%s,sone=%s,recipient=%s,time=%d,text=%s]", getClass().getName(), id, soneId, recipientId, time, text);