X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdata%2FSone.java;h=aa4a1552292f010919c1f0748321817ab571539e;hb=a23c4f218c3adf236d89d5927cae37d6e6e4feda;hp=4bd60cca22295582e2af550382c73064dabf8fc8;hpb=53ad6c35b87df3cca32d28a4c1a024aab2da5129;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 4bd60cc..aa4a155 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 net.pterodactylus.util.validation.Validation; import freenet.keys.FreenetURI; @@ -57,6 +59,15 @@ public class Sone implements Fingerprintable, Comparable { }; + /** 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); @@ -103,6 +114,9 @@ public class Sone implements Fingerprintable, Comparable { /** The albums of this Sone. */ private final List albums = Collections.synchronizedList(new ArrayList()); + /** Sone-specific options. */ + private final Options options = new Options(); + /** * Creates a new Sone. * @@ -237,7 +251,7 @@ public class Sone implements Fingerprintable, Comparable { */ public void setLatestEdition(long latestEdition) { if (!(latestEdition > this.latestEdition)) { - logger.log(Level.INFO, "New latest edition %d is not greater than current latest edition %d!", new Object[] { latestEdition, this.latestEdition }); + logger.log(Level.FINE, "New latest edition %d is not greater than current latest edition %d!", new Object[] { latestEdition, this.latestEdition }); return; } this.latestEdition = latestEdition; @@ -391,8 +405,10 @@ public class Sone implements Fingerprintable, Comparable { * @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; } @@ -612,7 +628,7 @@ public class Sone implements Fingerprintable, Comparable { */ public synchronized void setAlbums(Collection albums) { Validation.begin().isNotNull("Albums", albums).check(); - albums.clear(); + this.albums.clear(); for (Album album : albums) { addAlbum(album); } @@ -629,6 +645,15 @@ public class Sone implements Fingerprintable, Comparable { albums.remove(album); } + /** + * Returns Sone-specific options. + * + * @return The options of this Sone + */ + public Options getOptions() { + return options; + } + // // FINGERPRINTABLE METHODS //