package org.nexml.model;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.nexml.model.impl.DocumentImpl;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
public class DocumentFactory {
/**
* Creates a new NeXML document, to be populated programmatically.
* @return an org.nexml.model.Document object
* @throws ParserConfigurationException
*/
static public Document createDocument() throws ParserConfigurationException {
return new DocumentImpl(getDocumentBuilder().newDocument());
}
/**
* Creates a new NeXML document, to be populated programmatically.
* Catches ParserConfigurationException internally, prints stack trace
* @return an org.nexml.model.Document object
*/
static public Document safeCreateDocument() {
Document doc = null;
try {
doc = new DocumentImpl(getDocumentBuilder().newDocument());
} catch (ParserConfigurationException e) {
e.printStackTrace();
}
return doc;
}
/**
* Parses a NeXML document, returns a populated object hierarchy
* that reflects the document's contents
* @param inputStream
* @return an org.nexml.model.Document object
* @throws ParserConfigurationException
* @throws SAXException
* @throws IOException
*/
static public Document parse(InputStream inputStream)
throws ParserConfigurationException, SAXException, IOException {
return createDocument(getDocumentBuilder().parse(inputStream));
}
/**
* Like parse, but wraps it in a try/catch block
* @param inputStream
* @return
*/
static public Document safeParse(InputStream inputStream) {
try {
return parse(inputStream);
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* Parses a NeXML document, returns a populated object hierarchy
* that reflects the document's contents
* @param uri
* @return an org.nexml.model.Document object
* @throws ParserConfigurationException
* @throws SAXException
* @throws IOException
*/
static public Document parse(String uri) throws SAXException, IOException,
ParserConfigurationException {
return createDocument(getDocumentBuilder().parse(uri));
}
/**
* Like parse, but wraps it in a try/catch block
* @param inputStream
* @return
*/
static public Document safeParse(String uri) {
try {
return parse(uri);
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* Parses a NeXML document, returns a populated object hierarchy
* that reflects the document's contents
* @param file
* @return an org.nexml.model.Document object
* @throws ParserConfigurationException
* @throws SAXException
* @throws IOException
*/
static public Document parse(File file) throws SAXException, IOException,
ParserConfigurationException {
return createDocument(getDocumentBuilder().parse(file));
}
/**
* Like parse, but wraps it in a try/catch block
* @param inputStream
* @return
*/
static public Document safeParse(File file) {
try {
return parse(file);
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* Parses a NeXML document, returns a populated object hierarchy
* that reflects the document's contents
* @param inputSource
* @return an org.nexml.model.Document object
* @throws ParserConfigurationException
* @throws SAXException
* @throws IOException
*/
static public Document parse(InputSource inputSource) throws SAXException,
IOException, ParserConfigurationException {
return createDocument(getDocumentBuilder().parse(inputSource));
}
/**
* Like parse, but wraps it in a try/catch block
* @param inputStream
* @return
*/
static public Document safeParse(InputSource inputSource) {
try {
return parse(inputSource);
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
static private Document createDocument(org.w3c.dom.Document domDocument) {
return new DocumentImpl(domDocument, domDocument.getDocumentElement());
}
/**
* Helper method to instantiate a new DocumentBuilder object
* @return a DocumentBuilder object
* @throws ParserConfigurationException
*/
static private DocumentBuilder getDocumentBuilder()
throws ParserConfigurationException {
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory
.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory
.newDocumentBuilder();
return documentBuilder;
}
}