/*******************************************************************************
* Copyright (c) 2011 Subgraph.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Subgraph - initial API and implementation
******************************************************************************/
package com.subgraph.vega.internal.html.dom;
import org.w3c.dom.Attr;
import org.w3c.dom.CDATASection;
import org.w3c.dom.Comment;
import org.w3c.dom.DOMConfiguration;
import org.w3c.dom.DOMException;
import org.w3c.dom.DOMImplementation;
import org.w3c.dom.Document;
import org.w3c.dom.DocumentFragment;
import org.w3c.dom.DocumentType;
import org.w3c.dom.Element;
import org.w3c.dom.EntityReference;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.ProcessingInstruction;
import org.w3c.dom.Text;
public class DocumentImpl extends NodeImpl implements Document {
private final static DOMImplementation implementation = new DomImplementationImpl();
protected final org.jsoup.nodes.Document jsoupDocument;
private Element cachedOwnerDocument;
protected DocumentImpl(org.jsoup.nodes.Document jsoupDocument) {
super(jsoupDocument, null);
this.jsoupDocument = jsoupDocument;
}
public String getNodeName() {
return "#document";
}
@Override
public short getNodeType() {
return Node.DOCUMENT_NODE;
}
@Override
public DocumentType getDoctype() {
throw createNoLevel3SupportException();
}
@Override
public DOMImplementation getImplementation() {
return implementation;
}
@Override
public Element getDocumentElement() {
if(cachedOwnerDocument != null)
return cachedOwnerDocument;
org.jsoup.nodes.Element htmlElement = jsoupDocument.select("html").first();
if(htmlElement == null)
return null;
cachedOwnerDocument = HTMLElementImpl.create(jsoupDocument.select("html").first(), getOwnerDocument());
return cachedOwnerDocument;
}
@Override
public Element createElement(String tagName) throws DOMException {
throw createReadOnlyException();
}
@Override
public DocumentFragment createDocumentFragment() {
throw createReadOnlyException();
}
@Override
public Text createTextNode(String data) {
throw createReadOnlyException();
}
@Override
public Comment createComment(String data) {
throw createReadOnlyException();
}
@Override
public CDATASection createCDATASection(String data) throws DOMException {
throw createNoXMLSupportException();
}
@Override
public ProcessingInstruction createProcessingInstruction(String target,
String data) throws DOMException {
throw createNoXMLSupportException();
}
@Override
public Attr createAttribute(String name) throws DOMException {
throw createReadOnlyException();
}
@Override
public EntityReference createEntityReference(String name)
throws DOMException {
throw createNoXMLSupportException();
}
@Override
public NodeList getElementsByTagName(String tagname) {
Element e = getDocumentElement();
if(e == null)
return NodeListImpl.emptyList;
else
return e.getElementsByTagName(tagname);
}
@Override
public Node importNode(Node importedNode, boolean deep) throws DOMException {
throw createReadOnlyException();
}
@Override
public Element createElementNS(String namespaceURI, String qualifiedName)
throws DOMException {
throw createNoXMLSupportException();
}
@Override
public Attr createAttributeNS(String namespaceURI, String qualifiedName)
throws DOMException {
throw createNoXMLSupportException();
}
@Override
public NodeList getElementsByTagNameNS(String namespaceURI, String localName) {
throw createNoXMLSupportException();
}
@Override
public Element getElementById(String elementId) {
Element e = getDocumentElement();
if(e == null)
return null;
else {
org.jsoup.nodes.Element jsoupElement = jsoupDocument.getElementById(elementId);
if(jsoupElement == null)
return null;
return HTMLElementImpl.create(jsoupElement, this);
}
}
@Override
public String getInputEncoding() {
throw createNoLevel3SupportException();
}
@Override
public String getXmlEncoding() {
throw createNoLevel3SupportException();
}
@Override
public boolean getXmlStandalone() {
throw createNoLevel3SupportException();
}
@Override
public void setXmlStandalone(boolean xmlStandalone) throws DOMException {
throw createNoLevel3SupportException();
}
@Override
public String getXmlVersion() {
throw createNoLevel3SupportException();
}
@Override
public void setXmlVersion(String xmlVersion) throws DOMException {
throw createNoLevel3SupportException();
}
@Override
public boolean getStrictErrorChecking() {
throw createNoLevel3SupportException();
}
@Override
public void setStrictErrorChecking(boolean strictErrorChecking) {
throw createNoLevel3SupportException();
}
@Override
public String getDocumentURI() {
throw createNoLevel3SupportException();
}
@Override
public void setDocumentURI(String documentURI) {
throw createNoLevel3SupportException();
}
@Override
public Node adoptNode(Node source) throws DOMException {
throw createNoLevel3SupportException();
}
@Override
public DOMConfiguration getDomConfig() {
throw createNoLevel3SupportException();
}
@Override
public void normalizeDocument() {
throw createNoLevel3SupportException();
}
@Override
public Node renameNode(Node n, String namespaceURI, String qualifiedName)
throws DOMException {
throw createNoLevel3SupportException();
}
}