X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FSoneParser.java;h=03237964842fa7b0d34177cbcb605e84e783c1cb;hb=3752ebf20fcb0c71287f2b7fed358b14c7649d7f;hp=5dca54cad011f907db929c1d67deec78672b3f29;hpb=808a37413dbcd2f8a543f26bef5f639fccba6f4f;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 5dca54c..0323796 100644 --- a/src/main/java/net/pterodactylus/sone/core/SoneParser.java +++ b/src/main/java/net/pterodactylus/sone/core/SoneParser.java @@ -1,5 +1,9 @@ package net.pterodactylus.sone.core; +import static java.util.logging.Logger.getLogger; +import static net.pterodactylus.sone.utils.NumberParsers.parseInt; +import static net.pterodactylus.sone.utils.NumberParsers.parseLong; + import java.io.InputStream; import java.util.ArrayList; import java.util.HashMap; @@ -20,8 +24,6 @@ import net.pterodactylus.sone.data.Sone; import net.pterodactylus.sone.database.PostBuilder; import net.pterodactylus.sone.database.PostReplyBuilder; import net.pterodactylus.sone.database.SoneBuilder; -import net.pterodactylus.util.logging.Logging; -import net.pterodactylus.util.number.Numbers; import net.pterodactylus.util.xml.SimpleXML; import net.pterodactylus.util.xml.XML; @@ -34,7 +36,7 @@ import org.w3c.dom.Document; */ public class SoneParser { - private static final Logger logger = Logging.getLogger(SoneParser.class); + private static final Logger logger = getLogger("Sone.Parser"); private static final int MAX_PROTOCOL_VERSION = 0; private final Core core; @@ -60,21 +62,20 @@ public class SoneParser { if (originalSone.isLocal()) { soneBuilder = soneBuilder.local(); } - Sone sone = soneBuilder.build(); SimpleXML soneXml; try { soneXml = SimpleXML.fromDocument(document); } catch (NullPointerException npe1) { /* for some reason, invalid XML can cause NPEs. */ - logger.log(Level.WARNING, String.format("XML for Sone %s can not be parsed!", sone), npe1); + logger.log(Level.WARNING, String.format("XML for Sone %s can not be parsed!", originalSone), npe1); return null; } Integer protocolVersion = null; String soneProtocolVersion = soneXml.getValue("protocol-version", null); if (soneProtocolVersion != null) { - protocolVersion = Numbers.safeParseInteger(soneProtocolVersion); + protocolVersion = parseInt(soneProtocolVersion, null); } if (protocolVersion == null) { logger.log(Level.INFO, "No protocol version found, assuming 0."); @@ -95,14 +96,14 @@ public class SoneParser { String soneTime = soneXml.getValue("time", null); if (soneTime == null) { /* TODO - mark Sone as bad. */ - logger.log(Level.WARNING, String.format("Downloaded time for Sone %s was null!", sone)); + logger.log(Level.WARNING, String.format("Downloaded time for Sone %s was null!", originalSone)); return null; } try { - sone.setTime(Long.parseLong(soneTime)); + soneBuilder.lastUpdated(Long.parseLong(soneTime)); } catch (NumberFormatException nfe1) { /* TODO - mark Sone as bad. */ - logger.log(Level.WARNING, String.format("Downloaded Sone %s with invalid time: %s", sone, soneTime)); + logger.log(Level.WARNING, String.format("Downloaded Sone %s with invalid time: %s", originalSone, soneTime)); return null; } @@ -111,11 +112,14 @@ public class SoneParser { String clientName = clientXml.getValue("name", null); String clientVersion = clientXml.getValue("version", null); if ((clientName == null) || (clientVersion == null)) { - logger.log(Level.WARNING, String.format("Download Sone %s with client XML but missing name or version!", sone)); + logger.log(Level.WARNING, String.format("Download Sone %s with client XML but missing name or version!", originalSone)); return null; } - sone.setClient(new Client(clientName, clientVersion)); + soneBuilder.using(new Client(clientName, clientVersion)); + } else { + soneBuilder.using(new Client("Unknown Client", "0.0")); } + Sone sone = soneBuilder.build(); SimpleXML profileXml = soneXml.getNode("profile"); if (profileXml == null) { @@ -128,9 +132,9 @@ public class SoneParser { String profileFirstName = profileXml.getValue("first-name", null); String profileMiddleName = profileXml.getValue("middle-name", null); String profileLastName = profileXml.getValue("last-name", null); - Integer profileBirthDay = Numbers.safeParseInteger(profileXml.getValue("birth-day", null)); - Integer profileBirthMonth = Numbers.safeParseInteger(profileXml.getValue("birth-month", null)); - Integer profileBirthYear = Numbers.safeParseInteger(profileXml.getValue("birth-year", null)); + Integer profileBirthDay = parseInt(profileXml.getValue("birth-day", ""), null); + Integer profileBirthMonth = parseInt(profileXml.getValue("birth-month", ""), null); + Integer profileBirthYear = parseInt(profileXml.getValue("birth-year", ""), null); Profile profile = new Profile(sone).setFirstName(profileFirstName).setMiddleName(profileMiddleName).setLastName(profileLastName); profile.setBirthDay(profileBirthDay).setBirthMonth(profileBirthMonth).setBirthYear(profileBirthYear); /* avatar is processed after images are loaded. */ @@ -294,9 +298,9 @@ public class SoneParser { logger.log(Level.WARNING, String.format("Downloaded Sone %s contains invalid images!", sone)); return null; } - long creationTime = Numbers.safeParseLong(imageCreationTimeString, 0L); - int imageWidth = Numbers.safeParseInteger(imageWidthString, 0); - int imageHeight = Numbers.safeParseInteger(imageHeightString, 0); + long creationTime = parseLong(imageCreationTimeString, 0L); + int imageWidth = parseInt(imageWidthString, 0); + int imageHeight = parseInt(imageHeightString, 0); if ((imageWidth < 1) || (imageHeight < 1)) { logger.log(Level.WARNING, String.format("Downloaded Sone %s contains image %s with invalid dimensions (%s, %s)!", sone, imageId, imageWidthString, imageHeightString)); return null;