X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdata%2Fimpl%2FPostImpl.java;h=d8d5086a27b8e067d4e034e356aab84720243476;hp=2cc0b00583ee3e9da8ad51ca01a7defc6e9f9737;hb=b798049da3b4d4a58d5ff12314bc1022808171bc;hpb=da609f721e54691f27113e877a19637bd332abc3 diff --git a/src/main/java/net/pterodactylus/sone/data/impl/PostImpl.java b/src/main/java/net/pterodactylus/sone/data/impl/PostImpl.java index 2cc0b00..d8d5086 100644 --- a/src/main/java/net/pterodactylus/sone/data/impl/PostImpl.java +++ b/src/main/java/net/pterodactylus/sone/data/impl/PostImpl.java @@ -1,5 +1,5 @@ /* - * Sone - PostImpl.java - Copyright © 2010–2013 David Roden + * Sone - PostImpl.java - Copyright © 2010–2019 David Roden * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,33 +17,37 @@ package net.pterodactylus.sone.data.impl; -import java.util.UUID; +import static com.google.common.base.Optional.fromNullable; import net.pterodactylus.sone.data.Post; import net.pterodactylus.sone.data.Sone; +import net.pterodactylus.sone.database.SoneProvider; + +import com.google.common.base.Optional; /** * A post is a short message that a user writes in his Sone to let other users * know what is going on. - * - * @author David ‘Bombe’ Roden */ public class PostImpl implements Post { + /** The Sone provider. */ + private final SoneProvider soneProvider; + /** The GUID of the post. */ - private final UUID id; + private final String id; - /** The Sone this post belongs to. */ - private volatile Sone sone; + /** The ID of the owning Sone. */ + private final String soneId; - /** The Sone of the recipient. */ - private volatile Sone recipient; + /** The ID of the recipient Sone. */ + private final String recipientId; /** The time of the post (in milliseconds since Jan 1, 1970 UTC). */ - private volatile long time; + private final long time; /** The text of the post. */ - private volatile String text; + private final String text; /** Whether the post is known. */ private volatile boolean known; @@ -51,54 +55,24 @@ public class PostImpl implements Post { /** * Creates a new post. * + * @param soneProvider + * The Sone provider * @param id * The ID of the post - */ - public PostImpl(String id) { - this(id, null, 0, null); - } - - /** - * Creates a new post. - * - * @param sone - * The Sone this post belongs to - * @param text - * The text of the post - */ - public PostImpl(Sone sone, String text) { - this(sone, System.currentTimeMillis(), text); - } - - /** - * Creates a new post. - * - * @param sone - * The Sone this post belongs to - * @param time - * The time of the post (in milliseconds since Jan 1, 1970 UTC) - * @param text - * The text of the post - */ - public PostImpl(Sone sone, long time, String text) { - this(UUID.randomUUID().toString(), sone, time, text); - } - - /** - * Creates a new post. - * - * @param id - * The ID of the post - * @param sone - * The Sone this post belongs to + * @param soneId + * The ID of the Sone this post belongs to + * @param recipientId + * The ID of the recipient of the post * @param time * The time of the post (in milliseconds since Jan 1, 1970 UTC) * @param text * The text of the post */ - public PostImpl(String id, Sone sone, long time, String text) { - this.id = UUID.fromString(id); - this.sone = sone; + public PostImpl(SoneProvider soneProvider, String id, String soneId, String recipientId, long time, String text) { + this.soneProvider = soneProvider; + this.id = id; + this.soneId = soneId; + this.recipientId = recipientId; this.time = time; this.text = text; } @@ -112,7 +86,12 @@ public class PostImpl implements Post { */ @Override public String getId() { - return id.toString(); + return id; + } + + @Override + public boolean isLoaded() { + return true; } /** @@ -120,41 +99,23 @@ public class PostImpl implements Post { */ @Override public Sone getSone() { - return sone; + return soneProvider.getSone(soneId); } /** - * Sets the Sone of this post. - * - * @param sone - * The Sone of this post - * @return This post (for method chaining) + * {@inheritDocs} */ - public PostImpl setSone(Sone sone) { - this.sone = sone; - return this; + @Override + public Optional getRecipientId() { + return fromNullable(recipientId); } /** * {@inheritDoc} */ @Override - public Sone getRecipient() { - return recipient; - } - - /** - * Sets the recipient of this post. - * - * @param recipient - * The recipient of this post, or {@code null} - * @return This post (for method chaining) - */ - public PostImpl setRecipient(Sone recipient) { - if (!sone.equals(recipient)) { - this.recipient = recipient; - } - return this; + public Optional getRecipient() { + return fromNullable(soneProvider.getSone(recipientId)); } /** @@ -166,18 +127,6 @@ public class PostImpl implements Post { } /** - * Sets the time of this post. - * - * @param time - * The time of this post (in milliseconds since Jan 1, 1970 UTC) - * @return This post (for method chaining) - */ - public PostImpl setTime(long time) { - this.time = time; - return this; - } - - /** * {@inheritDoc} */ @Override @@ -186,18 +135,6 @@ public class PostImpl implements Post { } /** - * Sets the text of this post. - * - * @param text - * The text of this post - * @return This post (for method chaining) - */ - public PostImpl setText(String text) { - this.text = text; - return this; - } - - /** * {@inheritDoc} */ @Override @@ -243,7 +180,7 @@ public class PostImpl implements Post { */ @Override public String toString() { - return getClass().getName() + "[id=" + id + ",sone=" + sone + ",time=" + time + ",text=" + text + "]"; + return String.format("%s[id=%s,sone=%s,recipient=%s,time=%d,text=%s]", getClass().getName(), id, soneId, recipientId, time, text); } }