Merge branch 'release-0.8.5'
[Sone.git] / src / main / java / net / pterodactylus / sone / core / SoneDownloader.java
index 36b672c..e0ee363 100644 (file)
@@ -31,11 +31,12 @@ import net.pterodactylus.sone.data.Album;
 import net.pterodactylus.sone.data.Client;
 import net.pterodactylus.sone.data.Image;
 import net.pterodactylus.sone.data.Post;
-import net.pterodactylus.sone.data.PostBuilder;
 import net.pterodactylus.sone.data.PostReply;
 import net.pterodactylus.sone.data.Profile;
 import net.pterodactylus.sone.data.Sone;
 import net.pterodactylus.sone.data.Sone.SoneStatus;
+import net.pterodactylus.sone.database.PostBuilder;
+import net.pterodactylus.sone.database.PostReplyBuilder;
 import net.pterodactylus.util.io.Closer;
 import net.pterodactylus.util.logging.Logging;
 import net.pterodactylus.util.number.Numbers;
@@ -96,10 +97,9 @@ public class SoneDownloader extends AbstractService {
         *            The Sone to add
         */
        public void addSone(Sone sone) {
-               if (!sones.add(sone)) {
-                       freenetInterface.unregisterUsk(sone);
+               if (sones.add(sone)) {
+                       freenetInterface.registerUsk(sone, this);
                }
-               freenetInterface.registerUsk(sone, this);
        }
 
        /**
@@ -165,6 +165,7 @@ public class SoneDownloader extends AbstractService {
                        Sone parsedSone = parseSone(sone, fetchResults.getFetchResult(), fetchResults.getFreenetUri());
                        if (parsedSone != null) {
                                if (!fetchOnly) {
+                                       parsedSone.setStatus((parsedSone.getTime() == 0) ? SoneStatus.unknown : SoneStatus.idle);
                                        core.updateSone(parsedSone);
                                        addSone(parsedSone);
                                }
@@ -375,9 +376,9 @@ public class SoneDownloader extends AbstractService {
                                try {
                                        PostBuilder postBuilder = core.postBuilder();
                                        /* TODO - parse time correctly. */
-                                       postBuilder.withId(postId).from(sone).withTime(Long.parseLong(postTime)).withText(postText);
+                                       postBuilder.withId(postId).from(sone.getId()).withTime(Long.parseLong(postTime)).withText(postText);
                                        if ((postRecipientId != null) && (postRecipientId.length() == 43)) {
-                                               postBuilder.to(core.getSone(postRecipientId));
+                                               postBuilder.to(postRecipientId);
                                        }
                                        posts.add(postBuilder.build());
                                } catch (NumberFormatException nfe1) {
@@ -406,7 +407,10 @@ public class SoneDownloader extends AbstractService {
                                        return null;
                                }
                                try {
-                                       replies.add(core.getPostReply(replyId, true).setSone(sone).setPost(core.getPost(replyPostId)).setTime(Long.parseLong(replyTime)).setText(replyText));
+                                       PostReplyBuilder postReplyBuilder = core.postReplyBuilder();
+                                       /* TODO - parse time correctly. */
+                                       postReplyBuilder.withId(replyId).from(sone.getId()).to(replyPostId).withTime(Long.parseLong(replyTime)).withText(replyText);
+                                       replies.add(postReplyBuilder.build());
                                } catch (NumberFormatException nfe1) {
                                        /* TODO - mark Sone as bad. */
                                        logger.log(Level.WARNING, String.format("Downloaded reply for Sone %s with invalid time: %s", sone, replyTime));