SMACS

smacs.write.script
Class JavaFieldResolver

java.lang.Object
  extended byorg.dom4j.tree.AbstractNode
      extended byorg.dom4j.tree.AbstractBranch
          extended byorg.dom4j.tree.AbstractElement
              extended byorg.dom4j.tree.DefaultElement
                  extended bysmacs.tree.ScriptNode
                      extended bysmacs.write.script.JavaScriptNode
                          extended bysmacs.write.script.JavaScriptInvisibleNode
                              extended bysmacs.write.script.JavaFieldResolver
All Implemented Interfaces:
Branch, Cloneable, CreateListener, Element, EventListener, FixNode, FixNodeListener, GetName, GetSimpleNode, HasNodeHandler, HasNodeReferenceAttribute, smacs.tree.HasNodeReferenceId, IsaNodeReferenceChildListener, IsaNodeReferenceListener, JavaSimpleNode, NewSimpleNode, Node, Node, PrintScriptElement, Serializable, SimpleElement, SimpleNode, SimpleNodeChild, SmacsFixNode
Direct Known Subclasses:
JavaConditionStatement.Resolver

public class JavaFieldResolver
extends JavaScriptInvisibleNode

field resolver for sql expression copies.

While writing the PlSql script we might create a cursor that contains some "fields" on return of the select clause. These fields shall be resolved in any of the sql expressions about to be copied directly into the output script - essentially we have to subsitute a "fieldname" by "cursorrecord.fieldname" and we have to ensure that during DynamicSQL we interrupt the string mode.

A necessary prerequisite is simply having a list of mappings of fieldnames into a target clause. We'll also push a set of helper functions into this class that are used anywhere there will be a mapping to be performed.

Author:
Copyright (C) 2004, Guido Draheim. All rights reserved. Part of SMACS project.
See Also:
Serialized Form

Nested Class Summary
static class JavaFieldResolver.ViaCursor
          resolve via cursor. a helper that defines a custom JavaFieldResolver.ViaCursor.print(JavaPrintStream) method.
 
Field Summary
static String GetResultSetField
           
 
Fields inherited from class smacs.tree.ScriptNode
_NodeHandler, log, TokenValue
 
Fields inherited from class org.dom4j.tree.AbstractElement
EMPTY_ITERATOR, EMPTY_LIST, USE_STRINGVALUE_SEPARATOR, VERBOSE_TOSTRING
 
Fields inherited from class org.dom4j.tree.AbstractBranch
DEFAULT_CONTENT_LIST_SIZE, outputFormat
 
Fields inherited from class org.dom4j.tree.AbstractNode
NODE_TYPE_NAMES
 
Fields inherited from interface smacs.tree.SimpleNode
TokenValue
 
Fields inherited from interface org.dom4j.Node
ANY_NODE, ATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_REFERENCE_NODE, MAX_NODE_TYPE, NAMESPACE_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE, UNKNOWN_NODE
 
Constructor Summary
JavaFieldResolver()
          constructor.
JavaFieldResolver(JavaRecordVariable var)
          constructor. add mapping list of given record layout
JavaFieldResolver(String name)
          Deprecated. do not override default node name. use constructor without name argument.
JavaFieldResolver(String name, JavaRecordVariable var)
          Deprecated. do not override default node name. use constructor without name argument.
 
Method Summary
 void addAllFromCursorRecord(JavaRecordVariable var)
          add mapping list from record layout.
 void addFieldFromCursorRecord(String field, JavaRecordVariable var)
          add mapping for record prefix.
 void replaceSqlTableReferenceNodes(SimpleNode tree)
          resolve TableReferences in sql snippets.
 
Methods inherited from class smacs.write.script.JavaScriptInvisibleNode
print
 
Methods inherited from class smacs.write.script.JavaScriptNode
adds, freeze, freezeJavaChildren, newNode, newNode, print, printJavaChildren, printJavaChildrenBlock, printJavaChildrenBlock, printJavaChildrenSection, printstring, resolve, resolveJavaChildren
 
