X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdata%2FSone.java;h=083b3a5d77a7d2cb594811cc63a4bf6f730e5279;hb=9f9834453e9555175e4771932d9521209bd7188c;hp=41fdcc13a2f795ee654665d3f1fda1155d31490c;hpb=027615fa64c78ef5ebc198e852cfd6d39b18aad0;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 41fdcc1..083b3a5 100644 --- a/src/main/java/net/pterodactylus/sone/data/Sone.java +++ b/src/main/java/net/pterodactylus/sone/data/Sone.java @@ -19,6 +19,7 @@ package net.pterodactylus.sone.data; import static com.google.common.collect.FluentIterable.from; import static java.util.Arrays.asList; +import static net.pterodactylus.sone.core.SoneUri.create; import static net.pterodactylus.sone.data.Album.FLATTENER; import static net.pterodactylus.sone.data.Album.IMAGES; @@ -28,17 +29,17 @@ import java.util.List; import java.util.Set; import net.pterodactylus.sone.core.Options; -import net.pterodactylus.sone.database.AlbumBuilderFactory; +import net.pterodactylus.sone.database.AlbumBuilder; import net.pterodactylus.sone.database.PostBuilder; -import net.pterodactylus.sone.database.PostBuilderFactory; +import net.pterodactylus.sone.database.PostReplyBuilder; import net.pterodactylus.sone.freenet.wot.Identity; import net.pterodactylus.sone.freenet.wot.OwnIdentity; import net.pterodactylus.sone.template.SoneAccessor; -import freenet.keys.FreenetURI; - +import com.google.common.base.Function; import com.google.common.base.Predicate; import com.google.common.primitives.Ints; +import freenet.keys.FreenetURI; /** * A Sone defines everything about a user: her profile, her status updates, her @@ -46,7 +47,7 @@ import com.google.common.primitives.Ints; * * @author David ‘Bombe’ Roden */ -public interface Sone extends Identified, Fingerprintable, PostBuilderFactory, AlbumBuilderFactory, Comparable { +public interface Sone extends Identified, Fingerprintable, Comparable { /** * Enumeration for the possible states of a {@link Sone}. @@ -170,6 +171,13 @@ public interface Sone extends Identified, Fingerprintable, PostBuilderFactory, A } }; + public static final Function TO_FREENET_URI = new Function() { + @Override + public FreenetURI apply(Sone sone) { + return (sone == null) ? null : create(sone.getIdentity().getRequestUri()); + } + }; + /** * Returns the identity of this Sone. * @@ -178,18 +186,6 @@ public interface Sone extends Identified, Fingerprintable, PostBuilderFactory, A Identity getIdentity(); /** - * Sets the identity of this Sone. The {@link Identity#getId() ID} of the - * identity has to match this Sone’s {@link #getId()}. - * - * @param identity - * The identity of this Sone - * @return This Sone (for method chaining) - * @throws IllegalArgumentException - * if the ID of the identity does not match this Sone’s ID - */ - Sone setIdentity(Identity identity) throws IllegalArgumentException; - - /** * Returns the name of this Sone. * * @return The name of this Sone @@ -204,38 +200,6 @@ public interface Sone extends Identified, Fingerprintable, PostBuilderFactory, A boolean isLocal(); /** - * Returns the request URI of this Sone. - * - * @return The request URI of this Sone - */ - FreenetURI getRequestUri(); - - /** - * Sets the request URI of this Sone. - * - * @param requestUri - * The request URI of this Sone - * @return This Sone (for method chaining) - */ - Sone setRequestUri(FreenetURI requestUri); - - /** - * Returns the insert URI of this Sone. - * - * @return The insert URI of this Sone - */ - FreenetURI getInsertUri(); - - /** - * Sets the insert URI of this Sone. - * - * @param insertUri - * The insert URI of this Sone - * @return This Sone (for method chaining) - */ - Sone setInsertUri(FreenetURI insertUri); - - /** * Returns the latest edition of this Sone. * * @return The latest edition of this Sone @@ -243,16 +207,6 @@ public interface Sone extends Identified, Fingerprintable, PostBuilderFactory, A long getLatestEdition(); /** - * Sets the latest edition of this Sone. If the given latest edition is not - * greater than the current latest edition, the latest edition of this Sone is - * not changed. - * - * @param latestEdition - * The latest edition of this Sone - */ - void setLatestEdition(long latestEdition); - - /** * Return the time of the last inserted update of this Sone. * * @return The time of the update (in milliseconds since Jan 1, 1970 UTC) @@ -549,6 +503,19 @@ public interface Sone extends Identified, Fingerprintable, PostBuilderFactory, A /* TODO - remove this method again, maybe add an option provider */ void setOptions(Options options); + AlbumBuilder newAlbumBuilder() throws IllegalStateException; + PostBuilder newPostBuilder(); + PostReplyBuilder newPostReplyBuilder(String postId) throws IllegalStateException; + + Modifier modify(); + + interface Modifier { + + Modifier setLatestEdition(long latestEdition); + Sone update(); + + } + }