import static com.google.common.primitives.Longs.tryParse;
import static java.lang.String.format;
import static java.util.logging.Level.WARNING;
+import static java.util.logging.Logger.getLogger;
import java.util.Collection;
import java.util.HashMap;
import net.pterodactylus.sone.database.PostReplyProvider;
import net.pterodactylus.sone.database.SoneBuilder;
import net.pterodactylus.sone.database.SoneProvider;
-import net.pterodactylus.sone.fcp.FcpInterface;
import net.pterodactylus.sone.freenet.wot.Identity;
import net.pterodactylus.sone.freenet.wot.IdentityManager;
import net.pterodactylus.sone.freenet.wot.OwnIdentity;
import net.pterodactylus.sone.main.SonePlugin;
import net.pterodactylus.util.config.Configuration;
import net.pterodactylus.util.config.ConfigurationException;
-import net.pterodactylus.util.logging.Logging;
-import net.pterodactylus.util.number.Numbers;
import net.pterodactylus.util.service.AbstractService;
import net.pterodactylus.util.thread.NamedThreadFactory;
public class Core extends AbstractService implements SoneProvider, PostProvider, PostReplyProvider {
/** The logger. */
- private static final Logger logger = Logging.getLogger(Core.class);
+ private static final Logger logger = getLogger("Sone.Core");
/** The start time. */
private final long startupTime = System.currentTimeMillis();
}
logger.info(String.format("Adding Sone from OwnIdentity: %s", ownIdentity));
Sone sone = database.newSoneBuilder().local().from(ownIdentity).build();
- sone.setLatestEdition(Numbers.safeParseLong(ownIdentity.getProperty("Sone.LatestEdition"), 0L));
+ sone.setLatestEdition(fromNullable(tryParse(ownIdentity.getProperty("Sone.LatestEdition"))).or(0L));
sone.setClient(new Client("Sone", SonePlugin.VERSION.toString()));
sone.setKnown(true);
SoneInserter soneInserter = new SoneInserter(this, eventBus, freenetInterface, ownIdentity.getId());
logger.log(Level.WARNING, String.format("Tried to delete non-local Sone: %s", sone));
return;
}
- // FIXME – implement in database
-// sones.remove(sone.getId());
SoneInserter soneInserter = soneInserters.remove(sone);
soneInserter.stop();
+ database.removeSone(sone);
webOfTrustUpdater.removeContext((OwnIdentity) sone.getIdentity(), "Sone");
webOfTrustUpdater.removeProperty((OwnIdentity) sone.getIdentity(), "Sone.LatestEdition");
try {
* @return The created post
*/
public Post createPost(Sone sone, Optional<Sone> recipient, String text) {
- return createPost(sone, recipient, System.currentTimeMillis(), text);
- }
-
- /**
- * Creates a new post.
- *
- * @param sone
- * The Sone that creates the post
- * @param recipient
- * The recipient Sone, or {@code null} if this post does not have
- * a recipient
- * @param time
- * The time of the post
- * @param text
- * The text of the post
- * @return The created post
- */
- public Post createPost(Sone sone, Optional<Sone> recipient, long time, String text) {
checkNotNull(text, "text must not be null");
checkArgument(text.trim().length() > 0, "text must not be empty");
if (!sone.isLocal()) {
return null;
}
PostBuilder postBuilder = database.newPostBuilder();
- postBuilder.from(sone.getId()).randomId().withTime(time).withText(text.trim());
+ postBuilder.from(sone.getId()).randomId().currentTime().withText(text.trim());
if (recipient.isPresent()) {
postBuilder.to(recipient.get().getId());
}
/* save known posts. */
database.save();
- /* save bookmarked posts. */
- int bookmarkedPostCounter = 0;
- for (Post bookmarkedPost : getBookmarkedPosts()) {
- configuration.getStringValue("Bookmarks/Post/" + bookmarkedPostCounter++ + "/ID").setValue(bookmarkedPost.getId());
- }
- configuration.getStringValue("Bookmarks/Post/" + bookmarkedPostCounter++ + "/ID").setValue(null);
-
/* now save it. */
configuration.save();
}
++soneCounter;
}
-
- /* load bookmarked posts. */
- int bookmarkedPostCounter = 0;
- while (true) {
- String bookmarkedPostId = configuration.getStringValue("Bookmarks/Post/" + bookmarkedPostCounter++ + "/ID").getValue(null);
- if (bookmarkedPostId == null) {
- break;
- }
- database.bookmarkPost(bookmarkedPostId);
- }
-
}
/**
if (sone.isLocal()) {
return;
}
- sone.setLatestEdition(Numbers.safeParseLong(identity.getProperty("Sone.LatestEdition"), sone.getLatestEdition()));
+ sone.setLatestEdition(fromNullable(tryParse(identity.getProperty("Sone.LatestEdition"))).or(sone.getLatestEdition()));
soneDownloader.addSone(sone);
soneDownloaders.execute(soneDownloader.fetchSoneAction(sone));
}
/* TODO - we don’t have the Sone anymore. should this happen? */
return;
}
- database.removePosts(sone.get());
- for (Post post : sone.get().getPosts()) {
- eventBus.post(new PostRemovedEvent(post));
- }
- database.removePostReplies(sone.get());
- for (PostReply reply : sone.get().getReplies()) {
- eventBus.post(new PostReplyRemovedEvent(reply));
- }
-// TODO – implement in database
-// sones.remove(identity.getId());
+ database.removeSone(sone.get());
eventBus.post(new SoneRemovedEvent(sone.get()));
}