diff options
author | Eduardo Pedroni <e.pedroni91@gmail.com> | 2015-06-06 22:12:41 +0200 |
---|---|---|
committer | Eduardo Pedroni <e.pedroni91@gmail.com> | 2015-06-06 22:12:41 +0200 |
commit | 4816a489e476c324155fa1f4e8adfe30867a766c (patch) | |
tree | 87776851bba9f6611093cb276ca67af8eaa68501 /src/eu/equalparts/cardbase/io | |
parent | 1b5b8f11d0dd33dc41c5c5a6841307fbb392f4c7 (diff) |
Bombproofed the CLI a bit more, tidied up the underlying API, now thinking about decks
Diffstat (limited to 'src/eu/equalparts/cardbase/io')
-rw-r--r-- | src/eu/equalparts/cardbase/io/IO.java | 119 |
1 files changed, 0 insertions, 119 deletions
diff --git a/src/eu/equalparts/cardbase/io/IO.java b/src/eu/equalparts/cardbase/io/IO.java deleted file mode 100644 index 2275913..0000000 --- a/src/eu/equalparts/cardbase/io/IO.java +++ /dev/null @@ -1,119 +0,0 @@ -package eu.equalparts.cardbase.io; - -import java.io.File; -import java.io.IOException; -import java.net.URL; -import java.util.ArrayList; - -import com.fasterxml.jackson.core.JsonGenerationException; -import com.fasterxml.jackson.core.JsonParseException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.JsonMappingException; -import com.fasterxml.jackson.databind.ObjectMapper; - -import eu.equalparts.cardbase.data.Card; -import eu.equalparts.cardbase.data.FullCardSet; -import eu.equalparts.cardbase.data.Cardbase; -import eu.equalparts.cardbase.data.CardSet; - -/** - * Class responsible for all I/O operations, such as fetching content from remote servers, reading from - * and writing to files. - * <br> - * All relevant methods here are static, this class should not be instantiated. - * - * @author Eduardo Pedroni - */ -public class IO { - - /** - * The base URL from where the information is fetched. - */ - private static final String BASE_URL = "http://mtgjson.com/json/"; - /** - * The URL where the complete list of sets is fetched. - */ - private static final String SETS_URL = BASE_URL + "SetList.json"; - /** - * The Jackson ObjectMapper which parses fetched JSON files. - */ - private static final ObjectMapper mapper = createMapper(); - - /** - * Private constructor, this class is not to be instantiated. - */ - private IO() {} - - /** - * Instantiate and configure Jackson mapper statically. - * - * @return the {@code ObjectMapper}, ready to use. - */ - private static ObjectMapper createMapper() { - ObjectMapper objectMapper = new ObjectMapper(); - // TODO decide what to do about this - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - return objectMapper; - } - - /** - * Fetches a complete set by code, where the code is a short string determined by WotC. - * The full list of valid codes can be acquired with {@code IO.getCardSetList()}. - * - * @param setCode the code of the set to be fetched. - * @return the complete specified set in a {@code FullCardSet} object. - * - * @throws JsonParseException if underlying input contains invalid content of type JsonParser supports (JSON for default case). - * @throws JsonMappingException if the input JSON structure does not match structure expected for result type (or has other mismatch issues). - * @throws IOException if a low-level I/O problem (unexpected end-of-input, network error) occurs. - */ - public static FullCardSet getFullCardSet(String setCode) throws JsonParseException, JsonMappingException, IOException { - FullCardSet fullCardSet = mapper.readValue(new URL(BASE_URL + setCode + ".json"), FullCardSet.class); - // MTG JSON does not include set code in the card information, but it is useful for sorting - for (Card card : fullCardSet.getCards()) { - card.setCode = setCode; - } - return fullCardSet; - } - - /** - * @return a list of all card sets in the form of {@code CardSet} objects. - * - * @throws JsonParseException if underlying input contains invalid content of type JsonParser supports (JSON for default case). - * @throws JsonMappingException if the input JSON structure does not match structure expected for result type (or has other mismatch issues). - * @throws IOException if a low-level I/O problem (unexpected end-of-input, network error) occurs. - */ - public static ArrayList<CardSet> getCardSetList() throws JsonParseException, JsonMappingException, IOException { - return mapper.readValue(new URL(SETS_URL), new TypeReference<ArrayList<CardSet>>() {}); - } - - /** - * Attemps to the read the specified file into a {@code Cardbase.} Exceptions are thrown as outlined below. - * - * @param file the file to read. - * @return a {@code Cardbase} object equivalent to the given file. - * - * @throws JsonParseException if underlying input contains invalid content of type JsonParser supports (JSON for default case). - * @throws JsonMappingException if the input JSON structure does not match structure expected for result type (or has other mismatch issues). - * @throws IOException if a low-level I/O problem (unexpected end-of-input, network error) occurs. - */ - public static Cardbase readCardbase(File file) throws JsonParseException, JsonMappingException, IOException { - return mapper.readValue(file, Cardbase.class); - } - - /** - * Writes the provided {@code Cardbase} to the provided file in JSON format. - * - * @param file the file to which to write the {@code Cardbase}. - * @param cardbase the {@code Cardbase} to write out. - * - * @throws JsonGenerationException if the data structure given does not generate valid JSON. - * @throws JsonMappingException if the data structure given does not generate valid JSON as well? - * @throws IOException if a low-level I/O problem (unexpected end-of-input, network error) occurs. - */ - public static void writeCardbase(File file, Cardbase cardbase) throws JsonGenerationException, JsonMappingException, IOException { - mapper.writeValue(file, cardbase); - } - -} |