diff --git a/forge-core/src/main/java/forge/util/storage/StorageBase.java b/forge-core/src/main/java/forge/util/storage/StorageBase.java index 4ff9874a8d8..03e5afa3347 100644 --- a/forge-core/src/main/java/forge/util/storage/StorageBase.java +++ b/forge-core/src/main/java/forge/util/storage/StorageBase.java @@ -28,22 +28,21 @@ import com.google.common.collect.Iterables; import forge.util.IItemReader; -//reads and writeDeck Deck objects /** *

- * DeckManager class. + * StorageBase class. *

* * @param the generic type * @author Forge - * @version $Id: DeckManager.java 13590 2012-01-27 20:46:27Z Max mtg $ + * @version $Id: StorageBase.java 13590 2012-01-27 20:46:27Z Max mtg $ */ public class StorageBase implements IStorage { protected final Map map; public final static StorageBase emptyMap = new StorageBase("Empty", new HashMap()); public final String name; - + public StorageBase(final String name, final IItemReader io) { this.name = name; this.map = io.readAll(); @@ -52,13 +51,12 @@ public class StorageBase implements IStorage { public StorageBase(final String name, final Map inMap) { this.name = name; this.map = inMap; - } + } @Override public T get(final String name) { return this.map.get(name); } - @Override public final Collection getItemNames() { @@ -84,16 +82,14 @@ public class StorageBase implements IStorage { public T find(Predicate condition) { return Iterables.tryFind(map.values(), condition).orNull(); } - @Override - public void add(T deck) { + public void add(T item) { throw new UnsupportedOperationException("This is a read-only storage"); - } @Override - public void delete(String deckName) { + public void delete(String itemName) { throw new UnsupportedOperationException("This is a read-only storage"); } diff --git a/forge-core/src/main/java/forge/util/storage/StorageReaderFile.java b/forge-core/src/main/java/forge/util/storage/StorageReaderFile.java index e23deb1627a..b34910d74dd 100644 --- a/forge-core/src/main/java/forge/util/storage/StorageReaderFile.java +++ b/forge-core/src/main/java/forge/util/storage/StorageReaderFile.java @@ -34,10 +34,8 @@ import forge.util.FileUtil; * the generic type */ public abstract class StorageReaderFile extends StorageReaderBase { - private final File file; - /** * Instantiates a new storage reader file. * diff --git a/forge-core/src/main/java/forge/util/storage/StorageReaderFileSections.java b/forge-core/src/main/java/forge/util/storage/StorageReaderFileSections.java index e1a0d12787d..300f21d9e4b 100644 --- a/forge-core/src/main/java/forge/util/storage/StorageReaderFileSections.java +++ b/forge-core/src/main/java/forge/util/storage/StorageReaderFileSections.java @@ -36,7 +36,6 @@ import forge.util.FileUtil; * the generic type */ public abstract class StorageReaderFileSections extends StorageReaderBase { - private final File file; public StorageReaderFileSections(final String pathname, final Function keySelector0) { @@ -46,7 +45,6 @@ public abstract class StorageReaderFileSections extends StorageReaderBase public StorageReaderFileSections(final File file0, final Function keySelector0) { super(keySelector0); this.file = file0; - } protected Map createMap() { @@ -136,5 +134,4 @@ public abstract class StorageReaderFileSections extends StorageReaderBase public String getItemKey(final T item) { return this.keySelector.apply(item); } - } diff --git a/forge-core/src/main/java/forge/util/storage/StorageReaderFolder.java b/forge-core/src/main/java/forge/util/storage/StorageReaderFolder.java index 3554f7ff0df..c3995f48418 100644 --- a/forge-core/src/main/java/forge/util/storage/StorageReaderFolder.java +++ b/forge-core/src/main/java/forge/util/storage/StorageReaderFolder.java @@ -38,7 +38,6 @@ import com.google.common.base.Function; * @param the generic type */ public abstract class StorageReaderFolder extends StorageReaderBase { - /** * @return the directory */ @@ -46,18 +45,17 @@ public abstract class StorageReaderFolder extends StorageReaderBase { return directory; } - protected final File directory; /** * Instantiates a new storage reader folder. * - * @param deckDir0 the deck dir0 + * @param itemDir0 the item dir0 */ - public StorageReaderFolder(final File deckDir0, Function keySelector0) { + public StorageReaderFolder(final File itemDir0, Function keySelector0) { super(keySelector0); - this.directory = deckDir0; + this.directory = itemDir0; if (this.directory == null) { throw new IllegalArgumentException("No directory specified"); @@ -125,7 +123,6 @@ public abstract class StorageReaderFolder extends StorageReaderBase { public String getItemKey(T item) { return keySelector.apply(item); } - // methods handling nested folders are provided. It's up to consumer whether to use these or not. @Override diff --git a/forge-gui/src/main/java/forge/gui/deckchooser/DeckgenUtil.java b/forge-gui/src/main/java/forge/gui/deckchooser/DeckgenUtil.java index 0641cb93052..67e2b363e08 100644 --- a/forge-gui/src/main/java/forge/gui/deckchooser/DeckgenUtil.java +++ b/forge-gui/src/main/java/forge/gui/deckchooser/DeckgenUtil.java @@ -1,4 +1,4 @@ -package forge.gui.deckchooser; +package forge.gui.deckchooser; import java.awt.Toolkit; import java.awt.datatransfer.StringSelection; @@ -58,29 +58,32 @@ public class DeckgenUtil { * @return {@link forge.deck.Deck} */ public static Deck buildColorDeck(List selection, boolean forAi) { - final Deck deck; - String deckName = null; - + String deckName = null; + DeckGeneratorBase gen = null; CardDb cardDb = Singletons.getMagicDb().getCommonCards(); if (selection.size() == 1) { gen = new DeckGeneratorMonoColor(cardDb, selection.get(0)); - } else if (selection.size() == 2) { + } + else if (selection.size() == 2) { gen = new DeckGenerator2Color(cardDb, selection.get(0), selection.get(1)); - } else if (selection.size() == 3) { + } + else if (selection.size() == 3) { gen = new DeckGenerator3Color(cardDb, selection.get(0), selection.get(1), selection.get(2)); - } else { + } + else { gen = new DeckGenerator5Color(cardDb); deckName = "5 colors"; } gen.setSingleton(Singletons.getModel().getPreferences().getPrefBoolean(FPref.DECKGEN_SINGLETONS)); gen.setUseArtifacts(Singletons.getModel().getPreferences().getPrefBoolean(FPref.DECKGEN_ARTIFACTS)); ItemPoolView cards = gen == null ? null : gen.getDeck(60, forAi); - - if(null == deckName) + + if (null == deckName) { deckName = Lang.joinHomogenous(Arrays.asList(selection)); - + } + // After generating card lists, build deck. deck = new Deck("Random deck : " + deckName); deck.getMain().addAll(cards); @@ -112,30 +115,32 @@ public class DeckgenUtil { IStorage path = Singletons.getModel().getDecks().getConstructed(); String name = selection; int idxSlash = name.indexOf('/'); - while( idxSlash > 0 && path != null) { + while (idxSlash > 0 && path != null) { String sf = name.substring(0, idxSlash).trim(); path = path.getFolders().get(sf); name = name.substring(idxSlash+1).trim(); idxSlash = name.indexOf('/'); }; - if ( path == null ) + if (path == null) { throw new IllegalArgumentException("Path not found - " + selection); + } return path.get(name); } - + public static Deck getPreconDeck(String selection) { return QuestController.getPrecons().get(selection).getDeck(); } public static QuestEvent getQuestEvent(final String name) { QuestController qCtrl = Singletons.getModel().getQuest(); - for(QuestEventChallenge challenge : qCtrl.getChallenges()) { - if( challenge.getTitle().equals(name) ) + 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); } + @Override public boolean apply(QuestEventDuel in) { return in.getName().equals(name); } }); return duel; } @@ -167,13 +172,12 @@ public class DeckgenUtil { final String name = allDecks.getItemNames().toArray(new String[0])[rand]; return allDecks.get(name); } - + /** @return {@link forge.deck.Deck} */ public static Deck getRandomQuestDeck() { final List allQuestDecks = new ArrayList(); QuestController qCtrl = Singletons.getModel().getQuest(); - for (final QuestEvent e : qCtrl.getDuelsManager().getAllDuels()) { allQuestDecks.add(e.getEventDeck()); } @@ -189,20 +193,22 @@ public class DeckgenUtil { public static int[] randomSelectColors(int maxColors) { int nColors = MyRandom.getRandom().nextInt(3) + 1; int[] result = new int[nColors]; - for(int i = 0; i < nColors; i++) { + for (int i = 0; i < nColors; i++) { int next = MyRandom.getRandom().nextInt(maxColors); boolean isUnique = true; - for(int j = 0; j < i; j++) { - if(result[j] == next) { + for (int j = 0; j < i; j++) { + if (result[j] == next) { isUnique = false; break; } } - if(isUnique) + if (isUnique) { result[i] = next; - else - i--; // try over with this number + } + else { + i--; // try over with this number + } } return result; } @@ -224,9 +230,8 @@ public class DeckgenUtil { * @param lst0 {@link javax.swing.JList} */ public static void showDecklist(final Deck deck) { - if (deck == null) { return; } - + // Dump into map and display. final String nl = System.getProperty("line.separator"); final StringBuilder deckList = new StringBuilder(); @@ -234,16 +239,17 @@ public class DeckgenUtil { deckList.append(dName == null ? "" : dName + nl + nl); int nLines = 0; - for(DeckSection s : DeckSection.values()){ + for (DeckSection s : DeckSection.values()){ CardPool cp = deck.get(s); - if ( cp == null || cp.isEmpty() ) + if (cp == null || cp.isEmpty()) { continue; - + } deckList.append(s.toString()).append(": "); - if ( s.isSingleCard() ) { + if (s.isSingleCard()) { deckList.append(cp.get(0).getName()).append(nl); nLines++; - } else { + } + else { deckList.append(nl); nLines++; for (final Entry ev : cp) { @@ -255,11 +261,11 @@ public class DeckgenUtil { nLines++; } - final StringBuilder msg = new StringBuilder(); if (nLines <= 32) { msg.append(deckList.toString()); - } else { + } + else { msg.append("Decklist too long for dialog." + nl + nl); } @@ -315,14 +321,15 @@ public class DeckgenUtil { if (appearances < 2) { schemes.add(cp); schemesToAdd--; - } else { + } + else { attemptsLeft--; } } return schemes; } - + public static CardPool generatePlanarDeck() { CardPool res = new CardPool(); List allPlanars = new ArrayList(); @@ -334,23 +341,19 @@ public class DeckgenUtil { int phenoms = 0; int targetsize = MyRandom.getRandom().nextInt(allPlanars.size()-10)+10; - while(true) - { + while (true) { PaperCard rndPlane = Aggregates.random(allPlanars); allPlanars.remove(rndPlane); - - if(rndPlane.getRules().getType().isPhenomenon() && phenoms < 2) - { + + if (rndPlane.getRules().getType().isPhenomenon() && phenoms < 2) { res.add(rndPlane); phenoms++; } - else if (rndPlane.getRules().getType().isPlane()) - { + else if (rndPlane.getRules().getType().isPlane()) { res.add(rndPlane); } - - if(allPlanars.isEmpty() || res.countAll() == targetsize) - { + + if (allPlanars.isEmpty() || res.countAll() == targetsize) { break; } } diff --git a/forge-gui/src/main/java/forge/gui/deckchooser/FDeckChooser.java b/forge-gui/src/main/java/forge/gui/deckchooser/FDeckChooser.java index cbf24ff2376..001125ae068 100644 --- a/forge-gui/src/main/java/forge/gui/deckchooser/FDeckChooser.java +++ b/forge-gui/src/main/java/forge/gui/deckchooser/FDeckChooser.java @@ -41,7 +41,6 @@ import forge.util.storage.IStorage; @SuppressWarnings("serial") public class FDeckChooser extends JPanel implements IDecksComboBoxListener { - private final Color BORDER_COLOR = FSkin.getColor(FSkin.Colors.CLR_TEXT).getColor().darker(); private boolean isUISetup = false; @@ -116,7 +115,6 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener { lst.setSelectedIndices(getSelectedDeckIndices(Arrays.asList(listData), new int[]{0, 1})); lst.ensureIndexIsVisible(lst.getSelectedIndices()[0]); } - } private void updateThemes() { @@ -141,7 +139,6 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener { lst.setSelectedIndices(getSelectedDeckIndices(listData, new int[]{0})); lst.ensureIndexIsVisible(lst.getSelectedIndices()[0]); } - } private void updateCustom() { @@ -226,7 +223,6 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener { lst.setSelectedIndices(getSelectedDeckIndices(listData, new int[]{0})); lst.ensureIndexIsVisible(lst.getSelectedIndices()[0]); } - } public Deck getDeck() { @@ -236,17 +232,21 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener { if (selection.isEmpty()) { return null; } // Special branch for quest events - if (lst0.getName().equals(DeckgenUtil.DeckTypes.QUESTEVENTS.toString())) + if (lst0.getName().equals(DeckgenUtil.DeckTypes.QUESTEVENTS.toString())) { return DeckgenUtil.getQuestEvent(selection.get(0)).getEventDeck(); - if (lst0.getName().equals(DeckgenUtil.DeckTypes.COLORS.toString()) && DeckgenUtil.colorCheck(selection)) + } + if (lst0.getName().equals(DeckgenUtil.DeckTypes.COLORS.toString()) && DeckgenUtil.colorCheck(selection)) { return DeckgenUtil.buildColorDeck(selection, isAi); - if (lst0.getName().equals(DeckgenUtil.DeckTypes.THEMES.toString())) + } + if (lst0.getName().equals(DeckgenUtil.DeckTypes.THEMES.toString())) { return DeckgenUtil.buildThemeDeck(selection.get(0)); - if (lst0.getName().equals(DeckgenUtil.DeckTypes.CUSTOM.toString())) + } + if (lst0.getName().equals(DeckgenUtil.DeckTypes.CUSTOM.toString())) { return DeckgenUtil.getConstructedDeck(selection.get(0)); - if (lst0.getName().equals(DeckgenUtil.DeckTypes.PRECON.toString())) + } + if (lst0.getName().equals(DeckgenUtil.DeckTypes.PRECON.toString())) { return DeckgenUtil.getPreconDeck(selection.get(0)); - + } return null; } @@ -268,7 +268,6 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener { return new RegisteredPlayer(getDeck()); } - public final boolean isAi() { return isAi; } @@ -424,5 +423,4 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener { return defaultSelection; } } - } diff --git a/forge-gui/src/main/java/forge/util/storage/StorageImmediatelySerialized.java b/forge-gui/src/main/java/forge/util/storage/StorageImmediatelySerialized.java index c26c4e1f790..1edf2e3a85d 100644 --- a/forge-gui/src/main/java/forge/util/storage/StorageImmediatelySerialized.java +++ b/forge-gui/src/main/java/forge/util/storage/StorageImmediatelySerialized.java @@ -23,10 +23,9 @@ import com.google.common.base.Function; import forge.util.IItemSerializer; -//reads and writeDeck Deck objects /** *

- * DeckManager class. + * StorageImmediatelySerialized class. *

* * @param the generic type @@ -34,7 +33,6 @@ import forge.util.IItemSerializer; * @version $Id$ */ public class StorageImmediatelySerialized extends StorageBase { - private final IItemSerializer serializer; private final IStorage> subfolders; @@ -44,10 +42,10 @@ public class StorageImmediatelySerialized extends StorageBase { return new StorageImmediatelySerialized(file.getName(), (IItemSerializer) serializer.getReaderForFolder(file), true); } }; - + /** *

- * Constructor for DeckManager. + * Constructor for StorageImmediatelySerialized. *

* * @param io the io @@ -55,8 +53,7 @@ public class StorageImmediatelySerialized extends StorageBase { public StorageImmediatelySerialized(String name, final IItemSerializer io) { this(name, io, false); } - - + public StorageImmediatelySerialized(String name, final IItemSerializer io, boolean withSubFolders) { super(name, io); this.serializer = io; @@ -66,7 +63,7 @@ public class StorageImmediatelySerialized extends StorageBase { /* * (non-Javadoc) * - * @see forge.deck.IFolderMap#add(T) + * @see forge.util.storage.StorageBase#add(T) */ @Override public final void add(final T deck) { @@ -78,13 +75,13 @@ public class StorageImmediatelySerialized extends StorageBase { /* * (non-Javadoc) * - * @see forge.deck.IFolderMap#delete(java.lang.String) + * @see forge.util.storage.StorageBase#delete(java.lang.String) */ @Override public final void delete(final String deckName) { this.serializer.erase(this.map.remove(deckName)); } - + /* (non-Javadoc) * @see forge.util.storage.StorageBase#getFolders() */ diff --git a/forge-gui/src/main/java/forge/util/storage/StorageNestedFolders.java b/forge-gui/src/main/java/forge/util/storage/StorageNestedFolders.java index 2a6c33f74a2..af80d34b0e9 100644 --- a/forge-gui/src/main/java/forge/util/storage/StorageNestedFolders.java +++ b/forge-gui/src/main/java/forge/util/storage/StorageNestedFolders.java @@ -5,16 +5,13 @@ import java.util.HashMap; import com.google.common.base.Function; - public class StorageNestedFolders extends StorageBase> { - private final File thisFolder; public StorageNestedFolders(File thisFolder, Iterable subfolders, Function> factory) { super("", new HashMap>()); this.thisFolder = thisFolder; - for(File sf : subfolders ) - { + for (File sf : subfolders ) { IStorage newUnit = factory.apply(sf); map.put(sf.getName(), newUnit); } @@ -37,8 +34,8 @@ public class StorageNestedFolders extends StorageBase> { IStorage f = map.remove(deckName); // TODO: Clear all that files from disk - if ( f != null ) + if (f != null) { subdir.delete(); // won't work if not empty; + } } - }