X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FCore.java;h=bdea9893f0b1ccd7c12e0e6c7ae8fce0075a75b9;hb=c5e96f331ebec74bfa4da5ec7d4c7c888321480d;hp=54908d806e67bb14dade67317b19e02ca761b97b;hpb=f6790f16a4d666b2485429a5ce707885ad059c33;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/core/Core.java b/src/main/java/net/pterodactylus/sone/core/Core.java index 54908d8..bdea989 100644 --- a/src/main/java/net/pterodactylus/sone/core/Core.java +++ b/src/main/java/net/pterodactylus/sone/core/Core.java @@ -1016,13 +1016,18 @@ public class Core implements IdentityListener { if (postId == null) { break; } + String postRecipientId = configuration.getStringValue(postPrefix + "/Recipient").getValue(null); long postTime = configuration.getLongValue(postPrefix + "/Time").getValue((long) 0); String postText = configuration.getStringValue(postPrefix + "/Text").getValue(null); if ((postTime == 0) || (postText == null)) { logger.log(Level.WARNING, "Invalid post found, aborting load!"); return; } - posts.add(getPost(postId).setSone(sone).setTime(postTime).setText(postText)); + Post post = getPost(postId).setSone(sone).setTime(postTime).setText(postText); + if ((postRecipientId != null) && (postRecipientId.length() == 43)) { + post.setRecipient(getSone(postRecipientId)); + } + posts.add(post); } /* load replies. */ @@ -1140,6 +1145,9 @@ public class Core implements IdentityListener { for (Post post : sone.getPosts()) { String postPrefix = sonePrefix + "/Posts/" + postCounter++; configuration.getStringValue(postPrefix + "/ID").setValue(post.getId()); + if (post.getRecipient() != null) { + configuration.getStringValue(postPrefix + "/Recipient").setValue(post.getRecipient().getId()); + } configuration.getLongValue(postPrefix + "/Time").setValue(post.getTime()); configuration.getStringValue(postPrefix + "/Text").setValue(post.getText()); } @@ -1208,11 +1216,48 @@ public class Core implements IdentityListener { * @return The created post */ public Post createPost(Sone sone, long time, String text) { + return createPost(sone, null, time, 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 text + * The text of the post + * @return The created post + */ + public Post createPost(Sone sone, 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, Sone recipient, long time, String text) { if (!isLocalSone(sone)) { logger.log(Level.FINE, "Tried to create post for non-local Sone: %s", sone); return null; } Post post = new Post(sone, time, text); + if (recipient != null) { + post.setRecipient(recipient); + } synchronized (posts) { posts.put(post.getId(), post); }