diff --git a/src/main/java/net/tcgdex/Attack.java b/src/main/java/net/tcgdex/Attack.java index 9631599..8b0a656 100644 --- a/src/main/java/net/tcgdex/Attack.java +++ b/src/main/java/net/tcgdex/Attack.java @@ -31,7 +31,7 @@ public class Attack { private final String damage; Attack(JSONObject json) { - this(Types.parse(json.getJSONArray("cost")), json.getString("name"), json.optString("effect"), + this(Types.parse(json.optJSONArray("cost")), json.getString("name"), json.optString("effect"), json.optString("damage")); } diff --git a/src/main/java/net/tcgdex/CardInfo.java b/src/main/java/net/tcgdex/CardInfo.java index e329b8e..6b71bbf 100644 --- a/src/main/java/net/tcgdex/CardInfo.java +++ b/src/main/java/net/tcgdex/CardInfo.java @@ -36,7 +36,7 @@ public class CardInfo extends CardResume { CardInfo(JSONObject json) { super(json); - this.illustrator = json.getString("illustrator"); + this.illustrator = json.optString("illustrator"); this.rarity = Rarities.parse(json.getString("rarity")); this.category = Categories.parse(json.getString("category")); JSONObject variantSection = json.getJSONObject("variants"); @@ -152,7 +152,7 @@ public class CardInfo extends CardResume { /** * - * @return Card illustrator + * @return Card illustrator, may be null */ public String getIllustrator() { return illustrator; diff --git a/src/main/java/net/tcgdex/CardResume.java b/src/main/java/net/tcgdex/CardResume.java index e6dbd11..a0be5e3 100644 --- a/src/main/java/net/tcgdex/CardResume.java +++ b/src/main/java/net/tcgdex/CardResume.java @@ -11,7 +11,7 @@ import org.json.JSONObject; * Core information to describe a single card * */ -public class CardResume { +public class CardResume implements Comparable { static List parse(JSONArray array) { if (array == null) { @@ -40,6 +40,10 @@ public class CardResume { this.image = image; } + public String toString() { + return String.format("%s (%s): %s,%s", name, id, localId, image); + } + /** * @return Globally unique card ID based on the set ID and the cards ID within the set */ @@ -69,4 +73,23 @@ public class CardResume { public String getName() { return name; } + + @Override + public boolean equals(Object o) { + if (!(o instanceof CardResume)) { + return false; + } + CardResume other = (CardResume) o; + return this.id.equals(other.id); + } + + @Override + public int hashCode() { + return this.id.hashCode(); + } + + @Override + public int compareTo(CardResume arg0) { + return this.id.compareTo(arg0.id); + } } diff --git a/src/main/java/net/tcgdex/TCGDexAPI.java b/src/main/java/net/tcgdex/TCGDexAPI.java index ad463d6..4bde224 100644 --- a/src/main/java/net/tcgdex/TCGDexAPI.java +++ b/src/main/java/net/tcgdex/TCGDexAPI.java @@ -142,7 +142,11 @@ public class TCGDexAPI { */ public CardInfo getCardInfo(String globalCardID) throws IOException { String data = Utils.doGet(buildURL("cards", globalCardID)); - return new CardInfo(new JSONObject(data)); + JSONObject json = new JSONObject(data); + if (json.has("error")) { + return null; + } + return new CardInfo(json); } /** @@ -158,7 +162,11 @@ public class TCGDexAPI { */ public CardInfo getCardInfo(String setID, String cardID) throws IOException { String data = Utils.doGet(buildURL("sets", setID, cardID)); - return new CardInfo(new JSONObject(data)); + JSONObject json = new JSONObject(data); + if (json.has("error")) { + return null; + } + return new CardInfo(json); } /** diff --git a/src/main/java/net/tcgdex/Utils.java b/src/main/java/net/tcgdex/Utils.java index e6d93fc..320228e 100644 --- a/src/main/java/net/tcgdex/Utils.java +++ b/src/main/java/net/tcgdex/Utils.java @@ -2,9 +2,7 @@ package net.tcgdex; import java.awt.image.BufferedImage; import java.io.BufferedReader; -import java.io.ByteArrayOutputStream; import java.io.IOException; -import java.io.InputStream; import java.io.InputStreamReader; import java.net.URL; diff --git a/src/main/java/net/tcgdex/Weakness.java b/src/main/java/net/tcgdex/Weakness.java index cf96bdb..e1f1bd6 100644 --- a/src/main/java/net/tcgdex/Weakness.java +++ b/src/main/java/net/tcgdex/Weakness.java @@ -30,7 +30,7 @@ public class Weakness { Weakness(JSONObject json) { - this(Types.parse(json.getString("type")), json.getString("value")); + this(Types.parse(json.getString("type")), json.optString("value")); } Weakness(Types type, String value) { @@ -56,7 +56,7 @@ public class Weakness { } /** - * @return Descriptor of the weakness multiplier, including a leading x, for example 'x2' + * @return Descriptor of the weakness multiplier, including a leading x, for example 'x2'. May be null */ public String getValue() { return value;