Package org.jmol.adapter.readers.xml
Class XmlReader
- java.lang.Object
-
- org.jmol.adapter.smarter.AtomSetCollectionReader
-
- org.jmol.adapter.readers.xml.XmlReader
-
- All Implemented Interfaces:
javajs.api.GenericLineReader
- Direct Known Subclasses:
XmlArgusReader
,XmlChem3dReader
,XmlCmlReader
,XmlMagResReader
,XmlOdysseyReader
,XmlQEReader
,XmlVaspReader
,XmlXsdReader
public class XmlReader extends AtomSetCollectionReader
A generic XML reader template -- by itself, does nothing. The actual readers are XmlCmlReader, XmlMolproReader (which is an extension of XmlCmlReader), XmlChem3dReader, and XmlOdysseyReader. XmlReader takes all XML streams, whether from a file reader or from DOM. This class functions as a resolver, since it: (1) identifying the specific strain of XML to be handled, and (2) passing the responsibility on to the correct format-specific XML readers. There are parallel entry points and handler methods for reader and DOM. Each format-specific XML reader then assigns its own handler to manage the parsing of elements. In addition, this class handles generic XML tag parsing. XmlHandler extends DefaultHandler is the generic interface to both reader and DOM element parsing. XmlCmlReader extends XmlReader XmlMolproReader extends XmlCmlReader. If you feel like expanding on that, feel free. XmlChem3dReader extends XmlReader. That one is simple; no need to expand on it at this time. XmlOdysseyReader extends XmlReader. That one is simple; no need to expand on it at this time. Note that the tag processing routines are shared between SAX and DOM processors. This means that attributes must be transformed from either Attributes (SAX) or JSObjects (DOM) to Hashtable name:value pairs. This is taken care of in JmolXmlHandler for all readers. TODO 27/8/06: Several aspects of CifReader are NOT YET implemented here. These include loading a specific model when there are several, applying the symmetry, and loading fractional coordinates. [DONE for CML reader 2/2007 RMH] Test files: molpro: vib.xml odyssey: water.xodydata cml: a wide variety of files in data-files. -Bob Hanson
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private class
XmlReader.NVPair
-
Field Summary
Fields Modifier and Type Field Description protected Atom
atom
private Object[]
attArgs
private Object[]
attribs
Map<String,String>
atts
protected Bond
bond
protected javajs.util.SB
chars
private Object[]
domObj
protected boolean
keepChars
private Object[]
nullObj
protected XmlReader
parent
-
Fields inherited from class org.jmol.adapter.smarter.AtomSetCollectionReader
addedData, addedDataKey, addVibrations, allow_a_len_1, allowPDBFilter, ANGSTROMS_PER_BOHR, applySymmetryToBonds, asc, baseAtomIndex, binaryDoc, bsFilter, bsModels, calculationType, continuing, debugging, desiredModelNumber, desiredSpaceGroupIndex, desiredVibrationNumber, doApplySymmetry, doCentralize, doCheckUnitCell, doConvertToFractional, doPackUnitCell, doProcessLines, doReadMolecularOrbitals, dssr, fileName, fileOffset, filePath, fileScaling, fillRange, filter, filterHetero, fixJavaFloat, forcePacked, getHeader, haveAtomFilter, haveModel, havePartialChargeFilter, htParams, ignoreFileSpaceGroupName, ignoreFileSymmetryOperators, ignoreFileUnitCell, ignoreStructure, iHaveFractionalCoordinates, iHaveSymmetryOperators, iHaveUnitCell, isBinary, isConcatenated, isDSSP1, isFinalized, isMolecular, isPrimitive, isSequential, isTrajectory, latticeCells, latticeScaling, latticeType, line, lstNCS, matUnitCellOrientation, modDim, modelNumber, ms, mustFinalizeModelSet, next, out, packingError, prevline, primitiveToCrystal, ptLine, ptSupercell, reader, readerName, requiresBSFilter, reverseModels, rotateHexCell, sgName, stateScriptVersionInt, strSupercell, symmetry, templateAtomCount, thisBiomolecule, trajectorySteps, ucItems, unitCellOffset, unitCellParams, useAltNames, useFileModelNumbers, validation, vibrationNumber, vibsFractional, vwr
-
-
Constructor Summary
Constructors Constructor Description XmlReader()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
applySymmetryAndSetTrajectory()
(package private) Object
createDomNodeJS(String id, Object data)
totally untested, probably uselessvoid
endDocument()
private String
fixLocal(String name)
private void
getDOMAttributesA(Object[] attributes)
protected void
initCML()
void
initializeReader()
private Object
jsObjectCall(Object[] jsObject, String method, Object[] args)
private Object
jsObjectGetMember(Object[] jsObject, String name)
private String
parseXML()
protected void
processDOM(Object DOMNode)
(package private) void
processEndElement(String localName)
protected void
processStartElement(String localName, String nodeName)
protected void
processXml(XmlReader parent, Object saxReader)
protected void
processXml2(XmlReader parent, Object saxReader)
private String
selectReaderAndGo(Object saxReader)
protected void
setKeepChars(boolean TF)
private void
setMyError(String err)
private void
walkDOMTree()
-
Methods inherited from class org.jmol.adapter.smarter.AtomSetCollectionReader
addAtomXYZSymName, addExplicitLatticeVector, addJmolScript, addSites, addSiteScript, appendLoadNote, appendUunitCellInfo, applySymTrajASCR, checkCurrentLineForScript, checkFilterKey, checkLastModel, checkLine, checkLineForScript, clearUnitCell, cloneLastAtomSet, discardLinesUntilBlank, discardLinesUntilContains, discardLinesUntilContains2, discardLinesUntilNonBlank, discardLinesUntilStartsWith, discardPreviousAtoms, doGetModel, doGetVibration, doPreSymmetry, fill3x3, fillDataBlock, fillDataBlockFixed, fillFloatArray, fillFrequencyData, filterAtom, filterReject, finalizeMOData, finalizeModelSet, finalizeReaderASCR, finalizeSubclassReader, finalizeSubclassSymmetry, forceSymmetry, fractionalizeCoordinates, getElementSymbol, getFilter, getFortranFormatLengths, getInterface, getNewSymmetry, getStrings, getSymmetry, getTokens, getTokensFloat, initializeSymmetry, initializeSymmetryOptions, initializeTrajectoryFile, isLastModel, newAtomSet, parseFloat, parseFloatRange, parseFloatStr, parseInt, parseIntAt, parseIntRange, parseIntStr, parseToken, parseTokenNext, parseTokenRange, parseTokenStr, processBinaryDocument, rd, read3Vectors, readDataObject, readLines, readNextLine, rejectAtomName, RL, set2D, setAtomCoord, setAtomCoordScaled, setAtomCoordTokens, setAtomCoordXYZ, setChainID, setElementAndIsotope, setFilter, setFilterAtomTypeStr, setFractionalCoordinates, setIsPDB, setLoadNote, setModelPDB, setSpaceGroupName, setSymmetryOperator, setTransform, setUnitCell, setUnitCellItem, setup, setupASCR
-
-
-
-
Field Detail
-
atom
protected Atom atom
-
bond
protected Bond bond
-
parent
protected XmlReader parent
-
keepChars
protected boolean keepChars
-
chars
protected javajs.util.SB chars
-
domObj
private Object[] domObj
-
attribs
private Object[] attribs
-
attArgs
private Object[] attArgs
-
nullObj
private Object[] nullObj
-
-
Method Detail
-
initializeReader
public void initializeReader() throws Exception
- Overrides:
initializeReader
in classAtomSetCollectionReader
- Throws:
Exception
-
initCML
protected void initCML()
-
setMyError
private void setMyError(String err)
-
parseXML
private String parseXML()
-
processXml
protected void processXml(XmlReader parent, Object saxReader) throws Exception
- Parameters:
parent
-saxReader
-- Throws:
Exception
-
processXml2
protected void processXml2(XmlReader parent, Object saxReader) throws Exception
- Throws:
Exception
-
createDomNodeJS
Object createDomNodeJS(String id, Object data)
totally untested, probably useless- Parameters:
id
-data
-- Returns:
- dom object
-
applySymmetryAndSetTrajectory
public void applySymmetryAndSetTrajectory()
- Overrides:
applySymmetryAndSetTrajectory
in classAtomSetCollectionReader
-
processDOM
protected void processDOM(Object DOMNode)
- Overrides:
processDOM
in classAtomSetCollectionReader
-
processStartElement
protected void processStartElement(String localName, String nodeName)
- Parameters:
localName
-nodeName
- TODO
-
setKeepChars
protected void setKeepChars(boolean TF)
-
processEndElement
void processEndElement(String localName)
- Parameters:
localName
-
-
walkDOMTree
private void walkDOMTree()
-
getDOMAttributesA
private void getDOMAttributesA(Object[] attributes)
-
jsObjectCall
private Object jsObjectCall(Object[] jsObject, String method, Object[] args)
- Parameters:
jsObject
-method
-args
-- Returns:
- object
-
endDocument
public void endDocument()
-
-