From 56be582db46ee319850418820a82750c7bf6b16c Mon Sep 17 00:00:00 2001 From: drdev Date: Mon, 21 Mar 2016 05:00:39 +0000 Subject: [PATCH] Fix issue with saving data.xml file for conquests with a space in the name on Android device --- .../java/forge/planarconquest/ConquestData.java | 13 ++++++------- forge-gui/src/main/java/forge/util/XmlReader.java | 4 ++-- forge-gui/src/main/java/forge/util/XmlUtil.java | 7 +++++-- forge-gui/src/main/java/forge/util/XmlWriter.java | 9 +++++---- 4 files changed, 18 insertions(+), 15 deletions(-) diff --git a/forge-gui/src/main/java/forge/planarconquest/ConquestData.java b/forge-gui/src/main/java/forge/planarconquest/ConquestData.java index 03255c1d4aa..c1324dfbd1b 100644 --- a/forge-gui/src/main/java/forge/planarconquest/ConquestData.java +++ b/forge-gui/src/main/java/forge/planarconquest/ConquestData.java @@ -45,7 +45,7 @@ import java.util.Map.Entry; import com.google.common.base.Function; public final class ConquestData { - private static final String XML_FILE = "data.xml"; + private static final String XML_FILENAME = "data.xml"; private String name; private PaperCard planeswalker; @@ -55,8 +55,7 @@ public final class ConquestData { private int aetherShards; private int planeswalkEmblems; - private final File directory; - private final String xmlFilename; + private final File directory, xmlFile; private final ConquestRecord chaosBattleRecord; private final Map planeDataMap = new HashMap(); private final HashSet unlockedCards = new HashSet(); @@ -67,7 +66,7 @@ public final class ConquestData { public ConquestData(String name0, ConquestPlane startingPlane0, PaperCard startingPlaneswalker0, PaperCard startingCommander0) { name = name0; directory = new File(ForgeConstants.CONQUEST_SAVE_DIR, name); - xmlFilename = directory.getPath() + ForgeConstants.PATH_SEPARATOR + XML_FILE; + xmlFile = new File(directory, XML_FILENAME); aetherShards = FModel.getConquestPreferences().getPrefInt(CQPref.AETHER_START_SHARDS); currentLocation = new ConquestLocation(startingPlane0, 0, 0, 0); unlockPlane(startingPlane0); @@ -89,11 +88,11 @@ public final class ConquestData { public ConquestData(File directory0) { name = directory0.getName(); directory = directory0; - xmlFilename = directory.getPath() + ForgeConstants.PATH_SEPARATOR + XML_FILE; + xmlFile = new File(directory, XML_FILENAME); ConquestRecord chaosBattleRecord0 = null; try { - XmlReader xml = new XmlReader(xmlFilename); + XmlReader xml = new XmlReader(xmlFile); CardDb cardDb = FModel.getMagicDb().getCommonCards(); setPlaneswalker(xml.read("planeswalker", cardDb)); aetherShards = xml.read("aetherShards", aetherShards); @@ -120,7 +119,7 @@ public final class ConquestData { FileUtil.ensureDirectoryExists(directory); try { - XmlWriter xml = new XmlWriter(xmlFilename, "data"); + XmlWriter xml = new XmlWriter(xmlFile, "data"); xml.write("planeswalker", planeswalker); xml.write("aetherShards", aetherShards); xml.write("planeswalkEmblems", planeswalkEmblems); diff --git a/forge-gui/src/main/java/forge/util/XmlReader.java b/forge-gui/src/main/java/forge/util/XmlReader.java index 6a8361d1ce0..b9e01fd4548 100644 --- a/forge-gui/src/main/java/forge/util/XmlReader.java +++ b/forge-gui/src/main/java/forge/util/XmlReader.java @@ -20,9 +20,9 @@ import forge.util.XmlWriter.IXmlWritable; public class XmlReader { private Element currentElement; - public XmlReader(String filename0) throws Exception { + public XmlReader(File file0) throws Exception { DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); - final Document document = builder.parse(new File(filename0)); + final Document document = builder.parse(file0); currentElement = (Element)document.getFirstChild(); } diff --git a/forge-gui/src/main/java/forge/util/XmlUtil.java b/forge-gui/src/main/java/forge/util/XmlUtil.java index 6add7d56747..e8f64189373 100644 --- a/forge-gui/src/main/java/forge/util/XmlUtil.java +++ b/forge-gui/src/main/java/forge/util/XmlUtil.java @@ -47,13 +47,16 @@ public class XmlUtil { return sw.toString(); } - public static void saveDocument(final Document document, String filename) throws TransformerException { + public static void saveDocument(final Document document, final String filename) throws TransformerException { + saveDocument(document, new File(filename)); + } + public static void saveDocument(final Document document, final File file) throws TransformerException { Transformer t = TransformerFactory.newInstance().newTransformer(); t.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); t.setOutputProperty(OutputKeys.INDENT, "yes"); t.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4"); DOMSource source = new DOMSource(document); - StreamResult result = new StreamResult(new File(filename)); + StreamResult result = new StreamResult(file); t.transform(source, result); } diff --git a/forge-gui/src/main/java/forge/util/XmlWriter.java b/forge-gui/src/main/java/forge/util/XmlWriter.java index b8e955cd53b..8146650bbb0 100644 --- a/forge-gui/src/main/java/forge/util/XmlWriter.java +++ b/forge-gui/src/main/java/forge/util/XmlWriter.java @@ -1,5 +1,6 @@ package forge.util; +import java.io.File; import java.util.EnumMap; import java.util.HashSet; import java.util.Map; @@ -16,17 +17,17 @@ import forge.item.PaperCard; public class XmlWriter { private final Document document; - private final String filename; + private final File file; private final Stack parentElements = new Stack(); private Element currentElement; - public XmlWriter(String filename0, String rootName0) throws Exception { + public XmlWriter(File file0, String rootName0) throws Exception { DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); document = builder.newDocument(); currentElement = document.createElement(rootName0); document.appendChild(currentElement); - filename = filename0; + file = file0; } public void startElement(String name0) { @@ -109,7 +110,7 @@ public class XmlWriter { } public void close() throws Exception { - XmlUtil.saveDocument(document, filename); + XmlUtil.saveDocument(document, file); } public interface IXmlWritable {