Let core be an album provider
[Sone.git] / src / main / java / net / pterodactylus / sone / core / SoneParser.java
index 5851b18..24b856f 100644 (file)
@@ -20,6 +20,8 @@ import net.pterodactylus.sone.data.Image;
 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;
@@ -27,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;
 
 /**
@@ -36,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;
 
@@ -150,8 +153,11 @@ public class SoneParser {
                                }
                                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;
                                }
                        }
@@ -261,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<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;
                                        }
@@ -277,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);
                                }