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;
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;
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) {
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 {
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. */
/* 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")) {
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();
/* process avatar. */
if (avatarId != null) {
- profile.setAvatar(core.getImage(avatarId, false));
+ profile.setAvatar(allImages.get(avatarId));
}
/* okay, apparently everything was parsed correctly. Now import. */