package melcoe.fedora.util;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.Writer;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.apache.log4j.Logger;
import org.w3c.dom.Document;
import com.sun.org.apache.xml.internal.serialize.OutputFormat;
import com.sun.org.apache.xml.internal.serialize.XMLSerializer;
public class DataUtils {
private static final Logger log = Logger.getLogger(DataUtils.class);
public static void saveDocument(String filename, byte[] document)
throws Exception {
try {
DocumentBuilderFactory documentBuilderFactory =
DocumentBuilderFactory.newInstance();
documentBuilderFactory.setNamespaceAware(true);
DocumentBuilder docBuilder =
documentBuilderFactory.newDocumentBuilder();
Document doc = docBuilder.parse(new ByteArrayInputStream(document));
File file = new File(filename.trim());
String data = format(doc);
PrintWriter writer = new PrintWriter(file, "UTF-8");
writer.print(data);
writer.flush();
writer.close();
} catch (Exception e) {
log.fatal("Unable to save file: " + filename, e);
throw new Exception("Unable to save file: " + filename, e);
}
}
public static void saveDocument(String filename, Document doc) {
try {
File file = new File(filename.trim());
String data = format(doc);
PrintWriter writer = new PrintWriter(file, "UTF-8");
writer.print(data);
writer.flush();
writer.close();
} catch (Exception e) {
log.fatal("Unable to save file: " + filename, e);
}
}
public static String format(Document doc) throws Exception {
OutputFormat format = new OutputFormat(doc);
format.setEncoding("UTF-8");
format.setIndenting(true);
format.setIndent(2);
format.setOmitXMLDeclaration(true);
ByteArrayOutputStream out = new ByteArrayOutputStream();
Writer output = new OutputStreamWriter(out);
XMLSerializer serializer = new XMLSerializer(output, format);
serializer.serialize(doc);
return new String(out.toByteArray(), "UTF-8");
}
}