+ public Set<PostReply> parsePostReplies(
+ PostReplyBuilderFactory postReplyBuilderFactory) {
+ Set<PostReply> replies = new HashSet<PostReply>();
+ while (true) {
+ String replyPrefix = "/Replies/" + replies.size();
+ String replyId = getString(replyPrefix + "/ID", null);
+ if (replyId == null) {
+ break;
+ }
+ String postId = getString(replyPrefix + "/Post/ID", null);
+ long replyTime = getLong(replyPrefix + "/Time", 0L);
+ String replyText = getString(replyPrefix + "/Text", null);
+ if ((postId == null) || (replyTime == 0) || (replyText == null)) {
+ throw new InvalidPostReplyFound();
+ }
+ PostReplyBuilder postReplyBuilder = postReplyBuilderFactory
+ .newPostReplyBuilder()
+ .withId(replyId)
+ .from(sone.getId())
+ .to(postId)
+ .withTime(replyTime)
+ .withText(replyText);
+ replies.add(postReplyBuilder.build());
+ }
+ return replies;
+ }
+
+ public Set<String> parseLikedPostIds() {
+ Set<String> likedPostIds = new HashSet<String>();
+ while (true) {
+ String likedPostId =
+ getString("/Likes/Post/" + likedPostIds.size() + "/ID",
+ null);
+ if (likedPostId == null) {
+ break;
+ }
+ likedPostIds.add(likedPostId);
+ }
+ return likedPostIds;
+ }
+
+ public Set<String> parseLikedPostReplyIds() {
+ Set<String> likedPostReplyIds = new HashSet<String>();
+ while (true) {
+ String likedReplyId = getString(
+ "/Likes/Reply/" + likedPostReplyIds.size() + "/ID", null);
+ if (likedReplyId == null) {
+ break;
+ }
+ likedPostReplyIds.add(likedReplyId);
+ }
+ return likedPostReplyIds;
+ }
+
+ public Set<String> parseFriends() {
+ Set<String> friends = new HashSet<String>();
+ while (true) {
+ String friendId =
+ getString("/Friends/" + friends.size() + "/ID", null);
+ if (friendId == null) {
+ break;
+ }
+ friends.add(friendId);
+ }
+ return friends;
+ }
+
+ public List<Album> parseTopLevelAlbums(
+ AlbumBuilderFactory albumBuilderFactory) {
+ Map<String, Album> albums = new HashMap<String, Album>();
+ List<Album> topLevelAlbums = new ArrayList<Album>();
+ int albumCounter = 0;
+ while (true) {
+ String albumPrefix = "/Albums/" + albumCounter++;
+ String albumId = getString(albumPrefix + "/ID", null);
+ if (albumId == null) {
+ break;
+ }
+ String albumTitle = getString(albumPrefix + "/Title", null);
+ String albumDescription =
+ getString(albumPrefix + "/Description", null);
+ String albumParentId = getString(albumPrefix + "/Parent", null);
+ String albumImageId =
+ getString(albumPrefix + "/AlbumImage", null);
+ if ((albumTitle == null) || (albumDescription == null)) {
+ throw new InvalidAlbumFound();
+ }
+ Album album = albumBuilderFactory.newAlbumBuilder()
+ .withId(albumId)
+ .by(sone)
+ .build()
+ .modify()
+ .setTitle(albumTitle)
+ .setDescription(albumDescription)
+ .setAlbumImage(albumImageId)
+ .update();
+ if (albumParentId != null) {
+ Album parentAlbum = albums.get(albumParentId);
+ if (parentAlbum == null) {
+ throw new InvalidParentAlbumFound(albumParentId);
+ }
+ parentAlbum.addAlbum(album);
+ } else {
+ topLevelAlbums.add(album);
+ }
+ albums.put(albumId, album);
+ }
+ return topLevelAlbums;
+ }
+