From 4da3f550ededd73fa2b2afa5a40299a841d1d696 Mon Sep 17 00:00:00 2001 From: Maxmtg Date: Sun, 19 May 2013 18:30:50 +0000 Subject: [PATCH] QuestEventChallenge are keyed by id in their storage. The storage reader will print a warnings in console when you are trying to load a second object with same id. --- src/main/java/forge/deck/DeckgenUtil.java | 16 ++++------------ .../forge/gui/home/quest/CSubmenuChallenges.java | 6 ++---- src/main/java/forge/quest/QuestEvent.java | 4 ---- .../java/forge/quest/QuestEventChallenge.java | 6 ++++++ .../forge/quest/io/QuestChallengeReader.java | 3 +-- .../forge/util/storage/StorageReaderFile.java | 6 +++++- .../util/storage/StorageReaderFileSections.java | 6 +++++- .../forge/util/storage/StorageReaderFolder.java | 6 +++++- 8 files changed, 28 insertions(+), 25 deletions(-) diff --git a/src/main/java/forge/deck/DeckgenUtil.java b/src/main/java/forge/deck/DeckgenUtil.java index b831196195c..f530d769f97 100644 --- a/src/main/java/forge/deck/DeckgenUtil.java +++ b/src/main/java/forge/deck/DeckgenUtil.java @@ -109,20 +109,12 @@ public class DeckgenUtil { return Singletons.getModel().getDecks().getConstructed().get(selection[0]); } - /** - * Gets a quest deck. - * - * @param selection {java.lang.String} - * @return {@link forge.deck.Deck} - */ - public static Deck buildQuestDeck(final String[] selection) { - return getQuestEvent(selection[0]).getEventDeck(); - } - public static QuestEvent getQuestEvent(final String name) { QuestController qCtrl = Singletons.getModel().getQuest(); - QuestEventChallenge challenge = qCtrl.getChallenges().get(name); - if( null != challenge ) return challenge; + for(QuestEventChallenge challenge : qCtrl.getChallenges()) { + if( challenge.getTitle().equals(name) ) + return challenge; + } QuestEventDuel duel = Iterables.find(qCtrl.getDuelsManager().getAllDuels(), new Predicate() { @Override public boolean apply(QuestEventDuel in) { return in.getName().equals(name); } diff --git a/src/main/java/forge/gui/home/quest/CSubmenuChallenges.java b/src/main/java/forge/gui/home/quest/CSubmenuChallenges.java index 7d2defac68c..9505d0ee734 100644 --- a/src/main/java/forge/gui/home/quest/CSubmenuChallenges.java +++ b/src/main/java/forge/gui/home/quest/CSubmenuChallenges.java @@ -133,11 +133,9 @@ public enum CSubmenuChallenges implements ICDoc { view.getPnlChallenges().removeAll(); qCtrl.regenerateChallenges(); - final List ids = qCtrl.getAchievements().getCurrentChallenges(); final List challenges = new ArrayList(); - for(final QuestEventChallenge qc : qCtrl.getChallenges()) { - if(ids.contains(qc.getId())) - challenges.add(qc); + for(String id : qCtrl.getAchievements().getCurrentChallenges()) { + challenges.add(qCtrl.getChallenges().get(id)); } JXButtonPanel grpPanel = new JXButtonPanel(); diff --git a/src/main/java/forge/quest/QuestEvent.java b/src/main/java/forge/quest/QuestEvent.java index ef2e9d1c145..4269f95f286 100644 --- a/src/main/java/forge/quest/QuestEvent.java +++ b/src/main/java/forge/quest/QuestEvent.java @@ -50,10 +50,6 @@ public abstract class QuestEvent implements IHasIcon { public static final Function FN_GET_NAME = new Function() { @Override public final String apply(QuestEvent qe) { return qe.name; } }; - public static final Function FN_GET_TITLE = new Function() { - @Override public final String apply(QuestEvent qe) { return qe.title; } - }; - public final String getTitle() { return this.title; diff --git a/src/main/java/forge/quest/QuestEventChallenge.java b/src/main/java/forge/quest/QuestEventChallenge.java index 221050fc94a..ed96c7802b0 100644 --- a/src/main/java/forge/quest/QuestEventChallenge.java +++ b/src/main/java/forge/quest/QuestEventChallenge.java @@ -20,6 +20,8 @@ package forge.quest; import java.util.ArrayList; import java.util.List; +import com.google.common.base.Function; + /** *

* QuestQuest class. @@ -30,6 +32,10 @@ import java.util.List; * */ public class QuestEventChallenge extends QuestEvent { + public static final Function FN_GET_ID = new Function() { + @Override public final String apply(QuestEventChallenge qe) { return qe.id; } + }; + // ID (default -1, should be explicitly set at later time.) /** The id. */ private String id = "-1"; diff --git a/src/main/java/forge/quest/io/QuestChallengeReader.java b/src/main/java/forge/quest/io/QuestChallengeReader.java index 4ca12e7083f..99dcfc8e15a 100644 --- a/src/main/java/forge/quest/io/QuestChallengeReader.java +++ b/src/main/java/forge/quest/io/QuestChallengeReader.java @@ -9,7 +9,6 @@ import java.util.Map; import forge.ImageCache; import forge.deck.Deck; import forge.deck.io.DeckSerializer; -import forge.quest.QuestEvent; import forge.quest.QuestEventChallenge; import forge.quest.QuestEventDifficulty; import forge.util.FileSection; @@ -19,7 +18,7 @@ import forge.util.storage.StorageReaderFolder; public class QuestChallengeReader extends StorageReaderFolder { public QuestChallengeReader(File deckDir0) { - super(deckDir0, QuestEvent.FN_GET_TITLE); + super(deckDir0, QuestEventChallenge.FN_GET_ID); // TODO Auto-generated constructor stub } diff --git a/src/main/java/forge/util/storage/StorageReaderFile.java b/src/main/java/forge/util/storage/StorageReaderFile.java index 82b420d787e..0cc53b4850b 100644 --- a/src/main/java/forge/util/storage/StorageReaderFile.java +++ b/src/main/java/forge/util/storage/StorageReaderFile.java @@ -84,7 +84,11 @@ public abstract class StorageReaderFile implements IItemReader { } idx++; - result.put(this.keySelector.apply(item), item); + String newKey = keySelector.apply(item); + if( result.containsKey(newKey)) + System.err.println("StorageReader: Overwriting an object with key " + newKey); + + result.put(newKey, item); } return result; diff --git a/src/main/java/forge/util/storage/StorageReaderFileSections.java b/src/main/java/forge/util/storage/StorageReaderFileSections.java index ef9d451816b..93cc75b6dab 100644 --- a/src/main/java/forge/util/storage/StorageReaderFileSections.java +++ b/src/main/java/forge/util/storage/StorageReaderFileSections.java @@ -90,7 +90,11 @@ public abstract class StorageReaderFileSections implements IItemReader { if ( !accumulator.isEmpty() ) { T item = readItem(header, accumulator, idx); if( item != null ) { - result.put(this.keySelector.apply(item), item); + String newKey = keySelector.apply(item); + if( result.containsKey(newKey)) + System.err.println("StorageReader: Overwriting an object with key " + newKey); + + result.put(newKey, item); } } return result; diff --git a/src/main/java/forge/util/storage/StorageReaderFolder.java b/src/main/java/forge/util/storage/StorageReaderFolder.java index ff4b3850b9a..fca958cb83b 100644 --- a/src/main/java/forge/util/storage/StorageReaderFolder.java +++ b/src/main/java/forge/util/storage/StorageReaderFolder.java @@ -104,7 +104,11 @@ public abstract class StorageReaderFolder implements IItemReader { JOptionPane.showMessageDialog(null, msg); continue; } - result.put(keySelector.apply(newDeck), newDeck); + String newKey = keySelector.apply(newDeck); + if( result.containsKey(newKey)) + System.err.println("StorageReader: Overwriting an object with key " + newKey); + + result.put(newKey, newDeck); } catch (final OldDeckFileFormatException ex) { if (!hasWarnedOfOldFormat) { JOptionPane