Package com.adobe.xfa.data
Class DataModel
java.lang.Object
com.adobe.xfa.Obj
com.adobe.xfa.Node
com.adobe.xfa.Element
com.adobe.xfa.Model
com.adobe.xfa.data.DataModel
- All Implemented Interfaces:
Element.DualDomNode
,Model.DualDomModel
,Peer
A class to model the collection of all XFA nodes that make up form data.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final class
The AttributeWrapper exists so that we can pass an Attribute to a method that expects an Element.static interface
Nested classes/interfaces inherited from class com.adobe.xfa.Model
Model.DualDomModel, Model.Publisher
Nested classes/interfaces inherited from class com.adobe.xfa.Element
Element.DualDomNode, Element.ReplaceContent
Nested classes/interfaces inherited from class com.adobe.xfa.Node
Node.ChangeLogger
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final int
Enumeration XFAXMLFormat: FMT_XML_DATA = 3rd party XML, FMT_XPF_DATA = XPF format.static final int
Fields inherited from class com.adobe.xfa.Element
AttrIsDefault, AttrIsFragment, AttrIsTransient, CREATEACTION
Fields inherited from class com.adobe.xfa.Node
CREATE_ALWAYS_NEW, CREATE_IF_NOT_EXIST, CREATE_MUST_NOT_EXIST, CREATE_REPLACE, gsXFANamespacePrefix
Fields inherited from interface com.adobe.xfa.ut.Peer
ATTR_CHANGED, CHILD_ADDED, CHILD_REMOVED, DESCENDENT_ADDED, DESCENDENT_ATTR_CHANGED, DESCENDENT_REMOVED, DESCENDENT_VALUE_CHANGED, PARENT_CHANGED, PERMS_LOCK_CLEARED, PERMS_LOCK_SET, PROTO_ATTR_CHANGED, PROTO_CHILD_ADDED, PROTO_CHILD_REMOVED, PROTO_DESCENDENT_ADDED, PROTO_DESCENDENT_ATTR_CHANGED, PROTO_DESCENDENT_REMOVED, PROTO_DESCENDENT_VALUE_CHANGED, PROTO_VALUE_CHANGED, UPDATED, VALUE_CHANGED
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
appendChild
(Node newChild, boolean bValidate) Appends the given child to this element.void
connectPeerToDocument() is used to rearrange the DOM tree when inserting or appending a node.createChild
(boolean bIsLeaf, String aName) createDataRootElement
(DataNode dataDescription) createElement
(Element parent, Node prevSibling, String uri, String localName, String qName, Attributes attributes, int lineNumber, String fileName) Creates an element with the given parent, sibling, namespace uri, local name and SAX attributes.createNode
(int eClassTag, Element parent, String aNodeName, String ns, boolean bDoVersionCheck) Create an element with the given tag, parent, name and uri.static String
void
disableSchemaValidation
(boolean bMode) static Node
findAssociation
(Node dataDesc, String aAssociationName) Recursive search of a data description for a invalid input: '<'dd:association> with a particular name.findAttrInNS
(Attribute[] attrs, String aNodeName) Given an array of attributes, find the specified node name which exists in a namespace that is compatible with this data model's namespace.findAttrInNS
(Element e, String aNodeName) Find an attribute via loose namespace checking.getDataDescriptionRoot
(String sDataRootName) static DataModel
getDataModel
(AppModel app, boolean bCreateIfNotFound, boolean bAppend) Gets the data model held within an XFA DOM hierarchy.int
static void
getReflectedNodes
(Node dataNode, String aTargetNamespaceURI, String aTargetName, Key targetKey, List<String> oFKeyValueAddressList, Node namespaceContextNode, NodeList results) Recursive search of a data model for nodes of a particular target QName whose foreign key matches the supplied primary key.static DataNode
getRootOfDataDescription
(Node dataDesc) Find a data description node's invalid input: '<'dd:dataDescription> ancestor.void
initFromDataDescription
(Element dataNode) used to ensure an export data tree has a basic population since an export data tree doesn't necessarily have any actual data bindings.void
insertChild
(Node newChild, Node refChild, boolean bValidate) Inserts a child before a specific child in the child list.boolean
isCompatibleNS
(String aNS) Determine if a specified namespace string is compatible with the namespace of this model.void
boolean
void
preSave
(boolean bSaveXMLScript) Prepares thisModel
to be saved.void
remove()
Removes this node from its parent child list.static void
removeDDPlaceholderFlags
(Node dataNode, boolean bDeep) void
static Obj
resolveAssociation
(Element dataNode, String aAssociationName, BooleanHolder foundNullAssociation) resolveRef
(String sSOM, Element contextNode, boolean bDataValue, boolean bDefault) void
serialize
(OutputStream os, DOMSaveOptions options, int level, Node prevSibling) The helper function used by saveXML()void
setSaveFormat
(int format) void
setSourceSetLink
(DataModel.SourceSetLink sourceSetLink) boolean
validateUsage
(int nXFAVersion, int nAvailability, boolean bUpdateVersion) Validate if the given Version and Availability flags are valid for the current documentboolean
validateUsageFailedIsFatal
(int nXFAVersion, int nAvailability) Determines if disallowing a version should be considered a fatal error.Methods inherited from class com.adobe.xfa.Model
addErrorList, addUseHRefNode, addUseNode, addXMLLoadErrorContext, allowUpdates, checkforCompatibleNS, clearErrorList, clone, createElement, createElement, createElement, createElement, createTextNode, createTextNode, doAttributeCleanup, getAliasNode, getAppModel, getAppModelIsTransient, getCachedLocale, getContext, getCurrentVersion, getDelta, getDeltas, getDocument, getErrorContextList, getErrorList, getEventManager, getGenerator, getIDValueMap, getLegacySetting, getLogMessenger, getName, getNeedsNSNormalize, getNode, getNS, getOriginalVersion, getOriginalVersionNode, getOriginalXFAVersion, getProtoList, getSchema, getSourceBelow, getVersion, getXmlPeer, isContainer, isLoading, isVersionCompatible, loadSpecialAttribute, loadSpecialNode, modelCleanup, nodeCleanup, normalizeNameSpaces, normalizeNameSpaces, normalizeNameSpaces, preLoadNode, publish, ready, remapTag, removeLastError, removeReferences, resolveNodes, resolveProtos, setAliasNode, setAppModel, setAppModelIsTransient, setContext, setCurrentVersion, setDOMProperties, setIDValueMap, setName, setNeedsNSNormalize, setOriginalXFAVersion, setXmlPeer, shortCutName, willDirtyDoc, willDirtyDoc
Methods inherited from class com.adobe.xfa.Element
appendChild, appendPI, appendPI, assignNode, clone, constructKey, constructKeys, copyContent, defaultAttribute, defaultElement, defaultElement, establishID, evaluate, explodeQName, findAttr, findSchemaAttr, foundBadAttribute, foundBadAttribute, getAll, getAtom, getAttr, getAttribute, getAttribute, getAttributeByName, getAttrIndex, getAttrName, getAttrNS, getAttrProp, getAttrQName, getAttrVal, getChildReln, getClassAll, getClassIndex, getClassName, getDeltas, getElement, getElement, getElementClass, getElementLocal, getEnum, getEnum, getEventTable, getFirstXFAChild, getFirstXMLChild, getID, getIndex, getInheritedNS, getInstalledLocale, getIsNull, getLastXMLChild, getLineNumber, getLocalName, getModel, getNode, getNodes, getNodeSchema, getNumAttrs, getOneOfChild, getOneOfChild, getPI, getPI, getPrefix, getProperty, getProperty, getSaveXMLSaveTransient, getSchemaType, getScriptMethodInfo, getSibling, getText, getXFAChild, getXMLChild, getXMLName, getXPath, getXsiNilAttribute, inhibitPrettyPrint, inhibitPrettyPrint, isFragment, isHidden, isHidden, isIndexed, isInstalledLocaleAmbient, isLeaf, isNameSpaceAttr, isPropertySpecified, isPropertySpecified, isPropertyValid, isSpecified, isSpecified, isSpecified, isTransient, isTransparent, isValidAttr, isValidChild, isValidElement, loadXML, loadXML, makeDefault, makeNonDefault, newAttribute, optimizeNameSpace, peekAttribute, peekElement, peekOneOfChild, peekProperty, peekProperty, postSave, privateSetName, processTextChildrenDuringParse, removeAttr, removeAttr, removeChild, removePI, removePI, removeWhiteSpace, removeXsiNilAttribute, replaceChild, resolveAndEnumerateChildren, resolveNodeCreate, resolvePrefix, saveFilteredXML, saveXML, saveXML, setAttribute, setAttribute, setAttribute, setAttribute, setAttrProp, setDefaultFlag, setElement, setIsDataWindowRoot, setIsIndexed, setLineNumber, setLocalName, setModel, setNS, setOneOfChild, setProperty, setProperty, setQName, setSaveXMLSaveTransient, setTransparent, setXMLName, setXsiNilAttribute, updateFromPeer
Methods inherited from class com.adobe.xfa.Node
checkAncestorPerms, checkDescendentPerms, checkPerms, cleanDirtyFlags, compareVersions, getData, getFirstXMLChildElement, getLocked, getNextXFASibling, getNextXMLSibling, getNextXMLSiblingElement, getNodeAsXML, getOwnerDocument, getPIAsXML, getPIName, getPreviousXMLSibling, getPrivateName, getPropName, getSOMExpression, getSOMExpression, getSomName, getUniqueSOMName, getWillDirty, getXFAChildCount, getXFAParent, getXfaPeer, getXMLChildCount, getXMLParent, hasChanged, isDefault, isDirty, isMapped, isPermsLockSet, isTransient, locateChildByClass, locateChildByName, logValueChangeHelper, notifyPeers, performSOMAssignment, resolveNode, resolveNode, resolveNode, resolveNodes, sendMessenge, setDirty, setDocument, setLocked, setMapped, setPermsLock, setPrivateName, setWillDirty, setXfaPeer, unLock, validateSchema
Methods inherited from class com.adobe.xfa.Obj
addPeer, addPeeredNode, clearPeers, deafen, getClassAtom, getClassTag, getPeer, getScriptProperty, getScriptThis, invokeFunction, isDeaf, isMute, isSameClass, isSameClass, isSameClass, mute, peerRemoved, removePeer, removePeeredNode, setClass, setClassTag, setScriptProperty, unDeafen, unMute
-
Field Details
-
FMT_XML_DATA
public static final int FMT_XML_DATAEnumeration XFAXMLFormat:- FMT_XML_DATA = 3rd party XML,
- FMT_XPF_DATA = XPF format.
- See Also:
-
FMT_XPF_DATA
public static final int FMT_XPF_DATA- See Also:
-
-
Constructor Details
-
DataModel
Default Constructor.
-
-
Method Details
-
dataDescriptionNS
-
getDataModel
Gets the data model held within an XFA DOM hierarchy.- Parameters:
app
- the application model.bCreateIfNotFound
- when true, create a data model if needed.bAppend
- when true, append any underling xml to the xfa root element when loading, and when false, create orphan xfa:datasets and xfa:data nodes. This behaviour occurs only works when bCreateIfNotFound is set to true.- Returns:
- the data model, or null if none found.
-
getScriptTable
- Overrides:
getScriptTable
in classModel
-
appendChild
Description copied from class:Element
Appends the given child to this element.- Overrides:
appendChild
in classElement
- Parameters:
newChild
- the child node being appended.bValidate
- when true, ensures the given child is valid per the model's schema and throws anExFull
if not.
-
createChild
-
createNode
public Node createNode(int eClassTag, Element parent, String aNodeName, String ns, boolean bDoVersionCheck) Description copied from class:Model
Create an element with the given tag, parent, name and uri.- Specified by:
createNode
in classModel
- Parameters:
eClassTag
- the element's tag.parent
- the element's parent.aNodeName
- the element's name.ns
- the element's namespace.bDoVersionCheck
- check the element's version.- Returns:
- a new element.
-
createElement
public Element createElement(Element parent, Node prevSibling, String uri, String localName, String qName, Attributes attributes, int lineNumber, String fileName) Description copied from class:Model
Creates an element with the given parent, sibling, namespace uri, local name and SAX attributes.- Overrides:
createElement
in classModel
- Parameters:
parent
- the element's parent, if any.prevSibling
- the element's previous sibling, if any.uri
- the element's namespace. This string must be interned.localName
- the element's name. This string must be interned.qName
- the element's qualified name. This string must be interned.attributes
- the element's (SAX) attribute definitions.- Returns:
- a new element conformant to our schema.
- See Also:
-
findAttrInNS
Find an attribute via loose namespace checking. Our check simply verifies that the namespace is compatible with any variation of namespaces for this model. Using the variations are simply changes in version number.- Parameters:
e
- the element to searchaNodeName
- the local name of the attribute- Returns:
- attribute index. -1 if not found.
-
findAttrInNS
Given an array of attributes, find the specified node name which exists in a namespace that is compatible with this data model's namespace. (This is a direct port of the C++ method by the same name, unlike the other variant of findAttrInNS above).- Parameters:
attrs
- the array of attributes to searchaNodeName
- the local name of the attribute- Returns:
- the attribute. null if not found.
-
getBaseNS
-
getDataDescriptionRoot
-
createDataRootElement
-
connectPeerToDocument
public void connectPeerToDocument()Description copied from class:Element
connectPeerToDocument() is used to rearrange the DOM tree when inserting or appending a node. It is provided here as a utility function for derived classes that could be adding child nodes, when peered against an orphan node. In particular, this happens with xfa:datasets and xfa:data, both of which may be created during the load process. On the C++ side, this method is only used by the data model. Due to the differences between the relationship of Documents and AppModels in Java, on the Java side it is also called when creating a DOM from scratch, from any ModelFactory's createDOM method. In the DataModel context at least, it should only be called if the DOM peer is an orphan. It takes that orphan and connects it to the document, and then moves the original peer of this node to be a child of the node that previously was orphaned.- Overrides:
connectPeerToDocument
in classElement
-
getDataRoot
-
getDataWindow
-
getSourceSetLink
-
initFromDataDescription
used to ensure an export data tree has a basic population since an export data tree doesn't necessarily have any actual data bindings. -
insertChild
Description copied from class:Element
Inserts a child before a specific child in the child list.- Overrides:
insertChild
in classElement
- Parameters:
newChild
- the child to be insertedrefChild
- the child to insert beforebValidate
- if true, validate the insertion
-
isCompatibleNS
Description copied from class:Model
Determine if a specified namespace string is compatible with the namespace of this model. Essentially this determines if the two namespaces are equivalent (though the strings that represent them may not be identical).- Overrides:
isCompatibleNS
in classModel
- Parameters:
aNS
- The namespace to compare.
-
loadNode
-
loadRootAttributes
public boolean loadRootAttributes()- Overrides:
loadRootAttributes
in classModel
-
preSave
public void preSave(boolean bSaveXMLScript) Description copied from class:Model
Prepares thisModel
to be saved. Any model maintenance that may have been deferred is performed to ensure that the serialized form of theModel
is correct. This method is called automatically before aModel
is serialized to a stream, so it does not normally need to be called directly. The exception is when aDocument
is saved usingDocument.saveAs(java.io.OutputStream, Node, DOMSaveOptions)
orDocument.saveXML(java.io.OutputStream, DOMSaveOptions)
. -
remove
public void remove()Description copied from class:Node
Removes this node from its parent child list. -
removeDDPlaceholderFlags
-
resetPostLoadXML
public void resetPostLoadXML()- Overrides:
resetPostLoadXML
in classElement
-
resolveRef
-
serialize
public void serialize(OutputStream os, DOMSaveOptions options, int level, Node prevSibling) throws IOException Description copied from class:Node
The helper function used by saveXML()- Overrides:
serialize
in classModel
- Parameters:
os
- Streamfile to write tooptions
- save optionslevel
- the indent levelprevSibling
- our previous sibling -- needed for some markup options.- Throws:
IOException
- See Also:
-
setSourceSetLink
-
setSaveFormat
public void setSaveFormat(int format) -
validateUsage
public boolean validateUsage(int nXFAVersion, int nAvailability, boolean bUpdateVersion) Description copied from class:Obj
Validate if the given Version and Availability flags are valid for the current document- Overrides:
validateUsage
in classModel
- Parameters:
nXFAVersion
- The target XFA VersionnAvailability
- The target Availability flags, this indicates for what clients the script is availablebUpdateVersion
- indicates if the model version can be updated by the calling code- Returns:
- if true, Version and Availability flags are valid
- See Also:
-
validateUsageFailedIsFatal
public boolean validateUsageFailedIsFatal(int nXFAVersion, int nAvailability) Description copied from class:Obj
Determines if disallowing a version should be considered a fatal error.This method is called after calling
Obj.validateUsage(int, int, boolean)
when that method returns false.- Overrides:
validateUsageFailedIsFatal
in classModel
- Parameters:
nXFAVersion
- The target XFA VersionnAvailability
- The target Availability flags, this indicates for what clients the script is available- Returns:
- true if disallowing nVersion should be considered a fatal error
- See Also:
-
disableSchemaValidation
public void disableSchemaValidation(boolean bMode) -
getHeadNS
-
getHeadVersion
public int getHeadVersion()- Overrides:
getHeadVersion
in classModel
-
resolveAssociation
public static Obj resolveAssociation(Element dataNode, String aAssociationName, BooleanHolder foundNullAssociation) -
getRootOfDataDescription
Find a data description node's invalid input: '<'dd:dataDescription> ancestor. -
findAssociation
Recursive search of a data description for a invalid input: '<'dd:association> with a particular name. The first hit is returned. -
getReflectedNodes
public static void getReflectedNodes(Node dataNode, String aTargetNamespaceURI, String aTargetName, Key targetKey, List<String> oFKeyValueAddressList, Node namespaceContextNode, NodeList results) Recursive search of a data model for nodes of a particular target QName whose foreign key matches the supplied primary key. All hits are returned.
-