import net.pterodactylus.sone.data.Sone;
import net.pterodactylus.sone.data.SoneOptions;
import net.pterodactylus.sone.data.SoneOptions.DefaultSoneOptions;
+import net.pterodactylus.sone.database.Database;
import net.pterodactylus.sone.freenet.wot.Identity;
import net.pterodactylus.sone.freenet.wot.OwnIdentity;
/** The logger. */
private static final Logger logger = getLogger("Sone.Data");
+ /** The database. */
+ private final Database database;
+
/** The ID of this Sone. */
private final String id;
/** Whether this Sone is known. */
private volatile boolean known;
- /** All friend Sones. */
- private final Set<String> friendSones = new CopyOnWriteArraySet<String>();
-
/** All posts. */
private final Set<Post> posts = new CopyOnWriteArraySet<Post>();
/**
* Creates a new Sone.
*
+ * @param database The database
* @param identity
* The identity of the Sone
* @param local
* {@code true} if the Sone is a local Sone, {@code false} otherwise
*/
- public SoneImpl(Identity identity, boolean local) {
+ public SoneImpl(Database database, Identity identity, boolean local) {
+ this.database = database;
this.id = identity.getId();
this.identity = identity;
this.local = local;
* @return The friend Sones of this Sone
*/
public Collection<String> getFriends() {
- return new ArrayList<String>(friendSones);
+ return database.getFriends(this);
}
/**
* false} otherwise
*/
public boolean hasFriend(String friendSoneId) {
- return friendSones.contains(friendSoneId);
+ return database.isFriend(this, friendSoneId);
}
/**
/** {@inheritDoc} */
@Override
public String toString() {
- return getClass().getName() + "[identity=" + identity + ",friends(" + friendSones.size() + "),posts(" + posts.size() + "),replies(" + replies.size() + "),albums(" + getRootAlbum().getAlbums().size() + ")]";
+ return getClass().getName() + "[identity=" + identity + ",posts(" + posts.size() + "),replies(" + replies.size() + "),albums(" + getRootAlbum().getAlbums().size() + ")]";
}
}
import net.pterodactylus.sone.data.Sone;
import net.pterodactylus.sone.data.impl.SoneImpl;
import net.pterodactylus.sone.data.impl.AbstractSoneBuilder;
+import net.pterodactylus.sone.database.Database;
/**
* Memory-based {@link AbstractSoneBuilder} implementation.
*/
public class MemorySoneBuilder extends AbstractSoneBuilder {
+ private final Database database;
+
+ public MemorySoneBuilder(Database database) {
+ this.database = database;
+ }
+
@Override
public Sone build() throws IllegalStateException {
validate();
- return new SoneImpl(identity, local);
+ return new SoneImpl(database, identity, local);
}
}