X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FSoneParser.java;h=9122852764b48067106617af42e2588f3d8e5ec1;hb=cc18e5878bc71081da5137eb777d91821c3f4cce;hp=e234965da331ef92f20f5fa1afe09c3577f068b9;hpb=28667abdadc0573ac106542f1fd42ab5775ec415;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/core/SoneParser.java b/src/main/java/net/pterodactylus/sone/core/SoneParser.java index e234965..9122852 100644 --- a/src/main/java/net/pterodactylus/sone/core/SoneParser.java +++ b/src/main/java/net/pterodactylus/sone/core/SoneParser.java @@ -21,6 +21,7 @@ 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; @@ -28,6 +29,7 @@ import net.pterodactylus.sone.database.SoneBuilder; import net.pterodactylus.util.xml.SimpleXML; import net.pterodactylus.util.xml.XML; +import com.google.common.base.Optional; import org.w3c.dom.Document; /** @@ -37,7 +39,7 @@ 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; @@ -151,6 +153,9 @@ public class SoneParser { } try { profile.addField(fieldName.trim()).setValue(fieldValue); + } 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; @@ -262,10 +267,10 @@ public class SoneParser { logger.log(Level.WARNING, String.format("Downloaded Sone %s contains invalid album!", sone)); return null; } - Album parent = null; + Optional 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; } @@ -278,8 +283,8 @@ public class SoneParser { .setTitle(title) .setDescription(description) .update(); - if (parent != null) { - parent.addAlbum(album); + if (parent.isPresent()) { + parent.get().addAlbum(album); } else { topLevelAlbums.add(album); } @@ -321,16 +326,13 @@ public class SoneParser { } /* 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;