import net.pterodactylus.sone.data.Post;
import net.pterodactylus.sone.data.PostReply;
import net.pterodactylus.sone.data.Profile;
+import net.pterodactylus.sone.data.Profile.DuplicateField;
+import net.pterodactylus.sone.data.Profile.EmptyFieldName;
import net.pterodactylus.sone.data.Sone;
import net.pterodactylus.sone.database.PostBuilder;
import net.pterodactylus.sone.database.PostReplyBuilder;
import net.pterodactylus.util.xml.SimpleXML;
import net.pterodactylus.util.xml.XML;
+import com.google.common.base.Optional;
import org.w3c.dom.Document;
/**
*/
public class SoneParser {
- private static final Logger logger = getLogger("Sone.Parser");
+ private static final Logger logger = getLogger(SoneParser.class.getName());
private static final int MAX_PROTOCOL_VERSION = 0;
private final Core core;
}
try {
profile.addField(fieldName.trim()).setValue(fieldValue);
- } catch (IllegalArgumentException iae1) {
- logger.log(Level.WARNING, String.format("Duplicate field: %s", fieldName), iae1);
+ } catch (EmptyFieldName efn1) {
+ logger.log(Level.WARNING, "Empty field name!", efn1);
+ return null;
+ } catch (DuplicateField df1) {
+ logger.log(Level.WARNING, String.format("Duplicate field: %s", fieldName), df1);
return null;
}
}
logger.log(Level.WARNING, String.format("Downloaded Sone %s contains invalid album!", sone));
return null;
}
- Album parent = null;
+ Optional<Album> parent = Optional.absent();
if (parentId != null) {
parent = core.getAlbum(parentId);
- if (parent == null) {
+ if (!parent.isPresent()) {
logger.log(Level.WARNING, String.format("Downloaded Sone %s has album with invalid parent!", sone));
return null;
}
.setTitle(title)
.setDescription(description)
.update();
- if (parent != null) {
- parent.addAlbum(album);
+ if (parent.isPresent()) {
+ parent.get().addAlbum(album);
} else {
topLevelAlbums.add(album);
}
}
/* okay, apparently everything was parsed correctly. Now import. */
- /* atomic setter operation on the Sone. */
- synchronized (sone) {
- sone.setProfile(profile);
- sone.setPosts(posts);
- sone.setReplies(replies);
- sone.setLikePostIds(likedPostIds);
- sone.setLikeReplyIds(likedReplyIds);
- for (Album album : topLevelAlbums) {
- sone.getRootAlbum().addAlbum(album);
- }
+ sone.setProfile(profile);
+ sone.setPosts(posts);
+ sone.setReplies(replies);
+ sone.setLikePostIds(likedPostIds);
+ sone.setLikeReplyIds(likedReplyIds);
+ for (Album album : topLevelAlbums) {
+ sone.getRootAlbum().addAlbum(album);
}
return sone;