Methods inherited from class smacs.tree.ScriptNode
_fixNodeTree, _getTokenValue, _getValueTokenValue, _hasTokenValue, _init, add, add, addAll, addAll, addChild, addChild, addNewNode, addNodeReference, addNodeReference, addNodeReference, addNodeReference, appendAttributes, appendText, clear, cloneFrom, contains, containsAll, countTokenName, dump, fireNodeReferenceChildHasChanged, fireNodeReferenceHasChanged, firstTokenName, firstTokenName, fixNode, fixNodeTree, get, getAttributeValue, getHandler, getId, getMember, getMember, getMember, getMember, getMemberChild, getMemberChild, getMemberChild, getMemberList, getMemberListChild, getMemberOption, getMemberOption, getMemberOption, getMemberValue, getMemberValue, getMemberValue, getNodeNameFromClassName, getNodeReferenceCount, getNodeReferenceCount, getNodeReferenceId, getNodeReferenceId, getOption, getOption, getOption, getParentNode, getParentNode, getParentNode, getParentNode, getSimpleNode, getSingleTextChild, getThisParentNode, getThisParentNode, getTokenName, getTokenValue, hasChildren, hasMember, hasMember, hasNodeHandler, hasNodeReference, hasNodeReferenceChildNodes, hasNodeReferenceChildNodes, hasNodeReferenceId, hasNodeReferenceId, hasSingleTextChild, hasTokenName, hasTokenValue, indexOf, isEmpty, iterator, jjtAccept, jjtAddChild, jjtClose, jjtGetChild, jjtGetNumChildren, jjtGetParent, jjtOpen, jjtSetParent, lastIndexOf, lastTokenName, lastTokenName, listIterator, listIterator, memberElement, newChildren, newNode, newNode, newNode, newNode, newNode, newNode, newNode, newNode, newNodeLike, newNodeReferenceAttribute, newNodeReferenceAttribute, newNodeReferenceId, newNodeReferenceId, onNodeReferenceChildHasChanged, onNodeReferenceHasChanged, printXML, printXML, removeAll, removeAttribute, removeChild, removeChild, removeNodeReference, replace, retainAll, set, setHandler, setMemberChild, setMemberChild, setMemberChild, setMemberList, setMemberListChild, setMemberOption, setMemberOption, setMemberOption, setMemberValue, setMemberValue, setMemberValue, setNodeReference, setNodeReference, setNodeReference, setOption, setOption, setOption, setOption, setTokenName, setTokenValue, size, strSingleTextChild, subList, toArray, toArray, toString, toString, toXML, toXML
 
Methods inherited from class org.dom4j.tree.DefaultElement
add, additionalNamespaces, additionalNamespaces, addNewNode, attribute, attribute, attribute, attribute, attributeCount, attributeIterator, attributeList, attributeList, attributes, clearContent, clone, contentList, declaredNamespaces, element, element, element, elementIterator, elementIterator, elementIterator, elementIterator, elements, elements, elements, elements, getDocument, getDocumentFactory, getNamespaceForPrefix, getNamespaceForURI, getParent, getQName, getStringValue, getText, indexOf, node, nodeCount, nodeIterator, processingInstruction, processingInstructions, processingInstructions, remove, removeNode, removeProcessingInstruction, setAttributeList, setAttributes, setContent, setDocument, setParent, setQName, supportsParent
 
Methods inherited from class org.dom4j.tree.AbstractElement
accept, add, add, add, add, add, add, add, add, addAttribute, addAttribute, addCDATA, addComment, addElement, addEntity, addNamespace, addNode, addProcessingInstruction, addProcessingInstruction, addText, asXML, attributeValue, attributeValue, attributeValue, attributeValue, childAdded, childRemoved, createAttributeList, createAttributeList, createCopy, createCopy, createCopy, createElement, createElement, createSingleIterator, elementText, elementText, elementTextTrim, elementTextTrim, ensureAttributesCapacity, getData, getName, getNamespace, getNamespacePrefix, getNamespaceURI, getNodeType, getPath, getQName, getQualifiedName, getUniquePath, getXPathNameStep, getXPathResult, hasMixedContent, isRootElement, isTextOnly, normalize, remove, remove, remove, remove, remove, remove, remove, remove, setAttributes, setAttributeValue, setAttributeValue, setData, setName, setNamespace, setText, write
 
Methods inherited from class org.dom4j.tree.AbstractBranch
addElement, addElement, addElement, appendContent, content, contentRemoved, createContentList, createContentList, createEmptyList, createResultList, createSingleResultList, elementByID, elementID, getContentAsStringValue, getContentAsText, getTextTrim, hasContent, invalidNodeTypeAddException, isReadOnly, setProcessingInstructions
 
