package org.basex.api.dom;
import static org.basex.util.Token.*;
import org.basex.query.item.FAttr;
import org.basex.query.item.FComm;
import org.basex.query.item.FDoc;
import org.basex.query.item.FElem;
import org.basex.query.item.FPI;
import org.basex.query.item.FTxt;
import org.basex.query.item.ANode;
import org.basex.query.item.QNm;
import org.basex.util.Util;
import org.w3c.dom.DOMConfiguration;
import org.w3c.dom.DOMImplementation;
import org.w3c.dom.Document;
import org.w3c.dom.DocumentType;
import org.w3c.dom.EntityReference;
import org.w3c.dom.Node;
/**
* DOM - Document implementation.
*
* @author BaseX Team 2005-12, BSD License
* @author Christian Gruen
*/
public final class BXDoc extends BXNode implements Document {
/**
* Constructor.
* @param n node reference
*/
public BXDoc(final ANode n) {
super(n);
}
@Override
public BXDoc getOwnerDocument() {
return null;
}
@Override
public BXNode adoptNode(final Node source) {
readOnly();
return null;
}
@Override
public BXAttr createAttribute(final String nm) {
final QNm name = new QNm(token(nm));
return new BXAttr(new FAttr(name, EMPTY));
}
@Override
public BXAttr createAttributeNS(final String uri, final String qn) {
return new BXAttr(new FAttr(new QNm(token(qn), token(uri)), EMPTY));
}
@Override
public BXCData createCDATASection(final String dat) {
return new BXCData(new FTxt(token(dat)));
}
@Override
public BXComm createComment(final String dat) {
return new BXComm(new FComm(token(dat)));
}
@Override
public BXDocFrag createDocumentFragment() {
return new BXDocFrag(new FDoc(node.baseURI()));
}
@Override
public BXElem createElement(final String nm) {
return new BXElem(new FElem(new QNm(token(nm))));
}
@Override
public BXElem createElementNS(final String uri, final String qn) {
return new BXElem(new FElem(new QNm(token(qn), token(uri))));
}
@Override
public EntityReference createEntityReference(final String name) {
readOnly();
return null;
}
@Override
public BXPI createProcessingInstruction(final String t, final String dat) {
return new BXPI(new FPI(new QNm(token(t)), token(dat)));
}
@Override
public BXText createTextNode(final String dat) {
return new BXText(new FTxt(token(dat)));
}
@Override
public DocumentType getDoctype() {
return null;
}
@Override
public BXElem getDocumentElement() {
final BXNList list = getChildNodes();
for(int l = 0; l < list.getLength(); ++l) {
final BXNode n = list.item(l);
if(n.getNodeType() == Node.ELEMENT_NODE) return (BXElem) n;
}
throw Util.notexpected();
}
@Override
public String getDocumentURI() {
return getBaseURI();
}
@Override
public DOMConfiguration getDomConfig() {
Util.notimplemented();
return null;
}
@Override
public BXElem getElementById(final String elementId) {
Util.notimplemented();
return null;
}
@Override
public BXNList getElementsByTagName(final String name) {
return getElements(name);
}
@Override
public BXNList getElementsByTagNameNS(final String namespaceURI,
final String localName) {
Util.notimplemented();
return null;
}
@Override
public DOMImplementation getImplementation() {
return BXDomImpl.get();
}
@Override
public String getInputEncoding() {
return UTF8;
}
@Override
public boolean getStrictErrorChecking() {
Util.notimplemented();
return false;
}
@Override
public String getXmlEncoding() {
return UTF8;
}
@Override
public boolean getXmlStandalone() {
return false;
}
@Override
public String getXmlVersion() {
return "1.0";
}
@Override
public BXNode importNode(final Node importedNode, final boolean deep) {
Util.notimplemented();
return null;
}
@Override
public void normalizeDocument() {
readOnly();
}
@Override
public BXNode renameNode(final Node n, final String namespaceURI,
final String qualifiedName) {
readOnly();
return null;
}
@Override
public void setDocumentURI(final String documentURI) {
readOnly();
}
@Override
public void setStrictErrorChecking(final boolean strictErrorChecking) {
Util.notimplemented();
}
@Override
public void setXmlStandalone(final boolean xmlStandalone) {
Util.notimplemented();
}
@Override
public void setXmlVersion(final String xmlVersion) {
Util.notimplemented();
}
}