X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;ds=sidebyside;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdata%2Fimpl%2FSoneImpl.java;h=f2f2ea620ba161af8a45e924ea1b0539a2cd9c1f;hb=64740709990291688170ebd1f192af5eb9090618;hp=439f4c931e9e2ba1136bef41173b3c19f51b4272;hpb=acfc86d839d5a8b8c75b0198f48dd12e10128c65;p=Sone.git
diff --git a/src/main/java/net/pterodactylus/sone/data/impl/SoneImpl.java b/src/main/java/net/pterodactylus/sone/data/impl/SoneImpl.java
index 439f4c9..f2f2ea6 100644
--- a/src/main/java/net/pterodactylus/sone/data/impl/SoneImpl.java
+++ b/src/main/java/net/pterodactylus/sone/data/impl/SoneImpl.java
@@ -1,5 +1,5 @@
/*
- * Sone - SoneImpl.java - Copyright © 2010â2016 David Roden
+ * Sone - SoneImpl.java - Copyright © 2010â2020 David Roden
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -19,7 +19,11 @@ package net.pterodactylus.sone.data.impl;
import static com.google.common.base.Preconditions.checkNotNull;
import static java.lang.String.format;
+import static java.nio.charset.StandardCharsets.UTF_8;
import static java.util.logging.Logger.getLogger;
+import static net.pterodactylus.sone.data.PostKt.newestPostFirst;
+import static net.pterodactylus.sone.data.ReplyKt.newestReplyFirst;
+import static net.pterodactylus.sone.data.SoneKt.*;
import java.net.MalformedURLException;
import java.util.ArrayList;
@@ -35,17 +39,16 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import net.pterodactylus.sone.data.Album;
+import net.pterodactylus.sone.data.AlbumKt;
import net.pterodactylus.sone.data.Client;
import net.pterodactylus.sone.data.Post;
import net.pterodactylus.sone.data.PostReply;
import net.pterodactylus.sone.data.Profile;
-import net.pterodactylus.sone.data.Reply;
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;
import freenet.keys.FreenetURI;
@@ -56,8 +59,6 @@ import com.google.common.hash.Hashing;
* {@link Sone} implementation.
*
* Operations that modify the Sone need to synchronize on the Sone in question.
- *
- * @author David âBombeâ Roden
*/
public class SoneImpl implements Sone {
@@ -95,16 +96,16 @@ public class SoneImpl implements Sone {
private volatile boolean known;
/** All posts. */
- private final Set posts = new CopyOnWriteArraySet();
+ private final Set posts = new CopyOnWriteArraySet<>();
/** All replies. */
- private final Set replies = new CopyOnWriteArraySet();
+ private final Set replies = new CopyOnWriteArraySet<>();
/** The IDs of all liked posts. */
- private final Set likedPostIds = new CopyOnWriteArraySet();
+ private final Set likedPostIds = new CopyOnWriteArraySet<>();
/** The IDs of all liked replies. */
- private final Set likedReplyIds = new CopyOnWriteArraySet();
+ private final Set likedReplyIds = new CopyOnWriteArraySet<>();
/** The root album containing all albums. */
private final Album rootAlbum = new AlbumImpl(this);
@@ -192,26 +193,6 @@ public class SoneImpl implements Sone {
}
/**
- * Returns the insert URI of this Sone.
- *
- * @return The insert URI of this Sone
- */
- @Nullable
- public FreenetURI getInsertUri() {
- if (!isLocal()) {
- return null;
- }
- try {
- return new FreenetURI(((OwnIdentity) getIdentity()).getInsertUri())
- .setDocName("Sone")
- .setMetaString(new String[0])
- .setSuggestedEdition(latestEdition);
- } catch (MalformedURLException e) {
- throw new IllegalStateException(format("Own identity %s's insert URI is incorrect.", getIdentity()), e);
- }
- }
-
- /**
* Returns the latest edition of this Sone.
*
* @return The latest edition of this Sone
@@ -383,9 +364,9 @@ public class SoneImpl implements Sone {
public List getPosts() {
List sortedPosts;
synchronized (this) {
- sortedPosts = new ArrayList(posts);
+ sortedPosts = new ArrayList<>(posts);
}
- Collections.sort(sortedPosts, Post.NEWEST_FIRST);
+ sortedPosts.sort(newestPostFirst());
return sortedPosts;
}
@@ -533,12 +514,9 @@ public class SoneImpl implements Sone {
*
* @param postId
* The ID of the post
- * @return This Sone (for method chaining)
*/
- @Nonnull
- public Sone removeLikedPostId(@Nonnull String postId) {
+ public void removeLikedPostId(@Nonnull String postId) {
likedPostIds.remove(postId);
- return this;
}
/**
@@ -595,12 +573,9 @@ public class SoneImpl implements Sone {
*
* @param replyId
* The ID of the reply
- * @return This Sone (for method chaining)
*/
- @Nonnull
- public Sone removeLikedReplyId(@Nonnull String replyId) {
+ public void removeLikedReplyId(@Nonnull String replyId) {
likedReplyIds.remove(replyId);
- return this;
}
/**
@@ -642,46 +617,46 @@ public class SoneImpl implements Sone {
@Override
public synchronized String getFingerprint() {
Hasher hash = Hashing.sha256().newHasher();
- hash.putString(profile.getFingerprint());
+ hash.putString(profile.getFingerprint(), UTF_8);
- hash.putString("Posts(");
+ hash.putString("Posts(", UTF_8);
for (Post post : getPosts()) {
- hash.putString("Post(").putString(post.getId()).putString(")");
+ hash.putString("Post(", UTF_8).putString(post.getId(), UTF_8).putString(")", UTF_8);
}
- hash.putString(")");
+ hash.putString(")", UTF_8);
- List replies = new ArrayList(getReplies());
- Collections.sort(replies, Reply.TIME_COMPARATOR);
- hash.putString("Replies(");
+ List replies = new ArrayList<>(getReplies());
+ replies.sort(newestReplyFirst().reversed());
+ hash.putString("Replies(", UTF_8);
for (PostReply reply : replies) {
- hash.putString("Reply(").putString(reply.getId()).putString(")");
+ hash.putString("Reply(", UTF_8).putString(reply.getId(), UTF_8).putString(")", UTF_8);
}
- hash.putString(")");
+ hash.putString(")", UTF_8);
- List likedPostIds = new ArrayList(getLikedPostIds());
+ List likedPostIds = new ArrayList<>(getLikedPostIds());
Collections.sort(likedPostIds);
- hash.putString("LikedPosts(");
+ hash.putString("LikedPosts(", UTF_8);
for (String likedPostId : likedPostIds) {
- hash.putString("Post(").putString(likedPostId).putString(")");
+ hash.putString("Post(", UTF_8).putString(likedPostId, UTF_8).putString(")", UTF_8);
}
- hash.putString(")");
+ hash.putString(")", UTF_8);
- List likedReplyIds = new ArrayList(getLikedReplyIds());
+ List likedReplyIds = new ArrayList<>(getLikedReplyIds());
Collections.sort(likedReplyIds);
- hash.putString("LikedReplies(");
+ hash.putString("LikedReplies(", UTF_8);
for (String likedReplyId : likedReplyIds) {
- hash.putString("Reply(").putString(likedReplyId).putString(")");
+ hash.putString("Reply(", UTF_8).putString(likedReplyId, UTF_8).putString(")", UTF_8);
}
- hash.putString(")");
+ hash.putString(")", UTF_8);
- hash.putString("Albums(");
+ hash.putString("Albums(", UTF_8);
for (Album album : rootAlbum.getAlbums()) {
- if (!Album.NOT_EMPTY.apply(album)) {
+ if (!AlbumKt.notEmpty().invoke(album)) {
continue;
}
- hash.putString(album.getFingerprint());
+ hash.putString(album.getFingerprint(), UTF_8);
}
- hash.putString(")");
+ hash.putString(")", UTF_8);
return hash.hash().toString();
}
@@ -693,7 +668,7 @@ public class SoneImpl implements Sone {
/** {@inheritDoc} */
@Override
public int compareTo(Sone sone) {
- return NICE_NAME_COMPARATOR.compare(this, sone);
+ return niceNameComparator().compare(this, sone);
}
//