mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-15 18:28:00 +00:00
DeckIOCore.java removed, moved non-game related classes to util
This commit is contained in:
15
.gitattributes
vendored
15
.gitattributes
vendored
@@ -11206,10 +11206,6 @@ src/main/java/forge/deck/DeckBase.java -text
|
|||||||
src/main/java/forge/deck/DeckRecognizer.java -text
|
src/main/java/forge/deck/DeckRecognizer.java -text
|
||||||
src/main/java/forge/deck/DeckSection.java -text
|
src/main/java/forge/deck/DeckSection.java -text
|
||||||
src/main/java/forge/deck/DeckSet.java -text
|
src/main/java/forge/deck/DeckSet.java -text
|
||||||
src/main/java/forge/deck/FolderMap.java svneol=native#text/plain
|
|
||||||
src/main/java/forge/deck/FolderMapView.java -text
|
|
||||||
src/main/java/forge/deck/IFolderMap.java -text
|
|
||||||
src/main/java/forge/deck/IFolderMapView.java -text
|
|
||||||
src/main/java/forge/deck/OldDeckParser.java -text
|
src/main/java/forge/deck/OldDeckParser.java -text
|
||||||
src/main/java/forge/deck/generate/DeckGenerator.java -text
|
src/main/java/forge/deck/generate/DeckGenerator.java -text
|
||||||
src/main/java/forge/deck/generate/Generate2ColorDeck.java svneol=native#text/plain
|
src/main/java/forge/deck/generate/Generate2ColorDeck.java svneol=native#text/plain
|
||||||
@@ -11222,12 +11218,9 @@ src/main/java/forge/deck/generate/GenerateThemeDeck.java svneol=native#text/plai
|
|||||||
src/main/java/forge/deck/generate/package-info.java svneol=native#text/plain
|
src/main/java/forge/deck/generate/package-info.java svneol=native#text/plain
|
||||||
src/main/java/forge/deck/io/CubeSerializer.java -text
|
src/main/java/forge/deck/io/CubeSerializer.java -text
|
||||||
src/main/java/forge/deck/io/DeckFileHeader.java -text
|
src/main/java/forge/deck/io/DeckFileHeader.java -text
|
||||||
src/main/java/forge/deck/io/DeckIOCore.java -text
|
|
||||||
src/main/java/forge/deck/io/DeckSerializer.java -text
|
src/main/java/forge/deck/io/DeckSerializer.java -text
|
||||||
src/main/java/forge/deck/io/DeckSerializerBase.java -text
|
src/main/java/forge/deck/io/DeckSerializerBase.java -text
|
||||||
src/main/java/forge/deck/io/DeckSetSerializer.java -text
|
src/main/java/forge/deck/io/DeckSetSerializer.java -text
|
||||||
src/main/java/forge/deck/io/IDeckReader.java -text
|
|
||||||
src/main/java/forge/deck/io/IDeckSerializer.java -text
|
|
||||||
src/main/java/forge/deck/package-info.java svneol=native#text/plain
|
src/main/java/forge/deck/package-info.java svneol=native#text/plain
|
||||||
src/main/java/forge/error/BugzReporter.java svneol=native#text/plain
|
src/main/java/forge/error/BugzReporter.java svneol=native#text/plain
|
||||||
src/main/java/forge/error/ErrorViewer.java svneol=native#text/plain
|
src/main/java/forge/error/ErrorViewer.java svneol=native#text/plain
|
||||||
@@ -11295,7 +11288,6 @@ src/main/java/forge/item/BoosterPack.java -text
|
|||||||
src/main/java/forge/item/CardDb.java -text
|
src/main/java/forge/item/CardDb.java -text
|
||||||
src/main/java/forge/item/CardPrinted.java -text
|
src/main/java/forge/item/CardPrinted.java -text
|
||||||
src/main/java/forge/item/CardPrintedCharacteristics.java -text
|
src/main/java/forge/item/CardPrintedCharacteristics.java -text
|
||||||
src/main/java/forge/item/IHasName.java -text
|
|
||||||
src/main/java/forge/item/InventoryItem.java -text
|
src/main/java/forge/item/InventoryItem.java -text
|
||||||
src/main/java/forge/item/InventoryItemFromSet.java -text
|
src/main/java/forge/item/InventoryItemFromSet.java -text
|
||||||
src/main/java/forge/item/ItemPool.java -text
|
src/main/java/forge/item/ItemPool.java -text
|
||||||
@@ -11355,7 +11347,14 @@ src/main/java/forge/util/Base64Coder.java svneol=native#text/plain
|
|||||||
src/main/java/forge/util/CopyFiles.java svneol=native#text/plain
|
src/main/java/forge/util/CopyFiles.java svneol=native#text/plain
|
||||||
src/main/java/forge/util/FileFinder.java svneol=native#text/plain
|
src/main/java/forge/util/FileFinder.java svneol=native#text/plain
|
||||||
src/main/java/forge/util/FileUtil.java svneol=native#text/plain
|
src/main/java/forge/util/FileUtil.java svneol=native#text/plain
|
||||||
|
src/main/java/forge/util/FolderMap.java svneol=native#text/plain
|
||||||
|
src/main/java/forge/util/FolderMapView.java -text
|
||||||
src/main/java/forge/util/HttpUtil.java svneol=native#text/plain
|
src/main/java/forge/util/HttpUtil.java svneol=native#text/plain
|
||||||
|
src/main/java/forge/util/IFolderMap.java -text
|
||||||
|
src/main/java/forge/util/IFolderMapView.java -text
|
||||||
|
src/main/java/forge/util/IHasName.java -text
|
||||||
|
src/main/java/forge/util/IItemReader.java -text
|
||||||
|
src/main/java/forge/util/IItemSerializer.java -text
|
||||||
src/main/java/forge/util/MyRandom.java svneol=native#text/plain
|
src/main/java/forge/util/MyRandom.java svneol=native#text/plain
|
||||||
src/main/java/forge/util/SectionUtil.java -text
|
src/main/java/forge/util/SectionUtil.java -text
|
||||||
src/main/java/forge/util/package-info.java -text
|
src/main/java/forge/util/package-info.java -text
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ import java.io.File;
|
|||||||
import forge.deck.io.CubeSerializer;
|
import forge.deck.io.CubeSerializer;
|
||||||
import forge.deck.io.DeckSerializer;
|
import forge.deck.io.DeckSerializer;
|
||||||
import forge.deck.io.DeckSetSerializer;
|
import forge.deck.io.DeckSetSerializer;
|
||||||
|
import forge.util.FolderMap;
|
||||||
|
import forge.util.IFolderMap;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -17,11 +17,27 @@
|
|||||||
*/
|
*/
|
||||||
package forge.deck;
|
package forge.deck;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Map.Entry;
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
|
import forge.deck.io.DeckFileHeader;
|
||||||
|
import forge.deck.io.DeckSerializer;
|
||||||
|
import forge.gui.deckeditor.elements.TableSorter;
|
||||||
import forge.item.CardPrinted;
|
import forge.item.CardPrinted;
|
||||||
import forge.item.IHasName;
|
|
||||||
import forge.item.ItemPoolView;
|
import forge.item.ItemPoolView;
|
||||||
|
import forge.util.FileUtil;
|
||||||
|
import forge.util.IHasName;
|
||||||
|
import forge.util.SectionUtil;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
@@ -121,4 +137,110 @@ public class Deck extends DeckBase implements Serializable, IHasName {
|
|||||||
protected DeckBase newInstance(String name0) {
|
protected DeckBase newInstance(String name0) {
|
||||||
return new Deck(name0);
|
return new Deck(name0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static Deck fromFile(final File deckFile) {
|
||||||
|
return fromLines(FileUtil.readFile(deckFile));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Deck fromLines(final List<String> deckFileLines) {
|
||||||
|
return Deck.fromSections(SectionUtil.parseSections(deckFileLines));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Deck fromSections(Map<String, List<String>> sections) {
|
||||||
|
if (sections.isEmpty()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
DeckFileHeader dh = DeckSerializer.readDeckMetadata(sections);
|
||||||
|
|
||||||
|
final Deck d = new Deck(dh.getName());
|
||||||
|
d.setComment(dh.getComment());
|
||||||
|
|
||||||
|
d.getMain().set(readCardList(sections.get("main")));
|
||||||
|
d.getSideboard().set(readCardList(sections.get("sideboard")));
|
||||||
|
|
||||||
|
return d;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static List<String> readCardList(final List<String> lines) {
|
||||||
|
final List<String> result = new ArrayList<String>();
|
||||||
|
final Pattern p = Pattern.compile("((\\d+)\\s+)?(.*?)");
|
||||||
|
|
||||||
|
if (lines == null) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
final Iterator<String> lineIterator = lines.iterator();
|
||||||
|
while (lineIterator.hasNext()) {
|
||||||
|
final String line = lineIterator.next();
|
||||||
|
if (line.startsWith("[")) {
|
||||||
|
break;
|
||||||
|
} // there comes another section
|
||||||
|
|
||||||
|
final Matcher m = p.matcher(line.trim());
|
||||||
|
m.matches();
|
||||||
|
final String sCnt = m.group(2);
|
||||||
|
final String cardName = m.group(3);
|
||||||
|
if (StringUtils.isBlank(cardName)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
final int count = sCnt == null ? 1 : Integer.parseInt(sCnt);
|
||||||
|
for (int i = 0; i < count; i++) {
|
||||||
|
result.add(cardName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static List<String> writeCardPool(final ItemPoolView<CardPrinted> pool) {
|
||||||
|
final List<Entry<CardPrinted, Integer>> main2sort = pool.getOrderedList();
|
||||||
|
Collections.sort(main2sort, TableSorter.BY_NAME_THEN_SET);
|
||||||
|
final List<String> out = new ArrayList<String>();
|
||||||
|
for (final Entry<CardPrinted, Integer> e : main2sort) {
|
||||||
|
final CardPrinted card = e.getKey();
|
||||||
|
final boolean hasBadSetInfo = "???".equals(card.getSet()) || StringUtils.isBlank(card.getSet());
|
||||||
|
if (hasBadSetInfo) {
|
||||||
|
out.add(String.format("%d %s", e.getValue(), card.getName()));
|
||||||
|
} else {
|
||||||
|
out.add(String.format("%d %s|%s", e.getValue(), card.getName(), card.getSet()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* writeDeck.
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @param d
|
||||||
|
* a {@link forge.deck.Deck} object.
|
||||||
|
* @param out
|
||||||
|
* a {@link java.io.BufferedWriter} object.
|
||||||
|
* @throws java.io.IOException
|
||||||
|
* if any.
|
||||||
|
*/
|
||||||
|
public List<String> save() {
|
||||||
|
|
||||||
|
|
||||||
|
final List<String> out = new ArrayList<String>();
|
||||||
|
out.add(String.format("[metadata]"));
|
||||||
|
|
||||||
|
out.add(String.format("%s=%s", DeckFileHeader.NAME, getName().replaceAll("\n", "")));
|
||||||
|
// these are optional
|
||||||
|
if (getComment() != null) {
|
||||||
|
out.add(String.format("%s=%s", DeckFileHeader.COMMENT, getComment().replaceAll("\n", "")));
|
||||||
|
}
|
||||||
|
|
||||||
|
out.add(String.format("%s", "[main]"));
|
||||||
|
out.addAll(writeCardPool(getMain()));
|
||||||
|
|
||||||
|
out.add(String.format("%s", "[sideboard]"));
|
||||||
|
out.addAll(writeCardPool(getSideboard()));
|
||||||
|
return out;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,8 +2,8 @@ package forge.deck;
|
|||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import forge.item.CardPrinted;
|
import forge.item.CardPrinted;
|
||||||
import forge.item.IHasName;
|
|
||||||
import forge.item.ItemPoolView;
|
import forge.item.ItemPoolView;
|
||||||
|
import forge.util.IHasName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO: Write javadoc for this type.
|
* TODO: Write javadoc for this type.
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import forge.item.CardPrinted;
|
import forge.item.CardPrinted;
|
||||||
import forge.item.IHasName;
|
|
||||||
import forge.item.ItemPoolView;
|
import forge.item.ItemPoolView;
|
||||||
|
import forge.util.IHasName;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -15,9 +15,10 @@ import org.apache.commons.lang3.tuple.Pair;
|
|||||||
|
|
||||||
import forge.PlayerType;
|
import forge.PlayerType;
|
||||||
import forge.deck.io.DeckFileHeader;
|
import forge.deck.io.DeckFileHeader;
|
||||||
import forge.deck.io.DeckIOCore;
|
import forge.deck.io.DeckSerializer;
|
||||||
import forge.deck.io.DeckSetSerializer;
|
import forge.deck.io.DeckSetSerializer;
|
||||||
import forge.util.FileUtil;
|
import forge.util.FileUtil;
|
||||||
|
import forge.util.IFolderMap;
|
||||||
import forge.util.SectionUtil;
|
import forge.util.SectionUtil;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -85,13 +86,13 @@ public class OldDeckParser {
|
|||||||
for( File f : deckDir.listFiles(bdkFileFilter))
|
for( File f : deckDir.listFiles(bdkFileFilter))
|
||||||
{
|
{
|
||||||
boolean gotError = false;
|
boolean gotError = false;
|
||||||
Deck human = DeckIOCore.readDeck(new File(f, "0.dck"));
|
Deck human = Deck.fromFile(new File(f, "0.dck"));
|
||||||
final DeckSet d = new DeckSet(human.getName());
|
final DeckSet d = new DeckSet(human.getName());
|
||||||
d.setHumanDeck(human);
|
d.setHumanDeck(human);
|
||||||
|
|
||||||
|
|
||||||
for (int i = 1; i < DeckSetSerializer.MAX_DRAFT_PLAYERS; i++) {
|
for (int i = 1; i < DeckSetSerializer.MAX_DRAFT_PLAYERS; i++) {
|
||||||
Deck nextAi = DeckIOCore.readDeck(new File(f, i + ".dck"));
|
Deck nextAi = Deck.fromFile(new File(f, i + ".dck"));
|
||||||
if (nextAi == null) {
|
if (nextAi == null) {
|
||||||
gotError = true;
|
gotError = true;
|
||||||
break;
|
break;
|
||||||
@@ -121,20 +122,20 @@ public class OldDeckParser {
|
|||||||
boolean allowDeleteUnsupportedConstructed = false;
|
boolean allowDeleteUnsupportedConstructed = false;
|
||||||
Map<String, Pair<DeckSet, MutablePair<File,File>>> sealedDecks = new TreeMap<String, Pair<DeckSet, MutablePair<File,File>>>(String.CASE_INSENSITIVE_ORDER);
|
Map<String, Pair<DeckSet, MutablePair<File,File>>> sealedDecks = new TreeMap<String, Pair<DeckSet, MutablePair<File,File>>>(String.CASE_INSENSITIVE_ORDER);
|
||||||
|
|
||||||
for( File f : deckDir.listFiles(DeckIOCore.DCK_FILE_FILTER))
|
for( File f : deckDir.listFiles(DeckSerializer.DCK_FILE_FILTER))
|
||||||
{
|
{
|
||||||
boolean importedOk = false;
|
boolean importedOk = false;
|
||||||
|
|
||||||
List<String> fileLines = FileUtil.readFile(f);
|
List<String> fileLines = FileUtil.readFile(f);
|
||||||
Map<String, List<String>> sections = SectionUtil.parseSections(fileLines);
|
Map<String, List<String>> sections = SectionUtil.parseSections(fileLines);
|
||||||
DeckFileHeader dh = DeckIOCore.readDeckMetadata(sections);
|
DeckFileHeader dh = DeckSerializer.readDeckMetadata(sections);
|
||||||
String name = dh.getName();
|
String name = dh.getName();
|
||||||
if ( dh.isCustomPool() ) { continue; }
|
if ( dh.isCustomPool() ) { continue; }
|
||||||
|
|
||||||
switch(dh.getDeckType()) {
|
switch(dh.getDeckType()) {
|
||||||
case Constructed:
|
case Constructed:
|
||||||
try {
|
try {
|
||||||
constructed.add(DeckIOCore.readDeck(fileLines));
|
constructed.add(Deck.fromLines(fileLines));
|
||||||
importedOk = true;
|
importedOk = true;
|
||||||
} catch( NoSuchElementException ex) {
|
} catch( NoSuchElementException ex) {
|
||||||
if( !allowDeleteUnsupportedConstructed ) {
|
if( !allowDeleteUnsupportedConstructed ) {
|
||||||
@@ -154,7 +155,7 @@ public class OldDeckParser {
|
|||||||
if( null == stored )
|
if( null == stored )
|
||||||
stored = ImmutablePair.of(new DeckSet(name), MutablePair.of((File)null, (File)null));
|
stored = ImmutablePair.of(new DeckSet(name), MutablePair.of((File)null, (File)null));
|
||||||
|
|
||||||
Deck deck = DeckIOCore.readDeck(fileLines);
|
Deck deck = Deck.fromLines(fileLines);
|
||||||
if( isAi ) {
|
if( isAi ) {
|
||||||
stored.getLeft().addAiDeck(deck);
|
stored.getLeft().addAiDeck(deck);
|
||||||
stored.getRight().setRight(f);
|
stored.getRight().setRight(f);
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ public class CubeSerializer extends DeckSerializerBase<CustomLimited> {
|
|||||||
* @return a File
|
* @return a File
|
||||||
*/
|
*/
|
||||||
public File makeFileFor(final CustomLimited deck) {
|
public File makeFileFor(final CustomLimited deck) {
|
||||||
return new File(getDirectory(), DeckIOCore.deriveFileName(cleanDeckName(deck.getName())) + ".cub");
|
return new File(getDirectory(), deriveFileName(cleanDeckName(deck.getName())) + ".cub");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
|
|||||||
@@ -11,9 +11,9 @@ import forge.game.GameType;
|
|||||||
*/
|
*/
|
||||||
public class DeckFileHeader {
|
public class DeckFileHeader {
|
||||||
|
|
||||||
private static final String NAME = "Name";
|
public static final String NAME = "Name";
|
||||||
private static final String DECK_TYPE = "Deck Type";
|
private static final String DECK_TYPE = "Deck Type";
|
||||||
private static final String COMMENT = "Comment";
|
public static final String COMMENT = "Comment";
|
||||||
private static final String PLAYER = "Player";
|
private static final String PLAYER = "Player";
|
||||||
private static final String CSTM_POOL = "Custom Pool";
|
private static final String CSTM_POOL = "Custom Pool";
|
||||||
private static final String PLAYER_TYPE = "PlayerType";
|
private static final String PLAYER_TYPE = "PlayerType";
|
||||||
|
|||||||
@@ -1,241 +0,0 @@
|
|||||||
/*
|
|
||||||
* Forge: Play Magic: the Gathering.
|
|
||||||
* Copyright (C) 2011 Nate
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
package forge.deck.io;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.FilenameFilter;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Map.Entry;
|
|
||||||
import java.util.regex.Matcher;
|
|
||||||
import java.util.regex.Pattern;
|
|
||||||
|
|
||||||
import javax.swing.filechooser.FileFilter;
|
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
|
|
||||||
import forge.deck.Deck;
|
|
||||||
import forge.game.GameType;
|
|
||||||
import forge.gui.deckeditor.elements.TableSorter;
|
|
||||||
import forge.item.CardPrinted;
|
|
||||||
import forge.item.ItemPoolView;
|
|
||||||
import forge.util.FileUtil;
|
|
||||||
import forge.util.SectionUtil;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* TODO: Write javadoc for this type.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class DeckIOCore {
|
|
||||||
|
|
||||||
private static final String NAME = "Name";
|
|
||||||
private static final String DECK_TYPE = "Deck Type";
|
|
||||||
private static final String COMMENT = "Comment";
|
|
||||||
/** Constant <code>DCKFileFilter</code>. */
|
|
||||||
public static final FilenameFilter DCK_FILE_FILTER = new FilenameFilter() {
|
|
||||||
@Override
|
|
||||||
public boolean accept(final File dir, final String name) {
|
|
||||||
return name.endsWith(".dck");
|
|
||||||
}
|
|
||||||
};
|
|
||||||
/** The Constant DCK_FILTER. */
|
|
||||||
public static final FileFilter DCK_FILTER = new FileFilter() {
|
|
||||||
@Override
|
|
||||||
public boolean accept(final File f) {
|
|
||||||
return f.getName().endsWith(".dck") || f.isDirectory();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getDescription() {
|
|
||||||
return "Simple Deck File .dck";
|
|
||||||
}
|
|
||||||
};
|
|
||||||
/** The Constant HTML_FILTER. */
|
|
||||||
public static final FileFilter HTML_FILTER = new FileFilter() {
|
|
||||||
@Override
|
|
||||||
public boolean accept(final File f) {
|
|
||||||
return f.getName().endsWith(".html") || f.isDirectory();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getDescription() {
|
|
||||||
return "Simple Deck File .html";
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
public static DeckFileHeader readDeckMetadata(final Map<String,List<String>> map) {
|
|
||||||
List<String> lines = map.get("metadata");
|
|
||||||
if (lines == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
DeckFileHeader d = new DeckFileHeader(SectionUtil.parseKvPairs(lines, "="));
|
|
||||||
|
|
||||||
|
|
||||||
return d;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Precondition: iterator should point at the first line of cards list
|
|
||||||
public static List<String> readCardList(final Iterable<String> lines) {
|
|
||||||
final List<String> result = new ArrayList<String>();
|
|
||||||
final Pattern p = Pattern.compile("((\\d+)\\s+)?(.*?)");
|
|
||||||
|
|
||||||
if (lines == null) {
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
final Iterator<String> lineIterator = lines.iterator();
|
|
||||||
while (lineIterator.hasNext()) {
|
|
||||||
final String line = lineIterator.next();
|
|
||||||
if (line.startsWith("[")) {
|
|
||||||
break;
|
|
||||||
} // there comes another section
|
|
||||||
|
|
||||||
final Matcher m = p.matcher(line.trim());
|
|
||||||
m.matches();
|
|
||||||
final String sCnt = m.group(2);
|
|
||||||
final String cardName = m.group(3);
|
|
||||||
if (StringUtils.isBlank(cardName)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
final int count = sCnt == null ? 1 : Integer.parseInt(sCnt);
|
|
||||||
for (int i = 0; i < count; i++) {
|
|
||||||
result.add(cardName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String deriveFileName(final String deckName) {
|
|
||||||
// skips all but the listed characters
|
|
||||||
return deckName.replaceAll("[^-_$#@.{[()]} a-zA-Z0-9]", "");
|
|
||||||
}
|
|
||||||
|
|
||||||
// only accepts numbers, letters or dashes up to 20 characters in length
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* Clean deck name.
|
|
||||||
*
|
|
||||||
* @param in
|
|
||||||
* a String
|
|
||||||
* @return a String
|
|
||||||
*/
|
|
||||||
public static String cleanDeckName(final String in) {
|
|
||||||
final char[] c = in.toCharArray();
|
|
||||||
final StringBuilder sb = new StringBuilder();
|
|
||||||
for (int i = 0; (i < c.length) && (i < 20); i++) {
|
|
||||||
if (Character.isLetterOrDigit(c[i]) || (c[i] == '-')) {
|
|
||||||
sb.append(c[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return sb.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static List<String> writeCardPool(final ItemPoolView<CardPrinted> pool) {
|
|
||||||
final List<Entry<CardPrinted, Integer>> main2sort = pool.getOrderedList();
|
|
||||||
Collections.sort(main2sort, TableSorter.BY_NAME_THEN_SET);
|
|
||||||
final List<String> out = new ArrayList<String>();
|
|
||||||
for (final Entry<CardPrinted, Integer> e : main2sort) {
|
|
||||||
final CardPrinted card = e.getKey();
|
|
||||||
final boolean hasBadSetInfo = "???".equals(card.getSet()) || StringUtils.isBlank(card.getSet());
|
|
||||||
if (hasBadSetInfo) {
|
|
||||||
out.add(String.format("%d %s", e.getValue(), card.getName()));
|
|
||||||
} else {
|
|
||||||
out.add(String.format("%d %s|%s", e.getValue(), card.getName(), card.getSet()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return out;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* readDeck.
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @param deckFile
|
|
||||||
* a {@link java.io.File} object.
|
|
||||||
* @return a {@link forge.deck.Deck} object.
|
|
||||||
*/
|
|
||||||
|
|
||||||
public static Deck readDeck(final File deckFile) {
|
|
||||||
return readDeck(FileUtil.readFile(deckFile));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Read deck.
|
|
||||||
*
|
|
||||||
* @param deckFileLines the deck file lines
|
|
||||||
* @return the deck
|
|
||||||
*/
|
|
||||||
public static Deck readDeck(final List<String> deckFileLines) {
|
|
||||||
final Map<String, List<String>> sections = SectionUtil.parseSections(deckFileLines);
|
|
||||||
if (sections.isEmpty()) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
DeckFileHeader dh = readDeckMetadata(sections);
|
|
||||||
|
|
||||||
final Deck d = new Deck(dh.getName());
|
|
||||||
d.setComment(dh.getComment());
|
|
||||||
d.getMain().set(readCardList(sections.get("main")));
|
|
||||||
d.getSideboard().set(readCardList(sections.get("sideboard")));
|
|
||||||
|
|
||||||
return d;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* writeDeck.
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @param d
|
|
||||||
* a {@link forge.deck.Deck} object.
|
|
||||||
* @param out
|
|
||||||
* a {@link java.io.BufferedWriter} object.
|
|
||||||
* @throws java.io.IOException
|
|
||||||
* if any.
|
|
||||||
*/
|
|
||||||
public static List<String> saveDeck(final Deck d) {
|
|
||||||
final List<String> out = new ArrayList<String>();
|
|
||||||
out.add(String.format("[metadata]"));
|
|
||||||
|
|
||||||
out.add(String.format("%s=%s", NAME, d.getName().replaceAll("\n", "")));
|
|
||||||
// these are optional
|
|
||||||
if (d.getComment() != null) {
|
|
||||||
out.add(String.format("%s=%s", COMMENT, d.getComment().replaceAll("\n", "")));
|
|
||||||
}
|
|
||||||
|
|
||||||
out.add(String.format("%s", "[main]"));
|
|
||||||
out.addAll(writeCardPool(d.getMain()));
|
|
||||||
|
|
||||||
out.add(String.format("%s", "[sideboard]"));
|
|
||||||
out.addAll(writeCardPool(d.getSideboard()));
|
|
||||||
return out;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -35,6 +35,7 @@ import forge.Card;
|
|||||||
import forge.deck.Deck;
|
import forge.deck.Deck;
|
||||||
import forge.item.CardPrinted;
|
import forge.item.CardPrinted;
|
||||||
import forge.util.FileUtil;
|
import forge.util.FileUtil;
|
||||||
|
import forge.util.SectionUtil;
|
||||||
import freemarker.template.Configuration;
|
import freemarker.template.Configuration;
|
||||||
import freemarker.template.DefaultObjectWrapper;
|
import freemarker.template.DefaultObjectWrapper;
|
||||||
import freemarker.template.Template;
|
import freemarker.template.Template;
|
||||||
@@ -174,7 +175,7 @@ public class DeckSerializer extends DeckSerializerBase<Deck> {
|
|||||||
* a {@link java.io.File} object.
|
* a {@link java.io.File} object.
|
||||||
*/
|
*/
|
||||||
public static void writeDeck(final Deck d, final File f) {
|
public static void writeDeck(final Deck d, final File f) {
|
||||||
FileUtil.writeFile(f, DeckIOCore.saveDeck(d));
|
FileUtil.writeFile(f, d.save());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -203,7 +204,7 @@ public class DeckSerializer extends DeckSerializerBase<Deck> {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void save(Deck unit) {
|
public void save(Deck unit) {
|
||||||
FileUtil.writeFile(makeFileFor(unit), DeckIOCore.saveDeck(unit));
|
FileUtil.writeFile(makeFileFor(unit), unit.save());
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
@@ -211,10 +212,9 @@ public class DeckSerializer extends DeckSerializerBase<Deck> {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void erase(Deck unit) {
|
public void erase(Deck unit) {
|
||||||
|
makeFileFor(unit).delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* Make file name.
|
* Make file name.
|
||||||
@@ -226,7 +226,7 @@ public class DeckSerializer extends DeckSerializerBase<Deck> {
|
|||||||
* @return a File
|
* @return a File
|
||||||
*/
|
*/
|
||||||
public File makeFileFor(final Deck deck) {
|
public File makeFileFor(final Deck deck) {
|
||||||
return new File(getDirectory(), DeckIOCore.deriveFileName(cleanDeckName(deck.getName())) + ".dck");
|
return new File(getDirectory(), deriveFileName(cleanDeckName(deck.getName())) + ".dck");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
@@ -234,7 +234,7 @@ public class DeckSerializer extends DeckSerializerBase<Deck> {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
protected Deck read(File file) {
|
protected Deck read(File file) {
|
||||||
return DeckIOCore.readDeck(file);
|
return Deck.fromFile(file);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
@@ -245,4 +245,15 @@ public class DeckSerializer extends DeckSerializerBase<Deck> {
|
|||||||
return DCK_FILE_FILTER;
|
return DCK_FILE_FILTER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static DeckFileHeader readDeckMetadata(final Map<String,List<String>> map) {
|
||||||
|
List<String> lines = map.get("metadata");
|
||||||
|
if (lines == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
DeckFileHeader d = new DeckFileHeader(SectionUtil.parseKvPairs(lines, "="));
|
||||||
|
|
||||||
|
|
||||||
|
return d;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,13 +31,14 @@ import javax.swing.JOptionPane;
|
|||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
import forge.error.ErrorViewer;
|
import forge.error.ErrorViewer;
|
||||||
import forge.item.IHasName;
|
import forge.util.IHasName;
|
||||||
|
import forge.util.IItemSerializer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO: Write javadoc for this type.
|
* TODO: Write javadoc for this type.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public abstract class DeckSerializerBase<T extends IHasName> implements IDeckSerializer<T> {
|
public abstract class DeckSerializerBase<T extends IHasName> implements IItemSerializer<T> {
|
||||||
|
|
||||||
private final File directory;
|
private final File directory;
|
||||||
|
|
||||||
@@ -68,6 +69,10 @@ public abstract class DeckSerializerBase<T extends IHasName> implements IDeckSer
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String deriveFileName(final String deckName) {
|
||||||
|
// skips all but the listed characters
|
||||||
|
return deckName.replaceAll("[^-_$#@.{[()]} a-zA-Z0-9]", "");
|
||||||
|
}
|
||||||
|
|
||||||
// only accepts numbers, letters or dashes up to 20 characters in length
|
// only accepts numbers, letters or dashes up to 20 characters in length
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -50,16 +50,16 @@ public class DeckSetSerializer extends DeckSerializerBase<DeckSet> {
|
|||||||
public void save(DeckSet unit) {
|
public void save(DeckSet unit) {
|
||||||
final File f = makeFileFor(unit);
|
final File f = makeFileFor(unit);
|
||||||
f.mkdir();
|
f.mkdir();
|
||||||
FileUtil.writeFile(new File(f, "human.dck"), DeckIOCore.saveDeck(unit.getHumanDeck()));
|
FileUtil.writeFile(new File(f, "human.dck"), unit.getHumanDeck().save());
|
||||||
List<Deck> aiDecks = unit.getAiDecks();
|
List<Deck> aiDecks = unit.getAiDecks();
|
||||||
for (int i = 1; i <= aiDecks.size(); i++) {
|
for (int i = 1; i <= aiDecks.size(); i++) {
|
||||||
FileUtil.writeFile(new File(f, "ai-" + i + ".dck"), DeckIOCore.saveDeck(aiDecks.get(i-1)));
|
FileUtil.writeFile(new File(f, "ai-" + i + ".dck"), aiDecks.get(i-1).save());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected final DeckSet read(File file)
|
protected final DeckSet read(File file)
|
||||||
{
|
{
|
||||||
Deck human = DeckIOCore.readDeck(new File(file, "human.dck"));
|
Deck human = Deck.fromFile(new File(file, "human.dck"));
|
||||||
final DeckSet d = new DeckSet(human.getName());
|
final DeckSet d = new DeckSet(human.getName());
|
||||||
d.setHumanDeck(human);
|
d.setHumanDeck(human);
|
||||||
for (int i = 1; i < MAX_DRAFT_PLAYERS; i++) {
|
for (int i = 1; i < MAX_DRAFT_PLAYERS; i++) {
|
||||||
@@ -67,7 +67,7 @@ public class DeckSetSerializer extends DeckSerializerBase<DeckSet> {
|
|||||||
if( !theFile.exists() )
|
if( !theFile.exists() )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
d.addAiDeck(DeckIOCore.readDeck(theFile));
|
d.addAiDeck(Deck.fromFile(theFile));
|
||||||
}
|
}
|
||||||
return d;
|
return d;
|
||||||
}
|
}
|
||||||
@@ -87,7 +87,7 @@ public class DeckSetSerializer extends DeckSerializerBase<DeckSet> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public File makeFileFor(final DeckSet decks) {
|
public File makeFileFor(final DeckSet decks) {
|
||||||
return new File(getDirectory(), DeckIOCore.deriveFileName(decks.getName()));
|
return new File(getDirectory(), deriveFileName(cleanDeckName(decks.getName())));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
|
|||||||
@@ -1,12 +0,0 @@
|
|||||||
package forge.deck.io;
|
|
||||||
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import forge.item.IHasName;
|
|
||||||
|
|
||||||
|
|
||||||
public interface IDeckReader<T extends IHasName> {
|
|
||||||
Map<String, T> readAll();
|
|
||||||
//T read(File file);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
package forge.deck.io;
|
|
||||||
|
|
||||||
import forge.item.IHasName;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* TODO: Write javadoc for this type.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public interface IDeckSerializer<T extends IHasName> extends IDeckReader<T> {
|
|
||||||
void save(T unit);
|
|
||||||
void erase(T unit);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@@ -40,7 +40,6 @@ import net.slightlymagic.maxmtg.Predicate;
|
|||||||
import forge.Command;
|
import forge.Command;
|
||||||
import forge.deck.Deck;
|
import forge.deck.Deck;
|
||||||
import forge.deck.DeckSet;
|
import forge.deck.DeckSet;
|
||||||
import forge.deck.IFolderMap;
|
|
||||||
import forge.error.ErrorViewer;
|
import forge.error.ErrorViewer;
|
||||||
import forge.gui.deckeditor.elements.CardPanelHeavy;
|
import forge.gui.deckeditor.elements.CardPanelHeavy;
|
||||||
import forge.gui.deckeditor.elements.FilterCheckBoxes;
|
import forge.gui.deckeditor.elements.FilterCheckBoxes;
|
||||||
@@ -50,6 +49,7 @@ import forge.gui.deckeditor.elements.TableColumnInfo;
|
|||||||
import forge.gui.deckeditor.elements.TableView;
|
import forge.gui.deckeditor.elements.TableView;
|
||||||
import forge.item.CardPrinted;
|
import forge.item.CardPrinted;
|
||||||
import forge.item.InventoryItem;
|
import forge.item.InventoryItem;
|
||||||
|
import forge.util.IFolderMap;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
|
|||||||
@@ -27,8 +27,6 @@ import java.awt.event.WindowAdapter;
|
|||||||
import java.awt.event.WindowEvent;
|
import java.awt.event.WindowEvent;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map.Entry;
|
|
||||||
|
|
||||||
import javax.swing.JButton;
|
import javax.swing.JButton;
|
||||||
import javax.swing.JCheckBox;
|
import javax.swing.JCheckBox;
|
||||||
|
|
||||||
|
|||||||
@@ -7,8 +7,7 @@ import net.slightlymagic.braids.util.lambda.Lambda0;
|
|||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
import forge.deck.DeckBase;
|
import forge.deck.DeckBase;
|
||||||
import forge.deck.FolderMap;
|
import forge.util.IFolderMap;
|
||||||
import forge.deck.IFolderMap;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO: Write javadoc for this type.
|
* TODO: Write javadoc for this type.
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ import java.util.Map;
|
|||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
import forge.deck.Deck;
|
import forge.deck.Deck;
|
||||||
import forge.item.CardPrinted;
|
|
||||||
import forge.quest.data.QuestData;
|
import forge.quest.data.QuestData;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package forge.gui.deckeditor;
|
package forge.gui.deckeditor;
|
||||||
|
|
||||||
import java.awt.Component;
|
import java.awt.Component;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -31,7 +31,6 @@ import org.apache.commons.lang3.StringUtils;
|
|||||||
|
|
||||||
import forge.Command;
|
import forge.Command;
|
||||||
import forge.deck.DeckBase;
|
import forge.deck.DeckBase;
|
||||||
import forge.deck.io.DeckIOCore;
|
|
||||||
import forge.error.ErrorViewer;
|
import forge.error.ErrorViewer;
|
||||||
import forge.gui.GuiUtils;
|
import forge.gui.GuiUtils;
|
||||||
|
|
||||||
@@ -201,7 +200,7 @@ public class MenuBase<T extends DeckBase> extends JMenuBar {
|
|||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
final String deckName = DeckIOCore.cleanDeckName(o.toString());
|
final String deckName = o.toString();
|
||||||
final boolean isGoodName = controller.isGoodName(deckName);
|
final boolean isGoodName = controller.isGoodName(deckName);
|
||||||
|
|
||||||
if (isGoodName) {
|
if (isGoodName) {
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ import forge.CardList;
|
|||||||
import forge.Command;
|
import forge.Command;
|
||||||
import forge.deck.Deck;
|
import forge.deck.Deck;
|
||||||
import forge.deck.generate.GenerateConstructedDeck;
|
import forge.deck.generate.GenerateConstructedDeck;
|
||||||
import forge.deck.io.DeckIOCore;
|
|
||||||
import forge.deck.io.DeckSerializer;
|
import forge.deck.io.DeckSerializer;
|
||||||
import forge.error.ErrorViewer;
|
import forge.error.ErrorViewer;
|
||||||
|
|
||||||
@@ -120,7 +119,7 @@ public final class MenuCommon extends MenuBase<Deck> {
|
|||||||
if (file == null) {
|
if (file == null) {
|
||||||
} else if (file.getName().endsWith(".dck")) {
|
} else if (file.getName().endsWith(".dck")) {
|
||||||
try {
|
try {
|
||||||
getController().setModel(DeckIOCore.readDeck(file));
|
getController().setModel(Deck.fromFile(file));
|
||||||
|
|
||||||
} catch (final Exception ex) {
|
} catch (final Exception ex) {
|
||||||
ErrorViewer.showError(ex);
|
ErrorViewer.showError(ex);
|
||||||
|
|||||||
@@ -31,7 +31,6 @@ import javax.swing.JMenuItem;
|
|||||||
import forge.Command;
|
import forge.Command;
|
||||||
import forge.Constant;
|
import forge.Constant;
|
||||||
import forge.deck.Deck;
|
import forge.deck.Deck;
|
||||||
import forge.deck.io.DeckIOCore;
|
|
||||||
import forge.deck.io.DeckSerializer;
|
import forge.deck.io.DeckSerializer;
|
||||||
import forge.error.ErrorViewer;
|
import forge.error.ErrorViewer;
|
||||||
import forge.gui.ListChooser;
|
import forge.gui.ListChooser;
|
||||||
@@ -85,7 +84,7 @@ public class MenuQuest extends MenuBase<Deck> {
|
|||||||
|
|
||||||
if (file != null && file.getName().endsWith(".dck")) {
|
if (file != null && file.getName().endsWith(".dck")) {
|
||||||
try {
|
try {
|
||||||
final Deck newDeck = DeckIOCore.readDeck(file);
|
final Deck newDeck = Deck.fromFile(file);
|
||||||
getController().importDeck(newDeck);
|
getController().importDeck(newDeck);
|
||||||
|
|
||||||
} catch (final Exception ex) {
|
} catch (final Exception ex) {
|
||||||
@@ -106,7 +105,7 @@ public class MenuQuest extends MenuBase<Deck> {
|
|||||||
private final File getImportFilename() {
|
private final File getImportFilename() {
|
||||||
final JFileChooser chooser = new JFileChooser(MenuQuest.previousDirectory);
|
final JFileChooser chooser = new JFileChooser(MenuQuest.previousDirectory);
|
||||||
|
|
||||||
chooser.addChoosableFileFilter(DeckIOCore.DCK_FILTER);
|
chooser.addChoosableFileFilter(DeckSerializer.DCK_FILTER);
|
||||||
final int returnVal = chooser.showOpenDialog(null);
|
final int returnVal = chooser.showOpenDialog(null);
|
||||||
|
|
||||||
if (returnVal == JFileChooser.APPROVE_OPTION) {
|
if (returnVal == JFileChooser.APPROVE_OPTION) {
|
||||||
|
|||||||
@@ -17,6 +17,8 @@
|
|||||||
*/
|
*/
|
||||||
package forge.item;
|
package forge.item;
|
||||||
|
|
||||||
|
import forge.util.IHasName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Interface to define a player's inventory may hold. Should include
|
* Interface to define a player's inventory may hold. Should include
|
||||||
* CardPrinted, Booster, Pets, Plants... etc
|
* CardPrinted, Booster, Pets, Plants... etc
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ import java.util.Map;
|
|||||||
|
|
||||||
import forge.SetUtils;
|
import forge.SetUtils;
|
||||||
import forge.deck.Deck;
|
import forge.deck.Deck;
|
||||||
import forge.deck.io.DeckIOCore;
|
|
||||||
import forge.quest.SellRules;
|
import forge.quest.SellRules;
|
||||||
import forge.util.FileUtil;
|
import forge.util.FileUtil;
|
||||||
import forge.util.SectionUtil;
|
import forge.util.SectionUtil;
|
||||||
@@ -80,7 +79,7 @@ public class PreconDeck implements InventoryItemFromSet {
|
|||||||
public PreconDeck(final File f) {
|
public PreconDeck(final File f) {
|
||||||
final List<String> deckLines = FileUtil.readFile(f);
|
final List<String> deckLines = FileUtil.readFile(f);
|
||||||
final Map<String, List<String>> sections = SectionUtil.parseSections(deckLines);
|
final Map<String, List<String>> sections = SectionUtil.parseSections(deckLines);
|
||||||
this.deck = DeckIOCore.readDeck(deckLines);
|
this.deck = Deck.fromLines(deckLines);
|
||||||
|
|
||||||
String filenameProxy = null;
|
String filenameProxy = null;
|
||||||
String setProxy = "n/a";
|
String setProxy = "n/a";
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ import java.util.Random;
|
|||||||
|
|
||||||
import forge.AllZone;
|
import forge.AllZone;
|
||||||
import forge.Singletons;
|
import forge.Singletons;
|
||||||
import forge.deck.io.DeckIOCore;
|
import forge.deck.Deck;
|
||||||
import forge.deck.io.DeckSerializer;
|
import forge.deck.io.DeckSerializer;
|
||||||
import forge.properties.ForgeProps;
|
import forge.properties.ForgeProps;
|
||||||
import forge.properties.NewConstants;
|
import forge.properties.NewConstants;
|
||||||
@@ -99,7 +99,7 @@ public class QuestEventManager {
|
|||||||
|
|
||||||
// Assemble metadata (may not be necessary later) and deck object.
|
// Assemble metadata (may not be necessary later) and deck object.
|
||||||
this.assembleEventMetadata(contents, tempEvent);
|
this.assembleEventMetadata(contents, tempEvent);
|
||||||
tempEvent.setEventDeck(DeckIOCore.readDeck(contents));
|
tempEvent.setEventDeck(Deck.fromLines(contents));
|
||||||
} // End for(allFiles)
|
} // End for(allFiles)
|
||||||
|
|
||||||
this.assembleDuelDifficultyLists();
|
this.assembleDuelDifficultyLists();
|
||||||
|
|||||||
@@ -15,10 +15,8 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
package forge.deck;
|
package forge.util;
|
||||||
|
|
||||||
import forge.deck.io.IDeckSerializer;
|
|
||||||
import forge.item.IHasName;
|
|
||||||
|
|
||||||
//reads and writeDeck Deck objects
|
//reads and writeDeck Deck objects
|
||||||
/**
|
/**
|
||||||
@@ -31,7 +29,7 @@ import forge.item.IHasName;
|
|||||||
*/
|
*/
|
||||||
public class FolderMap<T extends IHasName> extends FolderMapView<T> implements IFolderMap<T> {
|
public class FolderMap<T extends IHasName> extends FolderMapView<T> implements IFolderMap<T> {
|
||||||
|
|
||||||
private IDeckSerializer<T> serializer;
|
private IItemSerializer<T> serializer;
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* Constructor for DeckManager.
|
* Constructor for DeckManager.
|
||||||
@@ -40,7 +38,7 @@ public class FolderMap<T extends IHasName> extends FolderMapView<T> implements I
|
|||||||
* @param deckDir
|
* @param deckDir
|
||||||
* a {@link java.io.File} object.
|
* a {@link java.io.File} object.
|
||||||
*/
|
*/
|
||||||
public FolderMap(IDeckSerializer<T> io ) {
|
public FolderMap(IItemSerializer<T> io ) {
|
||||||
super(io);
|
super(io);
|
||||||
serializer = io;
|
serializer = io;
|
||||||
}
|
}
|
||||||
@@ -15,15 +15,13 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
package forge.deck;
|
package forge.util;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import forge.deck.io.IDeckReader;
|
|
||||||
import forge.item.IHasName;
|
|
||||||
|
|
||||||
//reads and writeDeck Deck objects
|
//reads and writeDeck Deck objects
|
||||||
/**
|
/**
|
||||||
@@ -45,7 +43,7 @@ public class FolderMapView<T extends IHasName> implements Iterable<T>, IFolderMa
|
|||||||
* @param deckDir
|
* @param deckDir
|
||||||
* a {@link java.io.File} object.
|
* a {@link java.io.File} object.
|
||||||
*/
|
*/
|
||||||
public FolderMapView(IDeckReader<T> io ) {
|
public FolderMapView(IItemReader<T> io ) {
|
||||||
this.map = io.readAll();
|
this.map = io.readAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
package forge.deck;
|
package forge.util;
|
||||||
|
|
||||||
import forge.item.IHasName;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO: Write javadoc for this type.
|
* TODO: Write javadoc for this type.
|
||||||
@@ -1,9 +1,7 @@
|
|||||||
package forge.deck;
|
package forge.util;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Iterator;
|
|
||||||
|
|
||||||
import forge.item.IHasName;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO: Write javadoc for this type.
|
* TODO: Write javadoc for this type.
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package forge.item;
|
package forge.util;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO: Write javadoc for this type.
|
* TODO: Write javadoc for this type.
|
||||||
11
src/main/java/forge/util/IItemReader.java
Normal file
11
src/main/java/forge/util/IItemReader.java
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
package forge.util;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public interface IItemReader<T extends IHasName> {
|
||||||
|
Map<String, T> readAll();
|
||||||
|
//T read(File file);
|
||||||
|
}
|
||||||
|
|
||||||
14
src/main/java/forge/util/IItemSerializer.java
Normal file
14
src/main/java/forge/util/IItemSerializer.java
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
package forge.util;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TODO: Write javadoc for this type.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public interface IItemSerializer<T extends IHasName> extends IItemReader<T> {
|
||||||
|
void save(T unit);
|
||||||
|
void erase(T unit);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user