X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdata%2Fimpl%2FReplyImpl.java;h=3d6d6fb63dcda0fff3e8544c015e8dfdec6c7a92;hp=0c052cae45191edf0c99729e418a3e958d6db493;hb=62573c314957b1851f4fbe693b8746686caa940a;hpb=99888ce13cc17d49f5e217ab6f2c9ad5ef168792 diff --git a/src/main/java/net/pterodactylus/sone/data/impl/ReplyImpl.java b/src/main/java/net/pterodactylus/sone/data/impl/ReplyImpl.java index 0c052ca..3d6d6fb 100644 --- a/src/main/java/net/pterodactylus/sone/data/impl/ReplyImpl.java +++ b/src/main/java/net/pterodactylus/sone/data/impl/ReplyImpl.java @@ -1,5 +1,5 @@ /* - * Sone - ReplyImpl.java - Copyright © 2011–2013 David Roden + * Sone - ReplyImpl.java - Copyright © 2011–2016 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,74 +17,54 @@ package net.pterodactylus.sone.data.impl; -import java.util.UUID; - import net.pterodactylus.sone.data.Reply; import net.pterodactylus.sone.data.Sone; +import net.pterodactylus.sone.database.SoneProvider; /** * Abstract base class for all replies. * * @param * The type of the reply - * @author David ‘Bombe’ Roden */ public abstract class ReplyImpl> implements Reply { + /** The Sone provider. */ + private final SoneProvider soneProvider; + /** The ID of the reply. */ private final String id; /** The Sone that created this reply. */ - private volatile Sone sone; + private final String soneId; /** The time of the reply. */ - private volatile long time; + private final long time; /** The text of the reply. */ - private volatile String text; + private final String text; /** Whether the reply is known. */ private volatile boolean known; /** - * Creates a new reply with the given ID. - * - * @param id - * The ID of the reply - */ - protected ReplyImpl(String id) { - this(id, null, 0, null); - } - - /** - * Creates a new reply with a new random ID. - * - * @param sone - * The Sone of the reply - * @param time - * The time of the reply - * @param text - * The text of the reply - */ - protected ReplyImpl(Sone sone, long time, String text) { - this(UUID.randomUUID().toString(), sone, time, text); - } - - /** * Creates a new reply. * + * @param soneProvider + * The Sone provider * @param id * The ID of the reply - * @param sone - * The Sone of the reply + * @param soneId + * The ID of the Sone of the reply * @param time * The time of the reply * @param text * The text of the reply */ - protected ReplyImpl(String id, Sone sone, long time, String text) { + protected ReplyImpl(SoneProvider soneProvider, String id, String soneId, long time, String text) { + this.soneProvider = soneProvider; this.id = id; - this.sone = sone; + this.soneId = soneId; this.time = time; this.text = text; } @@ -102,21 +82,7 @@ public abstract class ReplyImpl> implements Reply { */ @Override public Sone getSone() { - return sone; - } - - /** - * Sets the Sone that posted this reply. - * - * @param sone - * The Sone that posted this reply - * @return This reply (for method chaining) - */ - @Override - @SuppressWarnings("unchecked") - public T setSone(Sone sone) { - this.sone = sone; - return (T) this; + return soneProvider.getSone(soneId); } /** @@ -128,20 +94,6 @@ public abstract class ReplyImpl> implements Reply { } /** - * Sets the time of this reply. - * - * @param time - * The time of this reply (in milliseconds since Jan 1, 1970 UTC) - * @return This reply (for method chaining) - */ - @Override - @SuppressWarnings("unchecked") - public T setTime(long time) { - this.time = time; - return (T) this; - } - - /** * {@inheritDoc} */ @Override @@ -150,20 +102,6 @@ public abstract class ReplyImpl> implements Reply { } /** - * Sets the text of this reply. - * - * @param text - * The text of this reply - * @return This reply (for method chaining) - */ - @Override - @SuppressWarnings("unchecked") - public T setText(String text) { - this.text = text; - return (T) this; - } - - /** * {@inheritDoc} */ @Override @@ -210,7 +148,7 @@ public abstract class ReplyImpl> implements Reply { */ @Override public String toString() { - return getClass().getName() + "[id=" + id + ",sone=" + sone + ",time=" + time + ",text=" + text + "]"; + return String.format("%s[id=%s,sone=%s,time=%d,text=%s]", getClass().getName(), id, soneId, time, text); } }