package com.ganggarrison.gmdec.xml; import org.lateralgm.resources.Include; import com.ganggarrison.easyxml.XmlReader; import com.ganggarrison.easyxml.XmlWriter; import com.ganggarrison.gmdec.DeferredReferenceCreatorNotifier; import com.ganggarrison.gmdec.LgmConst; public class IncludedFileXmlFormat extends XmlFormat<Include> { public enum ExportOption implements LgmConst.Provider { NO_AUTO_EXPORT(0), TEMP_DIRECTORY(1), WORKING_DIRECTORY(2), OTHER_DIRECTORY(3); public final byte constant; public byte getLgmConst() { return constant; } private ExportOption(int constant) { this.constant = (byte) constant; } } @Override public Include read(XmlReader reader, DeferredReferenceCreatorNotifier notifier) { Include include = new Include(); reader.enterElement("include"); { include.filename = reader.getStringElement("filename"); include.filepath = reader.getStringElement("filepath"); include.isOriginal = reader.getBoolElement("original"); include.size = reader.getIntElement("originalSize"); if (reader.getBoolElement("hasContent")) { include.data = new byte[0]; } else { include.data = null; } include.export = LgmConst.fromString(reader.getStringElement("exportTo"), ExportOption.class); include.exportFolder = reader.getStringElement("otherExportDirectory"); include.overwriteExisting = reader.getBoolElement("overwriteExisting"); include.freeMemAfterExport = reader.getBoolElement("freeMemAfterExport"); include.removeAtGameEnd = reader.getBoolElement("removeAtGameEnd"); } reader.leaveElement(); return include; } @Override public void write(Include include, XmlWriter writer) { writer.startElement("include"); { writer.putElement("filename", include.filename); writer.putElement("filepath", include.filepath); writer.putElement("original", include.isOriginal); writer.putElement("originalSize", include.size); writer.putElement("hasContent", include.data != null); writer.putElement("exportTo", LgmConst.toString((byte) include.export, ExportOption.class)); writer.putElement("otherExportDirectory", include.exportFolder); writer.putElement("overwriteExisting", include.overwriteExisting); writer.putElement("freeMemAfterExport", include.freeMemAfterExport); writer.putElement("removeAtGameEnd", include.removeAtGameEnd); } writer.endElement(); } }