private DeckData buildDeckData(Deck deck) { DeckData data = new DeckData(); data.setName(deck.name()); data.setIdentity(deck.getIdentity().key()); List<CardEntry> entries = deck.cards(); for (CardEntry cardEntry : entries) { data.addCardRef(cardEntry.getKey(), cardEntry.getCount()); } return data; }
@Override public void saveDeck(Deck deck) { String destinationName = deck.name(); DeckData deckData = buildDeckData(deck); String deckDataString = gson.toJson(deckData); persist(destinationName, deckDataString); }
@Override public Deck loadDeck(String name) { DeckData data; try { data = gson.fromJson(readSource(getDeckUri(name)), DeckData.class); CardLibrary cl = loadCardLibrary(); Card identityCard = cl.getCard(data.getIdentity()); Deck deck = new Deck(cl.getItentity(identityCard.getKey()), data.getName()); for (CardRef ref : data.getCards()) { deck.add(cl.getCard(ref.getCard()), ref.getCount()); } return deck; } catch (JsonIOException e) { e.printStackTrace(); } catch (JsonSyntaxException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } return null; }