/*
* Copyright 2013-2014 Grzegorz Ligas <ligasgr@gmail.com> and other contributors
* (see the CONTRIBUTORS file).
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.intellij.xquery.util;
import org.w3c.dom.*;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.StringWriter;
/**
* User: ligasgr
* Date: 27/09/13
* Time: 15:42
*/
public class DelegatingNode implements Document {
private final Document originalDocument;
public DelegatingNode(Document originalDocument) {
this.originalDocument = originalDocument;
}
@Override
public Node cloneNode(boolean b) {
return originalDocument.cloneNode(b);
}
@Override
public void normalize() {
originalDocument.normalize();
}
@Override
public boolean isSupported(String feature, String version) {
return originalDocument.isSupported(feature, version);
}
@Override
public String getNamespaceURI() {
return originalDocument.getNamespaceURI();
}
@Override
public String getPrefix() {
return originalDocument.getPrefix();
}
@Override
public void setPrefix(String prefix) throws DOMException {
originalDocument.setPrefix(prefix);
}
@Override
public String getLocalName() {
return originalDocument.getLocalName();
}
@Override
public boolean hasAttributes() {
return originalDocument.hasAttributes();
}
@Override
public String getBaseURI() {
return originalDocument.getBaseURI();
}
@Override
public short compareDocumentPosition(Node other) throws DOMException {
return originalDocument.compareDocumentPosition(other);
}
@Override
public short getNodeType() {
return originalDocument.getNodeType();
}
@Override
public Node getParentNode() {
return originalDocument.getParentNode();
}
@Override
public NodeList getChildNodes() {
return originalDocument.getChildNodes();
}
@Override
public Node getFirstChild() {
return originalDocument.getFirstChild();
}
@Override
public Node getLastChild() {
return originalDocument.getLastChild();
}
@Override
public Node getPreviousSibling() {
return originalDocument.getPreviousSibling();
}
@Override
public Node getNextSibling() {
return originalDocument.getNextSibling();
}
@Override
public NamedNodeMap getAttributes() {
return originalDocument.getAttributes();
}
@Override
public Document getOwnerDocument() {
return originalDocument.getOwnerDocument();
}
@Override
public String getNodeName() {
return originalDocument.getNodeName();
}
@Override
public String getNodeValue() throws DOMException {
return originalDocument.getNodeValue();
}
@Override
public void setNodeValue(String nodeValue) throws DOMException {
originalDocument.setNodeValue(nodeValue);
}
@Override
public Node insertBefore(Node node, Node node2) throws DOMException {
return originalDocument.insertBefore(node, node2);
}
@Override
public Node removeChild(Node node) throws DOMException {
return originalDocument.removeChild(node);
}
@Override
public Node appendChild(Node newChild) throws DOMException {
return originalDocument.appendChild(newChild);
}
@Override
public boolean hasChildNodes() {
return originalDocument.hasChildNodes();
}
@Override
public Node replaceChild(Node node, Node node2) throws DOMException {
return originalDocument.replaceChild(node, node2);
}
@Override
public String getTextContent() throws DOMException {
return originalDocument.getTextContent();
}
@Override
public void setTextContent(String s) throws DOMException {
originalDocument.setTextContent(s);
}
@Override
public boolean isSameNode(Node other) {
return originalDocument.isSameNode(other);
}
@Override
public String lookupPrefix(String namespaceURI) {
return originalDocument.lookupPrefix(namespaceURI);
}
@Override
public boolean isDefaultNamespace(String namespaceURI) {
return originalDocument.isDefaultNamespace(namespaceURI);
}
@Override
public String lookupNamespaceURI(String prefix) {
return originalDocument.lookupNamespaceURI(prefix);
}
@Override
public boolean isEqualNode(Node arg) {
return originalDocument.isEqualNode(arg);
}
@Override
public Object getFeature(String s, String s2) {
return originalDocument.getFeature(s, s2);
}
@Override
public Object setUserData(String key, Object data, UserDataHandler handler) {
return originalDocument.setUserData(key, data, handler);
}
@Override
public Object getUserData(String key) {
return originalDocument.getUserData(key);
}
@Override
public String toString() {
DOMSource domSource = new DOMSource(originalDocument);
StringWriter writer = new StringWriter();
StreamResult result = new StreamResult(writer);
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = null;
try {
transformer = tf.newTransformer();
transformer.transform(domSource, result);
return writer.toString();
} catch (TransformerConfigurationException e) {
e.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
}
return originalDocument.toString();
}
@Override
public DocumentType getDoctype() {
return originalDocument.getDoctype();
}
@Override
public DOMImplementation getImplementation() {
return originalDocument.getImplementation();
}
@Override
public Element getDocumentElement() {
return originalDocument.getDocumentElement();
}
@Override
public Element createElement(String tagName) throws DOMException {
return originalDocument.createElement(tagName);
}
@Override
public DocumentFragment createDocumentFragment() {
return originalDocument.createDocumentFragment();
}
@Override
public Text createTextNode(String data) {
return originalDocument.createTextNode(data);
}
@Override
public Comment createComment(String data) {
return originalDocument.createComment(data);
}
@Override
public CDATASection createCDATASection(String data) throws DOMException {
return originalDocument.createCDATASection(data);
}
@Override
public ProcessingInstruction createProcessingInstruction(String target, String data) throws DOMException {
return originalDocument.createProcessingInstruction(target, data);
}
@Override
public Attr createAttribute(String name) throws DOMException {
return originalDocument.createAttribute(name);
}
@Override
public EntityReference createEntityReference(String name) throws DOMException {
return originalDocument.createEntityReference(name);
}
@Override
public NodeList getElementsByTagName(String tagname) {
return originalDocument.getElementsByTagName(tagname);
}
@Override
public Node importNode(Node importedNode, boolean deep) throws DOMException {
return originalDocument.importNode(importedNode, deep);
}
@Override
public Element createElementNS(String namespaceURI, String qualifiedName) throws DOMException {
return originalDocument.createElementNS(namespaceURI, qualifiedName);
}
@Override
public Attr createAttributeNS(String namespaceURI, String qualifiedName) throws DOMException {
return originalDocument.createAttributeNS(namespaceURI, qualifiedName);
}
@Override
public NodeList getElementsByTagNameNS(String namespaceURI, String localName) {
return originalDocument.getElementsByTagNameNS(namespaceURI, localName);
}
@Override
public Element getElementById(String elementId) {
return originalDocument.getElementById(elementId);
}
@Override
public String getInputEncoding() {
return originalDocument.getInputEncoding();
}
@Override
public String getXmlEncoding() {
return originalDocument.getXmlEncoding();
}
@Override
public boolean getXmlStandalone() {
return originalDocument.getXmlStandalone();
}
@Override
public void setXmlStandalone(boolean xmlStandalone) throws DOMException {
originalDocument.setXmlStandalone(xmlStandalone);
}
@Override
public String getXmlVersion() {
return originalDocument.getXmlVersion();
}
@Override
public void setXmlVersion(String xmlVersion) throws DOMException {
originalDocument.setXmlVersion(xmlVersion);
}
@Override
public boolean getStrictErrorChecking() {
return originalDocument.getStrictErrorChecking();
}
@Override
public void setStrictErrorChecking(boolean strictErrorChecking) {
originalDocument.setStrictErrorChecking(strictErrorChecking);
}
@Override
public String getDocumentURI() {
return originalDocument.getDocumentURI();
}
@Override
public void setDocumentURI(String documentURI) {
originalDocument.setDocumentURI(documentURI);
}
@Override
public Node adoptNode(Node source) throws DOMException {
return originalDocument.adoptNode(source);
}
@Override
public DOMConfiguration getDomConfig() {
return originalDocument.getDomConfig();
}
@Override
public void normalizeDocument() {
originalDocument.normalizeDocument();
}
@Override
public Node renameNode(Node n, String namespaceURI, String qualifiedName) throws DOMException {
return originalDocument.renameNode(n, namespaceURI, qualifiedName);
}
}