DeckIOCore.java removed, moved non-game related classes to util

This commit is contained in:
Maxmtg
2012-02-17 23:33:53 +00:00
parent b90ef917d9
commit ec2c5ec37c
32 changed files with 219 additions and 336 deletions

15
.gitattributes vendored
View File

@@ -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/DeckSection.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/generate/DeckGenerator.java -text
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/io/CubeSerializer.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/DeckSerializerBase.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/error/BugzReporter.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/CardPrinted.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/InventoryItemFromSet.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/FileFinder.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/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/SectionUtil.java -text
src/main/java/forge/util/package-info.java -text

View File

@@ -5,6 +5,8 @@ import java.io.File;
import forge.deck.io.CubeSerializer;
import forge.deck.io.DeckSerializer;
import forge.deck.io.DeckSetSerializer;
import forge.util.FolderMap;
import forge.util.IFolderMap;
/**

View File

@@ -17,11 +17,27 @@
*/
package forge.deck;
import java.io.File;
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.IHasName;
import forge.item.ItemPoolView;
import forge.util.FileUtil;
import forge.util.IHasName;
import forge.util.SectionUtil;
/**
* <p>
@@ -121,4 +137,110 @@ public class Deck extends DeckBase implements Serializable, IHasName {
protected DeckBase newInstance(String 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;
}
}

View File

@@ -2,8 +2,8 @@ package forge.deck;
import java.io.Serializable;
import forge.item.CardPrinted;
import forge.item.IHasName;
import forge.item.ItemPoolView;
import forge.util.IHasName;
/**
* TODO: Write javadoc for this type.

View File

@@ -4,8 +4,8 @@ import java.util.ArrayList;
import java.util.List;
import forge.item.CardPrinted;
import forge.item.IHasName;
import forge.item.ItemPoolView;
import forge.util.IHasName;
/**

View File

@@ -15,9 +15,10 @@ import org.apache.commons.lang3.tuple.Pair;
import forge.PlayerType;
import forge.deck.io.DeckFileHeader;
import forge.deck.io.DeckIOCore;
import forge.deck.io.DeckSerializer;
import forge.deck.io.DeckSetSerializer;
import forge.util.FileUtil;
import forge.util.IFolderMap;
import forge.util.SectionUtil;
/**
@@ -85,13 +86,13 @@ public class OldDeckParser {
for( File f : deckDir.listFiles(bdkFileFilter))
{
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());
d.setHumanDeck(human);
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) {
gotError = true;
break;
@@ -121,20 +122,20 @@ public class OldDeckParser {
boolean allowDeleteUnsupportedConstructed = false;
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;
List<String> fileLines = FileUtil.readFile(f);
Map<String, List<String>> sections = SectionUtil.parseSections(fileLines);
DeckFileHeader dh = DeckIOCore.readDeckMetadata(sections);
DeckFileHeader dh = DeckSerializer.readDeckMetadata(sections);
String name = dh.getName();
if ( dh.isCustomPool() ) { continue; }
switch(dh.getDeckType()) {
case Constructed:
try {
constructed.add(DeckIOCore.readDeck(fileLines));
constructed.add(Deck.fromLines(fileLines));
importedOk = true;
} catch( NoSuchElementException ex) {
if( !allowDeleteUnsupportedConstructed ) {
@@ -154,7 +155,7 @@ public class OldDeckParser {
if( null == stored )
stored = ImmutablePair.of(new DeckSet(name), MutablePair.of((File)null, (File)null));
Deck deck = DeckIOCore.readDeck(fileLines);
Deck deck = Deck.fromLines(fileLines);
if( isAi ) {
stored.getLeft().addAiDeck(deck);
stored.getRight().setRight(f);

View File

@@ -61,7 +61,7 @@ public class CubeSerializer extends DeckSerializerBase<CustomLimited> {
* @return a File
*/
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)

View File

@@ -11,9 +11,9 @@ import forge.game.GameType;
*/
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 COMMENT = "Comment";
public static final String COMMENT = "Comment";
private static final String PLAYER = "Player";
private static final String CSTM_POOL = "Custom Pool";
private static final String PLAYER_TYPE = "PlayerType";

View File

@@ -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;
}
}

View File

