package net.pterodactylus.sone.data;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
+import java.util.List;
import java.util.Set;
import java.util.UUID;
/** All friend Sones. */
private final Set<Sone> friendSones = new HashSet<Sone>();
+ /** All posts. */
+ private final List<Post> posts = new ArrayList<Post>();
+
/** Modification count. */
private volatile long modificationCounter = 0;
}
/**
- * Sets the profile of this Sone.
+ * Sets the profile of this Sone. A copy of the given profile is stored so
+ * that subsequent modifications of the given profile are not reflected in
+ * this Sone!
*
* @param profile
* The profile to set
*/
public synchronized void setProfile(Profile profile) {
- this.profile = profile;
+ this.profile = new Profile(profile);
modificationCounter++;
}
}
/**
+ * Returns the list of posts of this Sone.
+ *
+ * @return All posts of this Sone
+ */
+ public List<Post> getPosts() {
+ return Collections.unmodifiableList(posts);
+ }
+
+ /**
+ * Adds a post with the given text to this Sone.
+ *
+ * @param text
+ * The text to post
+ */
+ public synchronized void addPost(String text) {
+ Post post = new Post(this, System.currentTimeMillis(), text);
+ if (posts.add(post)) {
+ modificationCounter++;
+ }
+ }
+
+ /**
+ * Removes the given post from this Sone.
+ *
+ * @param post
+ * The post to remove
+ */
+ public synchronized void removePost(Post post) {
+ if (posts.remove(post)) {
+ modificationCounter++;
+ }
+ }
+
+ /**
* Returns the modification counter.
*
* @return The modification counter