2011-05-13 04:24:42 -04:00
|
|
|
package org.moparscape.msc.gs.util;
|
2011-04-27 01:44:26 -04:00
|
|
|
|
|
|
|
import java.io.File;
|
|
|
|
import java.io.FileInputStream;
|
|
|
|
import java.io.FileOutputStream;
|
|
|
|
import java.io.IOException;
|
|
|
|
import java.io.InputStream;
|
|
|
|
import java.io.OutputStream;
|
|
|
|
import java.util.Enumeration;
|
|
|
|
import java.util.Properties;
|
|
|
|
import java.util.zip.GZIPInputStream;
|
|
|
|
import java.util.zip.GZIPOutputStream;
|
|
|
|
|
2011-05-13 04:24:42 -04:00
|
|
|
import org.moparscape.msc.config.Config;
|
|
|
|
|
2011-04-27 01:44:26 -04:00
|
|
|
import com.thoughtworks.xstream.XStream;
|
|
|
|
|
|
|
|
public class PersistenceManager {
|
2011-06-25 01:44:53 -04:00
|
|
|
private static final XStream xstream = new XStream();
|
2011-04-27 01:44:26 -04:00
|
|
|
|
2011-06-25 01:44:53 -04:00
|
|
|
static {
|
|
|
|
setupAliases();
|
|
|
|
}
|
2011-04-27 01:44:26 -04:00
|
|
|
|
2011-06-25 01:44:53 -04:00
|
|
|
public static Object load(String filename) {
|
|
|
|
try {
|
|
|
|
InputStream is = new FileInputStream(new File(Config.CONF_DIR,
|
|
|
|
filename));
|
|
|
|
if (filename.endsWith(".gz")) {
|
|
|
|
is = new GZIPInputStream(is);
|
|
|
|
}
|
|
|
|
Object rv = xstream.fromXML(is);
|
|
|
|
return rv;
|
|
|
|
} catch (IOException ioe) {
|
|
|
|
Logger.error(ioe);
|
|
|
|
}
|
|
|
|
return null;
|
2011-04-27 01:44:26 -04:00
|
|
|
}
|
|
|
|
|
2011-06-25 01:44:53 -04:00
|
|
|
public static void setupAliases() {
|
|
|
|
try {
|
|
|
|
Properties aliases = new Properties();
|
|
|
|
FileInputStream fis = new FileInputStream(new File(Config.CONF_DIR,
|
|
|
|
"aliases.xml"));
|
|
|
|
aliases.loadFromXML(fis);
|
|
|
|
for (Enumeration<?> e = aliases.propertyNames(); e
|
|
|
|
.hasMoreElements();) {
|
|
|
|
String alias = (String) e.nextElement();
|
|
|
|
Class<?> c = Class.forName((String) aliases.get(alias));
|
|
|
|
xstream.alias(alias, c);
|
|
|
|
}
|
|
|
|
} catch (Exception ioe) {
|
|
|
|
Logger.error(ioe);
|
|
|
|
}
|
2011-04-27 01:44:26 -04:00
|
|
|
}
|
|
|
|
|
2011-06-25 01:44:53 -04:00
|
|
|
public static void write(String filename, Object o) {
|
|
|
|
try {
|
|
|
|
OutputStream os = new FileOutputStream(new File(Config.CONF_DIR,
|
|
|
|
filename));
|
|
|
|
if (filename.endsWith(".gz")) {
|
|
|
|
os = new GZIPOutputStream(os);
|
|
|
|
}
|
|
|
|
xstream.toXML(o, os);
|
|
|
|
} catch (IOException ioe) {
|
|
|
|
Logger.error(ioe);
|
|
|
|
}
|
2011-04-27 01:44:26 -04:00
|
|
|
}
|
|
|
|
}
|