}
}
+ /* parse liked post IDs. */
+ SimpleXML likePostIdsXml = soneXml.getNode("post-likes");
+ if (likePostIdsXml == null) {
+ /* TODO - mark Sone as bad. */
+ logger.log(Level.WARNING, "Downloaded Sone %s has no known Sones!", new Object[] { sone });
+ return null;
+ }
+
+ Set<String> likedPostIds = new HashSet<String>();
+ for (SimpleXML likedPostIdXml : likePostIdsXml.getNodes("post-like")) {
+ String postId = likedPostIdXml.getValue();
+ likedPostIds.add(postId);
+ }
+
+ /* parse liked reply IDs. */
+ SimpleXML likeReplyIdsXml = soneXml.getNode("reply-likes");
+ if (likeReplyIdsXml == null) {
+ /* TODO - mark Sone as bad. */
+ logger.log(Level.WARNING, "Downloaded Sone %s has no reply likes!", new Object[] { sone });
+ return null;
+ }
+
+ Set<String> likedReplyIds = new HashSet<String>();
+ for (SimpleXML likedReplyIdXml : likeReplyIdsXml.getNodes("reply-like")) {
+ String replyId = likedReplyIdXml.getValue();
+ likedReplyIds.add(replyId);
+ }
+
/* parse known Sones. */
SimpleXML knownSonesXml = soneXml.getNode("known-sones");
if (knownSonesXml == null) {
sone.setProfile(profile);
sone.setPosts(posts);
sone.setReplies(replies);
+ sone.setLikePostIds(likedPostIds);
sone.setModificationCounter(0);
}