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.Project; import com.thoughtworks.xstream.XStream; public class ProjectXstreamDao { private static XStream getXStream() { XStream xstream = new XStream(); xstream.alias("project", Project.class); return xstream; } public static void persist(Project project) { XStream xstream = getXStream(); String xml = xstream.toXML(project); try { File projectsDir = Environment.getProjectsDir(); File file = new File(projectsDir, project.getName() + ".xml"); FileWriter writer = new FileWriter(file); writer.write(xml); writer.close(); } catch (IOException e) { e.printStackTrace(); } } public static List<Project> getProjects() { ArrayList<Project> projects = new ArrayList<Project>(); File dir = Environment.getProjectsDir(); String[] children = dir.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$", ""); projects.add(getProject(name)); } } return projects; } public static Project getProject(String name) { XStream xstream = getXStream(); File dir = Environment.getProjectsDir(); File file = new File(dir, name + ".xml"); FileInputStream is = null; try { is = new FileInputStream(file); Project project = (Project) xstream.fromXML(is); return project; } catch (FileNotFoundException e) { e.printStackTrace(); }finally { if (is != null) IOUtils.closeQuietly(is); } return null; } public static void deleteProject(Project project) { File file = new File(Environment.getProjectsDir(), project.getName() + ".xml"); file.delete(); } }