Methods inherited from class org.dom4j.tree.AbstractNode
asXPathResult, createPattern, createXPath, createXPathFilter, createXPathResult, detach, getNodeTypeName, getPath, getUniquePath, matches, numberValueOf, selectNodes, selectNodes, selectNodes, selectObject, selectSingleNode, valueOf
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface smacs.tree.SimpleNode
add, add, addAll, addAll, addChild, addChild, addNewNode, addNodeReference, addNodeReference, addNodeReference, addNodeReference, appendAttributes, appendText, clear, cloneFrom, contains, containsAll, countTokenName, dump, fireNodeReferenceChildHasChanged, fireNodeReferenceHasChanged, firstTokenName, firstTokenName, fixNode, fixNodeTree, get, getAttributeValue, getHandler, getId, getMember, getMember, getMember, getMember, getMemberChild, getMemberChild, getMemberChild, getMemberList, getMemberListChild, getMemberOption, getMemberOption, getMemberOption, getMemberValue, getMemberValue, getMemberValue, getNodeReferenceCount, getNodeReferenceCount, getNodeReferenceId, getNodeReferenceId, getOption, getOption, getOption, getParentNode, getParentNode, getParentNode, getParentNode, getSimpleNode, getSingleTextChild, getThisParentNode, getThisParentNode, getTokenName, getTokenValue, hasChildren, hasMember, hasMember, hasNodeHandler, hasNodeReference, hasNodeReferenceChildNodes, hasNodeReferenceChildNodes, hasNodeReferenceId, hasNodeReferenceId, hasSingleTextChild, hasTokenName, hasTokenValue, indexOf, isEmpty, iterator, jjtAccept, jjtAddChild, jjtClose, jjtGetChild, jjtGetNumChildren, jjtGetParent, jjtOpen, jjtSetParent, lastIndexOf, lastTokenName, lastTokenName, listIterator, listIterator, memberElement, newChildren, newNode, newNode, newNode, newNode, newNode, newNode, newNode, newNode, newNodeReferenceAttribute, onNodeReferenceChildHasChanged, onNodeReferenceHasChanged, printXML, printXML, removeAll, removeAttribute, removeChild, removeChild, removeNodeReference, replace, retainAll, set, setHandler, setMemberChild, setMemberChild, setMemberChild, setMemberList, setMemberListChild, setMemberOption, setMemberOption, setMemberOption, setMemberValue, setMemberValue, setMemberValue, setNodeReference, setNodeReference, setNodeReference, setOption, setOption, setOption, setOption, setTokenName, setTokenValue, size, strSingleTextChild, subList, toArray, toArray, toString, toString, toXML, toXML
 
Methods inherited from interface org.dom4j.Element
add, add, add, add, add, addAttribute, addAttribute, addCDATA, addComment, addEntity, additionalNamespaces, addNamespace, addProcessingInstruction, addProcessingInstruction, addText, attribute, attribute, attribute, attributeCount, attributeIterator, attributes, attributeValue, attributeValue, attributeValue, attributeValue, createCopy, createCopy, createCopy, declaredNamespaces, element, element, elementIterator, elementIterator, elementIterator, elements, elements, elements, elementText, elementText, elementTextTrim, elementTextTrim, getData, getNamespace, getNamespaceForPrefix, getNamespaceForURI, getNamespacePrefix, getNamespaceURI, getQName, getQName, getQualifiedName, getStringValue, getText, getTextTrim, getXPathResult, hasMixedContent, isRootElement, isTextOnly, remove, remove, remove, remove, remove, setAttributes, setAttributeValue, setAttributeValue, setData, setQName
 
Methods inherited from interface org.dom4j.Branch
add, add, add, add, addElement, addElement, addElement, appendContent, clearContent, content, elementByID, indexOf, node, nodeCount, nodeIterator, normalize, processingInstruction, processingInstructions, processingInstructions, remove, remove, remove, remove, removeProcessingInstruction, setContent, setProcessingInstructions
 
Methods inherited from interface org.dom4j.Node
accept, asXML, asXPathResult, clone, createXPath, detach, getDocument, getName, getNodeType, getNodeTypeName, getParent, getPath, getPath, getUniquePath, getUniquePath, hasContent, isReadOnly, matches, numberValueOf, selectNodes, selectNodes, selectNodes, selectObject, selectSingleNode, setDocument, setName, setParent, setText, supportsParent, valueOf, write
 
Methods inherited from interface smacs.util.listen.GetName
getName
 

Field Detail

GetResultSetField

public static final String GetResultSetField
See Also:
Constant Field Values
Constructor Detail

JavaFieldResolver

public JavaFieldResolver()
constructor.


JavaFieldResolver

public JavaFieldResolver(String name)
Deprecated. do not override default node name. use constructor without name argument.

constructor. make with given node name.


JavaFieldResolver

public JavaFieldResolver(JavaRecordVariable var)
constructor. add mapping list of given record layout


JavaFieldResolver

public JavaFieldResolver(String name,
                         JavaRecordVariable var)
Deprecated. do not override default node name. use constructor without name argument.

constructor. make with given node name and record variable.

Method Detail

addAllFromCursorRecord

public void addAllFromCursorRecord(JavaRecordVariable var)
add mapping list from record layout. For each field registered in the given record variable do record a fetch value mapping


addFieldFromCursorRecord

public void addFieldFromCursorRecord(String field,
                                     JavaRecordVariable var)
add mapping for record prefix. If a given field name exists then assert to fetch it in the script from the given record variable.


replaceSqlTableReferenceNodes

public void replaceSqlTableReferenceNodes(SimpleNode tree)
resolve TableReferences in sql snippets. Scan for SqlTableColumn nodes - fetch its sql name - check whether a name mapping has been registered for that name - replace with a name-node that gets the value from a java sql record variable during JavaScriptInvisibleNode.print(JavaPrintStream)

See Also:
JavaFieldResolver.ViaCursor

SMACS