/*
* 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.files;
import java.io.File;
import java.io.IOException;
import java.util.List;
import org.lateralgm.components.impl.ResNode;
import org.lateralgm.file.GmFile;
import org.lateralgm.resources.Extensions;
import com.ganggarrison.gmdec.DeferredReferenceCreatorNotifier;
import com.ganggarrison.gmdec.ResourceTreeEntry;
import com.ganggarrison.gmdec.ResourceTreeEntry.Type;
import com.ganggarrison.gmdec.xml.ExtensionsXmlFormat;
public class ExtensionsFormat extends FileTreeFormat<List<String>> {
private static String baseFilename = "Extension Packages";
private static String filename = baseFilename + ".xml";
@Override
public List<String> read(File path, ResourceTreeEntry entry, DeferredReferenceCreatorNotifier drcn)
throws IOException {
return new ExtensionsXmlFormat().read(new File(path, filename), drcn);
}
@Override
public void addResToTree(List<String> resource, ResNode parent) {
parent.addChild("Extension Packages", ResNode.STATUS_SECONDARY, Extensions.class);
}
@Override
public ResourceTreeEntry createResourceTreeEntry(List<String> resource) {
return new ResourceTreeEntry(baseFilename, baseFilename, Type.RESOURCE);
}
@Override
public void addAllResourcesToGmFile(List<List<String>> resources, GmFile gmf) {
if (resources.size() != 1) {
throw new IllegalArgumentException("There is only one extension package list.");
}
gmf.packages.clear();
gmf.packages.addAll(resources.get(0));
}
@Override
public void write(File path, List<String> extensions, GmFile gmf) throws IOException {
new ExtensionsXmlFormat().write(extensions, new File(path, filename));
}
}