package org.apache.wicket.persistence.provider;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.wicket.util.io.IOUtils;
import org.jabox.environment.Environment;
import org.jabox.model.Container;
import com.thoughtworks.xstream.XStream;
public class ContainerXstreamDao {
private static XStream getXStream() {
XStream xstream = new XStream();
xstream.alias("container", Container.class);
return xstream;
}
public static void persist(final Container container) {
XStream xstream = getXStream();
String xml = xstream.toXML(container);
try {
File containerDir = Environment.getContainersDir();
File file =
new File(containerDir, container.getName() + ".xml");
FileWriter writer = new FileWriter(file);
writer.write(xml);
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static List<Container> getContainers() {
ArrayList<Container> containers = new ArrayList<Container>();
File containersDir = Environment.getContainersDir();
String[] children = containersDir.list();
if (children == null) {
// Either dir does not exist or is not a directory
} else {
for (int i = 0; i < children.length; i++) {
// Get filename of file or directory
String filename = children[i];
String name = filename.replaceAll(".xml$", "");
containers.add(getContainer(name));
}
}
return containers;
}
public static Container getContainer(final String name) {
XStream xstream = getXStream();
File containersDir = Environment.getContainersDir();
File file = new File(containersDir, name + ".xml");
FileInputStream is = null;
try {
is = new FileInputStream(file);
Container container = (Container) xstream.fromXML(is);
return container;
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally {
if (is != null)
IOUtils.closeQuietly(is);
}
return null;
}
public static void deleteContainer(final Container container) {
File file =
new File(Environment.getContainersDir(), container.getName()
+ ".xml");
file.delete();
}
}