public class JDynamiTe extends cb.jdynamite.analyser.DefaultDynamicElement implements ITemplateDocument, java.io.Serializable
setVariable(String, String)
method.parseDynElem(String)
and setDynElemValue(String, String)
methods.setXMLInput(String, String)
). It uses standard XPath syntax,
which refers to data (XML nodes) contained in an external XML file. By this way, no need to programmatically populate this block of data:
JDynamiTe parser automatically does it for you (see parseXMLDynElem(String, boolean)
or parseXMLDynElem()
).DefaultAnalyser
class methods). The default syntax is suitable for most usages.{VARNAME}Defines
VARNAME
as a Variable Element.<!-- BEGIN DYNAMIC : blockName -->Defines
blockName
as a Dynamic Element.<!-- BEGIN XML DYNAMIC : blockName [URI|filename] XPathExpression -->Defines
blockName
as an XML Dynamic Element.URI
or filename
is specified, this "URI" or "filename" is read and XML data are extracted from it.{{[RelativeXPath/]@NODE_ATTRIBUTE_NAME}}If
RelativeXPath/
is not specified, selects the attribute NODE_ATTRIBUTE_NAME
of the current XML Dynamic Element (current XML node).RelativeXPath/
is specified, selects the attribute NODE_ATTRIBUTE_NAME
of the current XML Dynamic Element child node, defined by the
path RelativeXPath/
.{{[RelativeXPath/]text()}}If
RelativeXPath/
is not specified, selects the "text" part of the current XML Dynamic Element (current XML node).RelativeXPath/
is specified, selects the "text" part of the current XML Dynamic Element child node, defined by the
path RelativeXPath/
.
<-- END DYNAMIC : blockName -->means that the Dynamic Element or XML Dynamic Element definition of "blockName" ends on the previous line.
<!-- BEGIN IGNORED : blockName -->means that an ignored block (skipped during analysis and document output) begins on the next line.
<!-- END IGNORED : blockName -->means that this ignored block ends on the previous line.
'.', ':', '_' and '-'
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
INPUT_TEMPLATE_ERROR_TAG
Special variable tag, {__LAST_JDYN_ERROR__}, that you can use in your
template, and which is automatically populated by JDynamiTe, after parsing Dynamic Elements,
with the last error message (it is empty if no error occurred).
|
Constructor and Description |
---|
JDynamiTe()
Constructs an empty "JDynamiTe" (Java Dynamic Template) document.
|
JDynamiTe(java.lang.String name)
Constructs an empty "JDynamiTe" (Java Dynamic Template) document.
|
Modifier and Type | Method and Description |
---|---|
cb.jdynamite.analyser.ITemplateAnalyser |
getAnalyser()
Returns the analyser that parses template documents
(Note: You do not need to directly call this method to use JDynamiTe).
|
cb.jdynamite.analyser.IDynamicElement |
getDynElem(java.lang.String key)
Returns the "Dynamic Element" identified by a string
(note: you do not need to directly call this method to use JDynamiTe).
|
java.util.Enumeration<java.lang.String> |
getDynElemenKeys()
Returns an enumeration of the Dynamic Element keys (identifiers) in this JDynamiTe document.
|
java.lang.String |
getLastError()
Returns error message, possibly set after parsing Dynamic Elements.
|
java.lang.String |
getTemplateDefinition()
For debugging purposes: get the result (structure of the template document) of the analyser parsing.
|
java.lang.String |
getVariable(java.lang.String key)
Returns the value of a variable that was set by setVariable.
|
java.util.Enumeration<java.lang.String> |
getVariableKeys()
Returns an enumeration of the Variable keys (identifiers) in this JDynamiTe document.
|
java.lang.String |
getXMLVariable(java.lang.String xmlDynElemName,
java.lang.String xmlVarName)
Returns the value of an XML Variable in its in current "XML Dynamic Element" context.
|
boolean |
hasXMLElement(java.lang.String dynElemName)
Determines if an XML Dynamic Element has still XML nodes to parse.
|
boolean |
isXMLDynElement(java.lang.String dynElemName)
Determines if a Dynamic Element is an XML Dynamic Element.
|
void |
parse()
Calls the parse method inherited from DefaultDynamicElement.
|
void |
parseDynElem(java.lang.String elementName)
This is a "key" method you call to append elements to the current value of a Dynamic Element.
|
void |
parseXMLDynElem()
Parses recursively all "first level" XML Dynamic Elements.
|
void |
parseXMLDynElem(java.lang.String elementName,
boolean recurse)
Parses an XML Dynamic Element.
|
void |
recordDynElem(java.lang.String key,
cb.jdynamite.analyser.IDynamicElement value)
Records a "Dynamic Element" in this "JDynamiTe" Document
(Note: You do not need to directly call this method to use JDynamiTe).
|
void |
resetAll()
Resets all Variables to empty string and all Dynamic Element values to null.
|
void |
resetAllDynElemValues()
Resets all Dynamic Element values to null.
|
void |
resetAllVariables()
Resets all Variables values to empty String.
|
void |
resetExternalXMLDocuments()
Clears XML external Documents shared list.
|
void |
setAnalyser(cb.jdynamite.analyser.ITemplateAnalyser templateAnalyser)
Sets the analyser that parses template documents
(Note: You do not need to directly call this method to use JDynamiTe).
|
void |
setDynElemValue(java.lang.String elementName,
java.lang.String value)
Sets an arbitrary value to a Dynamic Element.
|
void |
setExternalXMLDocumentsCacheMaxSize(int cacheMaxSize)
Sets XML external Documents shared list maximum size.
|
void |
setInput(java.io.BufferedReader reader)
Starts the analysis of the input template document.
|
void |
setInput(java.io.InputStream istream)
Starts the analysis of the input template document.
|
void |
setInput(java.lang.String fileName)
Starts the analysis of the input template document.
|
void |
setLastError(java.lang.String lastError)
Internal JDynamiTe method used to set error message, after parsing Dynamic Elements.
|
void |
setVariable(java.lang.String key,
java.lang.String value)
Sets the value of a variable.
|
static void |
setVerbose(boolean isVerbose) |
void |
setXMLInput(java.lang.String xmlDynElemName,
java.lang.String value_URI)
Sets or replaces XML input path (URI or filename) of an XML Dynamic Element.
|
void |
setXMLXPathExpression(java.lang.String xmlDynElemName,
java.lang.String xPathExpr)
Replaces XML XPath expression of an XML Dynamic Element.
|
java.lang.String |
toString()
Returns the value (after parsing) of this JDynamiTe document.
|
addElement, getDefinition, getFatherDynElem, getName, getValue, getXMLCurrentNode, getXMLInput, getXMLValue, getXMLXPathExpression, hasXMLElement, isXMLDynElement, parse, parseXML, resetDefinition, setValue, setXMLInput, setXMLXPathExpression
public static final java.lang.String INPUT_TEMPLATE_ERROR_TAG
getLastError()
,
Constant Field Valuespublic JDynamiTe()
public JDynamiTe(java.lang.String name)
name
- The name of this "JDynamiTe" document, used for debugging purposes by the
"getTemplateDefinition" method.public void setInput(java.io.BufferedReader reader) throws java.io.IOException
reader
- A BufferedReader to read the input template document.java.io.IOException
- If an I/O error occurs.setInput(java.io.InputStream)
,
setInput(java.lang.String)
,
DefaultAnalyser
,
setAnalyser(ITemplateAnalyser templateAnalyser)
public void setInput(java.io.InputStream istream) throws java.io.IOException
istream
- A stream to read the input template document.java.io.IOException
- If an I/O error occurs.setInput(java.io.BufferedReader)
,
setInput(java.lang.String)
,
DefaultAnalyser
,
setAnalyser(ITemplateAnalyser templateAnalyser)
public void setInput(java.lang.String fileName) throws java.io.IOException, java.io.FileNotFoundException
fileName
- The name of the file which contains the input template document.java.io.IOException
- If an I/O error occurs.java.io.FileNotFoundException
- Bad filename.setInput(java.io.BufferedReader)
,
setInput(java.io.InputStream)
,
DefaultAnalyser
,
setAnalyser(ITemplateAnalyser templateAnalyser)
public java.lang.String getVariable(java.lang.String key)
getVariable
in interface ITemplateDocument
key
- The key (identifier) of the variable to retrieve.setVariable(java.lang.String, java.lang.String)
public void setVariable(java.lang.String key, java.lang.String value)
setVariable
in interface ITemplateDocument
key
- The key (identifier) of the variable to set.value
- The new value of this variable.getVariable(java.lang.String)
public java.util.Enumeration<java.lang.String> getVariableKeys()
Enumerationkeys = getVariableKeys(); while (keys.hasMoreElements()) { String key = keys.nextElement(); System.err.println(keys); String value = myDatabase.selectValue(key); // get the current value somewhere... myJDynamiTeDoc.setVariable(key, value); // set the template Variable. }
setVariable(java.lang.String, java.lang.String)
,
setInput(InputStream istream)
,
setInput(String fileName)
public cb.jdynamite.analyser.IDynamicElement getDynElem(java.lang.String key)
key
- The "Dynamic Element" identifier. This is the string defined in the
template document in the "BEGIN DYNAMIC" tag. For example:
<-- BEGIN DYNAMIC : myList -->Here "myList" identifies the Dynamic Element which begins.
public java.util.Enumeration<java.lang.String> getDynElemenKeys()
setDynElemValue(String, String)
,
parseDynElem(String)
,
parseXMLDynElem(String, boolean)
,
parseXMLDynElem()
public boolean hasXMLElement(java.lang.String dynElemName)
dynElemName
- "XML Dynamic Element" identifier.isXMLDynElement(String)
public boolean isXMLDynElement(java.lang.String dynElemName)
dynElemName
- Dynamic Element identifierhasXMLElement(String)
,
setXMLInput(String, String)
,
getXMLVariable(String, String)
,
setXMLXPathExpression(String, String)
public void setXMLInput(java.lang.String xmlDynElemName, java.lang.String value_URI)
xmlDynElemName
- "XML Dynamic Element" identifier.value_URI
- new pathisXMLDynElement(String)
public void setXMLXPathExpression(java.lang.String xmlDynElemName, java.lang.String xPathExpr)
xmlDynElemName
- "XML Dynamic Element" identifier.xPathExpr
- new XML XPath expressionisXMLDynElement(String)
public java.lang.String getXMLVariable(java.lang.String xmlDynElemName, java.lang.String xmlVarName)
xmlDynElemName
- xmlVarName
- isXMLDynElement(String)
public void recordDynElem(java.lang.String key, cb.jdynamite.analyser.IDynamicElement value)
recordDynElem
in interface ITemplateDocument
key
- The "Dynamic Element" identifier.value
- An object that implements the IDynamicElement interface.public cb.jdynamite.analyser.ITemplateAnalyser getAnalyser()
getAnalyser
in interface ITemplateDocument
setAnalyser(cb.jdynamite.analyser.ITemplateAnalyser)
public void setAnalyser(cb.jdynamite.analyser.ITemplateAnalyser templateAnalyser)
setAnalyser
in interface ITemplateDocument
templateAnalyser
- The new analyser.getAnalyser()
public void parseDynElem(java.lang.String elementName)
elementName
- The "Dynamic Element" identifier. This is the string defined
in the template document in the "BEGIN DYNAMIC" tag. For example:<-- BEGIN DYNAMIC : myList -->Here "myList" identifies the Dynamic Element that begins.
public void parseXMLDynElem(java.lang.String elementName, boolean recurse)
elementName
- "XML Dynamic Element" identifier.recurse
- If true, this XML Dynamic Element will be recursively parsed (if it contains nested XML Elements).public void parseXMLDynElem()
public static void setVerbose(boolean isVerbose)
public void setDynElemValue(java.lang.String elementName, java.lang.String value)
elementName
- The Dynamic Element identifier.value
- New value for The Dynamic Elementpublic void parse()
toString()
public void setLastError(java.lang.String lastError)
setLastError
in interface ITemplateDocument
getLastError()
,
INPUT_TEMPLATE_ERROR_TAG
public java.lang.String getLastError()
getLastError
in interface ITemplateDocument
INPUT_TEMPLATE_ERROR_TAG
public java.lang.String toString()
toString
in class java.lang.Object
public java.lang.String getTemplateDefinition()
public void resetAll()
resetAllVariables()
,
resetAllDynElemValues()
public void resetAllVariables()
public void resetAllDynElemValues()
public void resetExternalXMLDocuments()
public void setExternalXMLDocumentsCacheMaxSize(int cacheMaxSize)
cacheMaxSize
- New value of list maximum size (must be > 0).resetExternalXMLDocuments()