@Override public DeckCardLists importDeck(String filename, StringBuilder errorMessages) { try { Document doc = getXmlDocument(filename); DeckCardLists decklist = new DeckCardLists(); List<Node> mainCards = getNodes(doc, "/cockatrice_deck/zone[@name='main']/card"); decklist.setCards(mainCards.stream() .flatMap(toDeckCardInfo(getCardLookup(), errorMessages)) .collect(Collectors.toList())); List<Node> sideboardCards = getNodes(doc, "/cockatrice_deck/zone[@name='side']/card"); decklist.setSideboard(sideboardCards.stream() .flatMap(toDeckCardInfo(getCardLookup(), errorMessages)) .collect(Collectors.toList())); getNodes(doc, "/cockatrice_deck/deckname") .forEach(n -> decklist.setName(n.getTextContent().trim())); return decklist; } catch (Exception e) { logger.error("Error loading deck", e); errorMessages.append("There was an error loading the deck."); return new DeckCardLists(); } }