@@ -35,6 +35,7 @@ import forge.Card;
import forge.deck.Deck;
import forge.item.CardPrinted;
import forge.util.FileUtil;
import forge.util.SectionUtil;
import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;
@@ -174,7 +175,7 @@ public class DeckSerializer extends DeckSerializerBase<Deck> {
* a {@link java.io.File} object.
*/
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
public void save(Deck unit) {
FileUtil.writeFile(makeFileFor(unit), DeckIOCore.saveDeck(unit));
FileUtil.writeFile(makeFileFor(unit), unit.save());
}
/* (non-Javadoc)
@@ -211,10 +212,9 @@ public class DeckSerializer extends DeckSerializerBase<Deck> {
*/
@Override
public void erase(Deck unit) {
makeFileFor(unit).delete();
}
/**
*
* Make file name.
@@ -226,7 +226,7 @@ public class DeckSerializer extends DeckSerializerBase<Deck> {
* @return a File
*/
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)
@@ -234,7 +234,7 @@ public class DeckSerializer extends DeckSerializerBase<Deck> {
*/
@Override
protected Deck read(File file) {
return DeckIOCore.readDeck(file);
return Deck.fromFile(file);
}
/* (non-Javadoc)
@@ -245,4 +245,15 @@ public class DeckSerializer extends DeckSerializerBase<Deck> {
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;
}
}

View File

@@ -31,13 +31,14 @@ import javax.swing.JOptionPane;
import org.apache.commons.lang3.StringUtils;
import forge.error.ErrorViewer;
import forge.item.IHasName;
import forge.util.IHasName;
import forge.util.IItemSerializer;
/**
* 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;
@@ -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
/**

View File

@@ -50,16 +50,16 @@ public class DeckSetSerializer extends DeckSerializerBase<DeckSet> {
public void save(DeckSet unit) {
final File f = makeFileFor(unit);
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();
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)
{
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());
d.setHumanDeck(human);
for (int i = 1; i < MAX_DRAFT_PLAYERS; i++) {
@@ -67,7 +67,7 @@ public class DeckSetSerializer extends DeckSerializerBase<DeckSet> {
if( !theFile.exists() )
break;
d.addAiDeck(DeckIOCore.readDeck(theFile));
d.addAiDeck(Deck.fromFile(theFile));
}
return d;
}
@@ -87,7 +87,7 @@ public class DeckSetSerializer extends DeckSerializerBase<DeckSet> {
}
public File makeFileFor(final DeckSet decks) {
return new File(getDirectory(), DeckIOCore.deriveFileName(decks.getName()));
return new File(getDirectory(), deriveFileName(cleanDeckName(decks.getName())));
}
/* (non-Javadoc)

View File

@@ -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);
}

View 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);
}

View File

@@ -40,7 +40,6 @@ import net.slightlymagic.maxmtg.Predicate;
import forge.Command;
import forge.deck.Deck;
import forge.deck.DeckSet;
import forge.deck.IFolderMap;
import forge.error.ErrorViewer;
import forge.gui.deckeditor.elements.CardPanelHeavy;
import forge.gui.deckeditor.elements.FilterCheckBoxes;
@@ -50,6 +49,7 @@ import forge.gui.deckeditor.elements.TableColumnInfo;
import forge.gui.deckeditor.elements.TableView;
import forge.item.CardPrinted;
import forge.item.InventoryItem;
import forge.util.IFolderMap;
/**
* <p>

View File

@@ -27,8 +27,6 @@ import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.ArrayList;
import java.util.List;
import java.util.Map.Entry;
import javax.swing.JButton;
import javax.swing.JCheckBox;

View File

@@ -7,8 +7,7 @@ import net.slightlymagic.braids.util.lambda.Lambda0;
import org.apache.commons.lang3.StringUtils;
import forge.deck.DeckBase;
import forge.deck.FolderMap;
import forge.deck.IFolderMap;
import forge.util.IFolderMap;
/**
* TODO: Write javadoc for this type.

View File

@@ -8,7 +8,6 @@ import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import forge.deck.Deck;
import forge.item.CardPrinted;
import forge.quest.data.QuestData;
/**

View File

@@ -1,7 +1,6 @@
package forge.gui.deckeditor;
import java.awt.Component;
import java.util.ArrayList;
import java.util.List;
/**

View File

@@ -31,7 +31,6 @@ import org.apache.commons.lang3.StringUtils;
import forge.Command;
import forge.deck.DeckBase;
import forge.deck.io.DeckIOCore;
import forge.error.ErrorViewer;
import forge.gui.GuiUtils;
@@ -201,7 +200,7 @@ public class MenuBase<T extends DeckBase> extends JMenuBar {
return "";
}
final String deckName = DeckIOCore.cleanDeckName(o.toString());
final String deckName = o.toString();
final boolean isGoodName = controller.isGoodName(deckName);
if (isGoodName) {

View File

@@ -30,7 +30,6 @@ import forge.CardList;
import forge.Command;
import forge.deck.Deck;
import forge.deck.generate.GenerateConstructedDeck;
import forge.deck.io.DeckIOCore;
import forge.deck.io.DeckSerializer;
import forge.error.ErrorViewer;
@@ -120,7 +119,7 @@ public final class MenuCommon extends MenuBase<Deck> {
if (file == null) {
} else if (file.getName().endsWith(".dck")) {
try {
getController().setModel(DeckIOCore.readDeck(file));
getController().setModel(Deck.fromFile(file));
} catch (final Exception ex) {
ErrorViewer.showError(ex);

View File

@@ -31,7 +31,6 @@ import javax.swing.JMenuItem;
import forge.Command;
import forge.Constant;
import forge.deck.Deck;
import forge.deck.io.DeckIOCore;
import forge.deck.io.DeckSerializer;
import forge.error.ErrorViewer;
import forge.gui.ListChooser;
@@ -85,7 +84,7 @@ public class MenuQuest extends MenuBase<Deck> {
if (file != null && file.getName().endsWith(".dck")) {
try {
final Deck newDeck = DeckIOCore.readDeck(file);
final Deck newDeck = Deck.fromFile(file);
getController().importDeck(newDeck);
} catch (final Exception ex) {
@@ -106,7 +105,7 @@ public class MenuQuest extends MenuBase<Deck> {
private final File getImportFilename() {
final JFileChooser chooser = new JFileChooser(MenuQuest.previousDirectory);
chooser.addChoosableFileFilter(DeckIOCore.DCK_FILTER);
chooser.addChoosableFileFilter(DeckSerializer.DCK_FILTER);
final int returnVal = chooser.showOpenDialog(null);
if (returnVal == JFileChooser.APPROVE_OPTION) {

View File

@@ -17,6 +17,8 @@
*/
package forge.item;
import forge.util.IHasName;
/**
* Interface to define a player's inventory may hold. Should include
* CardPrinted, Booster, Pets, Plants... etc

View File

@@ -23,7 +23,6 @@ import java.util.Map;
import forge.SetUtils;
import forge.deck.Deck;
import forge.deck.io.DeckIOCore;
import forge.quest.SellRules;
import forge.util.FileUtil;
import forge.util.SectionUtil;
@@ -80,7 +79,7 @@ public class PreconDeck implements InventoryItemFromSet {
public PreconDeck(final File f) {
final List<String> deckLines = FileUtil.readFile(f);
final Map<String, List<String>> sections = SectionUtil.parseSections(deckLines);
this.deck = DeckIOCore.readDeck(deckLines);
this.deck = Deck.fromLines(deckLines);
String filenameProxy = null;
String setProxy = "n/a";

View File

@@ -25,7 +25,7 @@ import java.util.Random;
import forge.AllZone;
import forge.Singletons;
import forge.deck.io.DeckIOCore;
import forge.deck.Deck;
import forge.deck.io.DeckSerializer;
import forge.properties.ForgeProps;
import forge.properties.NewConstants;
@@ -99,7 +99,7 @@ public class QuestEventManager {
// Assemble metadata (may not be necessary later) and deck object.
this.assembleEventMetadata(contents, tempEvent);
tempEvent.setEventDeck(DeckIOCore.readDeck(contents));
tempEvent.setEventDeck(Deck.fromLines(contents));
} // End for(allFiles)
this.assembleDuelDifficultyLists();

View File

@@ -15,10 +15,8 @@
* 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;
package forge.util;
import forge.deck.io.IDeckSerializer;
import forge.item.IHasName;
//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> {
private IDeckSerializer<T> serializer;
private IItemSerializer<T> serializer;
/**
* <p>
* Constructor for DeckManager.
@@ -40,7 +38,7 @@ public class FolderMap<T extends IHasName> extends FolderMapView<T> implements I
* @param deckDir
* a {@link java.io.File} object.
*/
public FolderMap(IDeckSerializer<T> io ) {
public FolderMap(IItemSerializer<T> io ) {
super(io);
serializer = io;
}

View File

@@ -15,15 +15,13 @@
* 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;
package forge.util;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
import forge.deck.io.IDeckReader;
import forge.item.IHasName;
//reads and writeDeck Deck objects
/**
@@ -45,7 +43,7 @@ public class FolderMapView<T extends IHasName> implements Iterable<T>, IFolderMa
* @param deckDir
* a {@link java.io.File} object.
*/
public FolderMapView(IDeckReader<T> io ) {
public FolderMapView(IItemReader<T> io ) {
this.map = io.readAll();
}

View File

@@ -1,6 +1,5 @@
package forge.deck;
package forge.util;
import forge.item.IHasName;
/**
* TODO: Write javadoc for this type.

View File

@@ -1,9 +1,7 @@
package forge.deck;
package forge.util;
import java.util.Collection;
import java.util.Iterator;
import forge.item.IHasName;
/**
* TODO: Write javadoc for this type.

View File

@@ -1,4 +1,4 @@
package forge.item;
package forge.util;
/**
* TODO: Write javadoc for this type.

View 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);
}

View 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);
}