/* * Copyright (C) 2010 Medo <smaxein@googlemail.com> * * This file is part of GmkSplitter. * GmkSplitter is free software and comes with ABSOLUTELY NO WARRANTY. * See LICENSE for details. */ package com.ganggarrison.gmdec.xml; import java.util.ArrayList; import java.util.List; import com.ganggarrison.easyxml.XmlReader; import com.ganggarrison.easyxml.XmlWriter; import com.ganggarrison.gmdec.DeferredReferenceCreatorNotifier; import com.ganggarrison.gmdec.ResourceTreeEntry; import com.ganggarrison.gmdec.ResourceTreeEntry.Type; public class ResourceListXmlFormat extends XmlFormat<List<ResourceTreeEntry>> { @Override public void write(List<ResourceTreeEntry> resources, XmlWriter writer) { writer.startElement("resources"); for (ResourceTreeEntry rte : resources) { writer.startElement("resource"); writer.putAttribute("name", rte.name); if (!rte.name.equals(rte.getFilename())) { writer.putAttribute("filename", rte.getFilename()); } writer.putAttribute("type", rte.type); writer.endElement(); } writer.endElement(); } @Override public List<ResourceTreeEntry> read(XmlReader reader, DeferredReferenceCreatorNotifier notifier) { return read(reader); } public List<ResourceTreeEntry> read(XmlReader reader) { List<ResourceTreeEntry> resources = new ArrayList<ResourceTreeEntry>(); reader.enterElement("resources"); while (reader.hasNextElement()) { reader.enterElement("resource"); ResourceTreeEntry entry = new ResourceTreeEntry(); entry.name = reader.getStringAttribute("name"); if (reader.hasAttribute("filename")) { entry.filename = reader.getStringAttribute("filename"); } entry.type = Type.valueOf(reader.getStringAttribute("type")); resources.add(entry); reader.leaveElement(); } reader.leaveElement(); return resources; } }