Don’t set the request URI anymore, either.
[Sone.git] / src / main / java / net / pterodactylus / sone / core / SoneDownloaderImpl.java
index e5ffaf9..d4ed927 100644 (file)
@@ -24,8 +24,10 @@ import static java.util.concurrent.TimeUnit.DAYS;
 import java.io.InputStream;
 import java.net.MalformedURLException;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.TimeUnit;
 import java.util.logging.Level;
@@ -43,6 +45,7 @@ import net.pterodactylus.sone.data.Sone.SoneStatus;
 import net.pterodactylus.sone.data.SoneImpl;
 import net.pterodactylus.sone.database.PostBuilder;
 import net.pterodactylus.sone.database.PostReplyBuilder;
+import net.pterodactylus.sone.database.SoneBuilder;
 import net.pterodactylus.util.io.Closer;
 import net.pterodactylus.util.logging.Logging;
 import net.pterodactylus.util.number.Numbers;
@@ -233,11 +236,6 @@ public class SoneDownloaderImpl extends AbstractService implements SoneDownloade
                        Sone parsedSone = parseSone(originalSone, soneInputStream);
                        if (parsedSone != null) {
                                parsedSone.setLatestEdition(requestUri.getEdition());
-                               if (requestUri.getKeyType().equals("USK")) {
-                                       parsedSone.setRequestUri(requestUri.setMetaString(new String[0]));
-                               } else {
-                                       parsedSone.setRequestUri(requestUri.setKeyType("USK").setDocName("Sone").setMetaString(new String[0]));
-                               }
                        }
                        return parsedSone;
                } catch (Exception e1) {
@@ -276,7 +274,11 @@ public class SoneDownloaderImpl extends AbstractService implements SoneDownloade
                        return null;
                }
 
-               Sone sone = new SoneImpl(originalSone.getId(), originalSone.isLocal()).setIdentity(originalSone.getIdentity());
+               SoneBuilder soneBuilder = core.soneBuilder().from(originalSone.getIdentity());
+               if (originalSone.isLocal()) {
+                       soneBuilder = soneBuilder.local();
+               }
+               Sone sone = soneBuilder.build();
 
                SimpleXML soneXml;
                try {
@@ -333,21 +335,6 @@ public class SoneDownloaderImpl extends AbstractService implements SoneDownloade
                        sone.setClient(new Client(clientName, clientVersion));
                }
 
-               String soneRequestUri = soneXml.getValue("request-uri", null);
-               if (soneRequestUri != null) {
-                       try {
-                               sone.setRequestUri(new FreenetURI(soneRequestUri));
-                       } catch (MalformedURLException mue1) {
-                               /* TODO - mark Sone as bad. */
-                               logger.log(Level.WARNING, String.format("Downloaded Sone %s has invalid request URI: %s", sone, soneRequestUri), mue1);
-                               return null;
-                       }
-               }
-
-               if (originalSone.getInsertUri() != null) {
-                       sone.setInsertUri(originalSone.getInsertUri());
-               }
-
                SimpleXML profileXml = soneXml.getNode("profile");
                if (profileXml == null) {
                        /* TODO - mark Sone as bad. */
@@ -477,6 +464,7 @@ public class SoneDownloaderImpl extends AbstractService implements SoneDownloade
 
                /* parse albums. */
                SimpleXML albumsXml = soneXml.getNode("albums");
+               Map<String, Image> allImages = new HashMap<String, Image>();
                List<Album> topLevelAlbums = new ArrayList<Album>();
                if (albumsXml != null) {
                        for (SimpleXML albumXml : albumsXml.getNodes("album")) {
@@ -535,6 +523,7 @@ public class SoneDownloaderImpl extends AbstractService implements SoneDownloade
                                                image = image.modify().setTitle(imageTitle).setDescription(imageDescription).update();
                                                image = image.modify().setWidth(imageWidth).setHeight(imageHeight).update();
                                                album.addImage(image);
+                                               allImages.put(imageId, image);
                                        }
                                }
                                album.modify().setAlbumImage(albumImageId).update();
@@ -543,7 +532,7 @@ public class SoneDownloaderImpl extends AbstractService implements SoneDownloade
 
                /* process avatar. */
                if (avatarId != null) {
-                       profile.setAvatar(core.getImage(avatarId, false));
+                       profile.setAvatar(allImages.get(avatarId));
                }
 
                /* okay, apparently everything was parsed correctly. Now import. */