// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.geocities.com/kpdus/jad.html // Decompiler options: packimports(3) fieldsfirst lnc // Source File Name: DocumentImpl.java package com.icl.saxon.tree; import com.icl.saxon.KeyManager; import com.icl.saxon.expr.NodeSetExtent; import com.icl.saxon.om.*; import com.icl.saxon.output.Outputter; import com.icl.saxon.sort.LocalOrderComparer; import java.util.Hashtable; import javax.xml.transform.TransformerException; import org.w3c.dom.*; import org.xml.sax.Attributes; // Referenced classes of package com.icl.saxon.tree: // ParentNodeImpl, SystemIdMap, LineNumberMap, ElementImpl, // NodeImpl, NodeFactory public final class DocumentImpl extends ParentNodeImpl implements DocumentInfo, Document { private ElementImpl documentElement; private Hashtable idTable; private Hashtable entityTable; private Hashtable elementList; private StringBuffer characterBuffer; private NamePool namePool; private NodeFactory nodeFactory; private LineNumberMap lineNumberMap; private SystemIdMap systemIdMap; private Object index[]; private int indexEntriesUsed; public DocumentImpl() { /* 29*/ idTable = null; /* 31*/ entityTable = null; /* 32*/ elementList = null; /* 37*/ systemIdMap = new SystemIdMap(); /* 42*/ index = new Object[30]; /* 43*/ indexEntriesUsed = 0; /* 46*/ super.parent = null; } protected void setCharacterBuffer(StringBuffer stringbuffer) { /* 54*/ characterBuffer = stringbuffer; } public final StringBuffer getCharacterBuffer() { /* 62*/ return characterBuffer; } public void setNamePool(NamePool namepool) { /* 70*/ namePool = namepool; } public NamePool getNamePool() { /* 78*/ return namePool; } public void setNodeFactory(NodeFactory nodefactory) { /* 86*/ nodeFactory = nodefactory; } public NodeFactory getNodeFactory() { /* 94*/ return nodeFactory; } protected void setDocumentElement(ElementImpl elementimpl) { /* 105*/ documentElement = elementimpl; } public void setSystemId(String s) { /* 116*/ if(s == null) /* 117*/ s = ""; /* 119*/ systemIdMap.setSystemId(super.sequence, s); } public String getSystemId() { /* 127*/ return systemIdMap.getSystemId(super.sequence); } public String getBaseURI() { /* 136*/ return getSystemId(); } protected void setSystemId(int i, String s) { /* 144*/ if(s == null) /* 145*/ s = ""; /* 149*/ systemIdMap.setSystemId(i, s); } protected String getSystemId(int i) { /* 158*/ return systemIdMap.getSystemId(i); } public void setLineNumbering() { /* 167*/ lineNumberMap = new LineNumberMap(); /* 168*/ lineNumberMap.setLineNumber(super.sequence, 0); } protected void setLineNumber(int i, int j) { /* 176*/ if(lineNumberMap != null) /* 177*/ lineNumberMap.setLineNumber(i, j); } protected int getLineNumber(int i) { /* 186*/ if(lineNumberMap != null) /* 187*/ return lineNumberMap.getLineNumber(i); /* 189*/ else /* 189*/ return -1; } public int getLineNumber() { /* 198*/ return 0; } public final short getNodeType() { /* 207*/ return 9; } public final Node getNextSibling() { /* 216*/ return null; } public final Node getPreviousSibling() { /* 225*/ return null; } public Element getDocumentElement() { /* 234*/ return documentElement; } public DocumentInfo getDocumentRoot() { /* 243*/ return this; } public String generateId() { /* 252*/ return ""; } protected AxisEnumeration getAllElements(int i) { /* 260*/ Integer integer = new Integer(i); /* 261*/ if(elementList == null) /* 262*/ elementList = new Hashtable(); /* 264*/ NodeSetExtent nodesetextent = (NodeSetExtent)elementList.get(integer); /* 265*/ if(nodesetextent == null) { /* 266*/ nodesetextent = new NodeSetExtent(LocalOrderComparer.getInstance()); /* 267*/ nodesetextent.setSorted(true); /* 268*/ for(NodeImpl nodeimpl = getNextInDocument(this); nodeimpl != null; nodeimpl = nodeimpl.getNextInDocument(this)) /* 270*/ if(nodeimpl.getNodeType() == 1 && nodeimpl.getFingerprint() == i) /* 272*/ nodesetextent.append(nodeimpl); /* 276*/ elementList.put(integer, nodesetextent); } /* 278*/ return (AxisEnumeration)nodesetextent.enumerate(); } private void indexIDs() { /* 287*/ if(idTable != null) /* 287*/ return; /* 288*/ idTable = new Hashtable(); /* 290*/ Object obj = this; /* 291*/ Object obj1 = obj; /* 293*/ for(; obj != null; obj = ((NodeImpl) (obj)).getNextInDocument(((NodeImpl) (obj1)))) /* 293*/ if(((AbstractNode) (obj)).getNodeType() == 1) { /* 294*/ ElementImpl elementimpl = (ElementImpl)obj; /* 295*/ AttributeCollection attributecollection = elementimpl.getAttributeList(); /* 296*/ for(int i = 0; i < attributecollection.getLength(); i++) /* 297*/ if("ID".equals(attributecollection.getType(i))) /* 298*/ registerID(elementimpl, attributecollection.getValue(i)); } } private void registerID(NodeInfo nodeinfo, String s) { /* 314*/ Object obj = idTable.get(s); /* 315*/ if(obj == null) /* 316*/ idTable.put(s, nodeinfo); } public NodeInfo selectID(String s) { /* 328*/ if(idTable == null) /* 328*/ indexIDs(); /* 329*/ return (NodeInfo)idTable.get(s); } public synchronized Hashtable getKeyIndex(KeyManager keymanager, int i) { /* 342*/ for(int j = 0; j < indexEntriesUsed; j += 3) /* 343*/ if((KeyManager)index[j] == keymanager && ((Integer)index[j + 1]).intValue() == i) { /* 345*/ Object obj = index[j + 2]; /* 346*/ return (Hashtable)index[j + 2]; } /* 351*/ return null; } public synchronized void setKeyIndex(KeyManager keymanager, int i, Hashtable hashtable) { /* 365*/ for(int j = 0; j < indexEntriesUsed; j += 3) /* 366*/ if((KeyManager)index[j] == keymanager && ((Integer)index[j + 1]).intValue() == i) { /* 368*/ index[j + 2] = hashtable; /* 369*/ return; } /* 373*/ if(indexEntriesUsed + 3 >= index.length) { /* 374*/ Object aobj[] = new Object[indexEntriesUsed * 2]; /* 375*/ System.arraycopy(((Object) (index)), 0, ((Object) (aobj)), 0, indexEntriesUsed); /* 376*/ index = aobj; } /* 378*/ index[indexEntriesUsed++] = keymanager; /* 379*/ index[indexEntriesUsed++] = new Integer(i); /* 380*/ index[indexEntriesUsed++] = hashtable; } protected void setUnparsedEntity(String s, String s1) { /* 389*/ if(entityTable == null) /* 390*/ entityTable = new Hashtable(); /* 392*/ entityTable.put(s, s1); } public String getUnparsedEntity(String s) { /* 402*/ if(entityTable == null) { /* 403*/ return ""; } else { /* 405*/ String s1 = (String)entityTable.get(s); /* 406*/ return s1 != null ? s1 : ""; } } public void copy(Outputter outputter) throws TransformerException { /* 414*/ for(NodeImpl nodeimpl = (NodeImpl)getFirstChild(); nodeimpl != null; nodeimpl = (NodeImpl)nodeimpl.getNextSibling()) /* 416*/ nodeimpl.copy(outputter); } public Node adoptNode(Node node) throws DOMException { /* 434*/ disallowUpdate(); /* 435*/ return null; } public String getDocumentURI() { /* 453*/ return getSystemId(); } public DOMConfiguration getDomConfig() { /* 463*/ return null; } public String getInputEncoding() { /* 474*/ return null; } public boolean getStrictErrorChecking() { /* 489*/ return true; } public String getXmlEncoding() { /* 500*/ return null; } public boolean getXmlStandalone() { /* 515*/ return false; } public String getXmlVersion() { /* 526*/ return "1.0"; } public void normalizeDocument() { /* 535*/ disallowUpdate(); } public Node renameNode(Node node, String s, String s1) throws DOMException { /* 569*/ disallowUpdate(); /* 570*/ return null; } public void setDocumentURI(String s) { /* 588*/ setSystemId(s); } public void setStrictErrorChecking(boolean flag) { /* 603*/ throw new UnsupportedOperationException("setStrictErrorChecking() is not supported"); } public void setXmlStandalone(boolean flag) throws DOMException { /* 620*/ disallowUpdate(); } public void setXmlVersion(String s) throws DOMException { /* 652*/ disallowUpdate(); } }