package fr.opensagres.mongodb.ide.core.internal.settings;
import java.io.IOException;
import java.io.InputStream;
import java.io.Writer;
import java.util.Collection;
import org.xml.sax.ContentHandler;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.XMLReaderFactory;
public abstract class AbstractSettings<T> {
public void load(InputStream stream, Collection<T> list)
throws SAXException, IOException {
XMLReader xmlReader = XMLReaderFactory.createXMLReader();
ContentHandler contentHandler = createContentHandler(list);
xmlReader.setContentHandler(contentHandler);
xmlReader.parse(new InputSource(stream));
}
public void save(Collection<T> list, Writer out) throws SAXException,
IOException {
try {
String root = getXMLRootElementName();
out.append("<");
out.append(root);
out.append(">");
for (T t : list) {
save(t, out);
}
out.append("</");
out.append(root);
out.append(">");
} finally {
out.flush();
out.close();
}
}
protected abstract ContentHandler createContentHandler(Collection<T> list);
protected abstract String getXMLRootElementName();
protected abstract void save(T t, Writer out) throws IOException;
public static void writeAttr(String name, Integer value, Writer writer)
throws IOException {
writeAttr(name, value != null ? value.toString() : "", writer);
}
public static void writeAttr(String name, String value, Writer writer)
throws IOException {
writer.append(" ");
writer.append(name);
writer.append("=\"");
writer.append(value);
writer.append("\"");
}
}