/** Whether the Sone is local. */
private final boolean local;
- /** The identity of this Sone. */
- private Identity identity;
-
/** The URI under which the Sone is stored in Freenet. */
private volatile FreenetURI requestUri;
private volatile Profile profile = new Profile(this);
/** The client used by the Sone. */
- private volatile Client client;
+ private final Client client;
/** Whether this Sone is known. */
private volatile boolean known;
* @param local
* {@code true} if the Sone is a local Sone, {@code false} otherwise
*/
- public DefaultSone(Database database, String id, boolean local) {
+ public DefaultSone(Database database, String id, boolean local, Client client) {
this.database = database;
this.id = id;
this.local = local;
+ this.client = client;
rootAlbum = new DefaultAlbumBuilder(database, this, null).build();
}
}
public Identity getIdentity() {
- return identity;
- }
-
- public DefaultSone setIdentity(Identity identity) throws IllegalArgumentException {
- if (!identity.getId().equals(id)) {
- throw new IllegalArgumentException("Identity’s ID does not match Sone’s ID!");
- }
- this.identity = identity;
- return this;
+ return database.getIdentity(id).get();
}
public String getName() {
- return (identity != null) ? identity.getNickname() : null;
+ return getIdentity().getNickname();
}
public boolean isLocal() {
return client;
}
- public Sone setClient(Client client) {
- this.client = client;
- return this;
- }
-
public boolean isKnown() {
return known;
}
};
}
+ public Modifier modify() {
+ return new Modifier() {
+ private long latestEdition = DefaultSone.this.latestEdition;
+ @Override
+ public Modifier setLatestEdition(long latestEdition) {
+ this.latestEdition = latestEdition;
+ return this;
+ }
+
+ @Override
+ public Sone update() {
+ DefaultSone.this.latestEdition = latestEdition;
+ return DefaultSone.this;
+ }
+ };
+ }
+
//
// FINGERPRINTABLE METHODS
//
@Override
public String toString() {
- return getClass().getName() + "[identity=" + identity + ",requestUri=" + requestUri + ",insertUri(" + String.valueOf(insertUri).length() + "),friends(" + friendSones.size() + "),posts(" + posts.size() + "),replies(" + replies.size() + "),albums(" + getRootAlbum().getAlbums().size() + ")]";
+ return getClass().getName() + "[id=" + id + ",requestUri=" + requestUri + ",insertUri(" + String.valueOf(insertUri).length() + "),friends(" + friendSones.size() + "),posts(" + posts.size() + "),replies(" + replies.size() + "),albums(" + getRootAlbum().getAlbums().size() + ")]";
}
}