@Override
  public void saveDeck(Deck deck) {
    String destinationName = deck.name();

    DeckData deckData = buildDeckData(deck);

    String deckDataString = gson.toJson(deckData);
    persist(destinationName, deckDataString);
  }
 protected List<CardData> loadRawData() {
   try {
     return gson.fromJson(readLibrarySource(), getType());
   } catch (JsonIOException e) {
     e.printStackTrace();
   } catch (JsonSyntaxException e) {
     e.printStackTrace();
   } catch (FileNotFoundException e) {
     e.printStackTrace();
   }
   return Collections.emptyList();
 }
 @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;
 }