X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;ds=inline;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdata%2FSone.java;h=2dd4bc14c8b3b70ca3f027c72323db8402fef00b;hb=be545f41a8fcaf98c63920fd38770ded27e875b3;hp=03dff753563a50a7932047239fb48be29b2da90b;hpb=d53a79eeb9531a08173431ce2ba19156eeca4a0c;p=Sone.git
diff --git a/src/main/java/net/pterodactylus/sone/data/Sone.java b/src/main/java/net/pterodactylus/sone/data/Sone.java
index 03dff75..2dd4bc1 100644
--- a/src/main/java/net/pterodactylus/sone/data/Sone.java
+++ b/src/main/java/net/pterodactylus/sone/data/Sone.java
@@ -27,8 +27,10 @@ import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
+import net.pterodactylus.sone.core.Options;
import net.pterodactylus.sone.freenet.wot.Identity;
import net.pterodactylus.sone.template.SoneAccessor;
+import net.pterodactylus.util.filter.Filter;
import net.pterodactylus.util.logging.Logging;
import freenet.keys.FreenetURI;
@@ -40,7 +42,7 @@ import freenet.keys.FreenetURI;
*
* @author David âBombeâ Roden
*/
-public class Sone implements Fingerprintable {
+public class Sone implements Fingerprintable, Comparable {
/** comparator that sorts Sones by their nice name. */
public static final Comparator NICE_NAME_COMPARATOR = new Comparator() {
@@ -56,6 +58,15 @@ public class Sone implements Fingerprintable {
};
+ /** Filter to remove Sones that have not been downloaded. */
+ public static final Filter EMPTY_SONE_FILTER = new Filter() {
+
+ @Override
+ public boolean filterObject(Sone sone) {
+ return sone.getTime() != 0;
+ }
+ };
+
/** The logger. */
private static final Logger logger = Logging.getLogger(Sone.class);
@@ -99,6 +110,9 @@ public class Sone implements Fingerprintable {
/** The IDs of all liked replies. */
private final Set likedReplyIds = Collections.synchronizedSet(new HashSet());
+ /** Sone-specific options. */
+ private final Options options = new Options();
+
/**
* Creates a new Sone.
*
@@ -176,7 +190,7 @@ public class Sone implements Fingerprintable {
*/
public Sone setRequestUri(FreenetURI requestUri) {
if (this.requestUri == null) {
- this.requestUri = requestUri.setDocName("Sone").setMetaString(new String[0]);
+ this.requestUri = requestUri.setKeyType("USK").setDocName("Sone").setMetaString(new String[0]);
return this;
}
if (!this.requestUri.equalsKeypair(requestUri)) {
@@ -204,7 +218,7 @@ public class Sone implements Fingerprintable {
*/
public Sone setInsertUri(FreenetURI insertUri) {
if (this.insertUri == null) {
- this.insertUri = insertUri.setDocName("Sone").setMetaString(new String[0]);
+ this.insertUri = insertUri.setKeyType("USK").setDocName("Sone").setMetaString(new String[0]);
return this;
}
if (!this.insertUri.equalsKeypair(insertUri)) {
@@ -387,8 +401,10 @@ public class Sone implements Fingerprintable {
* @return This Sone (for method chaining)
*/
public synchronized Sone setPosts(Collection posts) {
- this.posts.clear();
- this.posts.addAll(posts);
+ synchronized (this) {
+ this.posts.clear();
+ this.posts.addAll(posts);
+ }
return this;
}
@@ -580,6 +596,15 @@ public class Sone implements Fingerprintable {
return this;
}
+ /**
+ * Returns Sone-specific options.
+ *
+ * @return The options of this Sone
+ */
+ public Options getOptions() {
+ return options;
+ }
+
//
// FINGERPRINTABLE METHODS
//
@@ -626,6 +651,18 @@ public class Sone implements Fingerprintable {
}
//
+ // INTERFACE Comparable
+ //
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public int compareTo(Sone sone) {
+ return NICE_NAME_COMPARATOR.compare(this, sone);
+ }
+
+ //
// OBJECT METHODS
//