Package org.kapott.hbci.protocol
Class SyntaxElement
java.lang.Object
org.kapott.hbci.protocol.SyntaxElement
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final boolean
static final boolean
static final boolean
static final boolean
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
SyntaxElement
(String type, String name, String path, char predelim, int idx, StringBuffer res, int fullResLen, Document syntax, Hashtable<String, String> predefs, Hashtable<String, String> valids) beim parsen: initialisiert ein neues syntaxelement mit der id 'name'; in 'path' wird der pfad bis zu dieser stelle uebergeben 'predelim' gibt das delimiter-zeichen an, das beim parsen vor diesem syntax- element stehen muesste 'idx' ist die nummer des syntaxelementes innerhalb der uebergeordneten liste (die liste repraesentiert das evtl.protected
SyntaxElement
(String type, String name, String path, int idx, Document syntax) es wird ein syntaxelement mit der id 'name' initialisiert; der pfad bis zu diesem element wird in 'path' uebergeben; 'idx' ist die nummer dieses elementes innerhalb der syntaxelementliste fuer dieses element (falls ein bestimmtes syntaxelement mehr als einmal auftreten kann) -
Method Summary
Modifier and TypeMethodDescriptionprotected void
int
checkSegSeq
(int value) protected MultipleSyntaxElements
createAndAppendNewChildContainer
(Node ref, Document syntax) protected abstract MultipleSyntaxElements
createNewChildContainer
(Node ref, Document syntax) erzeugt einen neuen Child-Container, welcher durch den xml-knoten 'ref' identifiziert wird; wird beim erzeugen von elementen benutztprotected void
destroy()
int
enumerateSegs
(int startValue, boolean allowOverwrite) loop through all child-elements; the segments found there will be sequentially enumerated starting with num startValue; if startValue is zero, the segments will not be enumerated, but all given the number 0void
extractValues
(Hashtable<String, String> values) fuellt die hashtable 'values' mit den werten der de-syntaxelemente; dazu wird in allen anderen typen von syntaxelementen die liste der child-elemente durchlaufen und deren 'fillValues' methode aufgerufengetElement
(String path) void
getElementPaths
(Properties p, int[] segref, int[] degref, int[] deref) protected abstract String
gibt einen string mit den typnamen (msg,seg,deg,de,...) des elementes zurueckprotected abstract char
liefert das delimiter-zeichen zurueck, dass innerhalb dieses syntaxelementes benutzt wird, um die einzelnen child-elemente voneinander zu trennengetName()
final String
getPath()
int
protected char
final Node
getSyntaxDef
(String type, Document syntax) getType()
getValueOfDE
(String path) getValueOfDE
(String path, int zero) protected void
init
(String type, String name, String path, char predelim, int idx, StringBuffer res, int fullResLen, Document syntax, Hashtable<String, String> predefs, Hashtable<String, String> valids) protected void
boolean
isValid()
protected MultipleSyntaxElements
parseAndAppendNewChildContainer
(Node ref, char predelim0, char predelim1, StringBuffer res, int fullResLen, Document syntax, Hashtable<String, String> predefs, Hashtable<String, String> valids) protected abstract MultipleSyntaxElements
parseNewChildContainer
(Node ref, char predelim0, char predelim1, StringBuffer res, int fullResLen, Document syntax, Hashtable<String, String> predefs, Hashtable<String, String> valids) beim parsen: haengt an die 'childElements' ein neues Element an.boolean
propagateValue
(String destPath, String value, boolean tryToCreate, boolean allowOverwrite) setzt den wert eines de; in allen syntaxelementen ausser DE wird dazu die liste der child-elemente durchlaufen; jedem dieser child-elemente wird der wert zum setzen uebergeben; genau _eines_ dieser elemente wird sich dafuer zustaendig fuehlen (das DE mit 'path'='destPath') und den wert uebernehmenprotected void
void
setParent
(MultipleSyntaxElements parent) protected void
protected void
protected final void
setValid
(boolean valid) protected boolean
storeValidValueInDE
(String destPath, String value) toString
(int zero) diese toString() methode wird benutzt, um den wert eines de-syntaxelementes in human-readable-form zurueckzugeben.void
validate()
ueberpreuft, ob das syntaxelement alle restriktionen einhaelt; ist das nicht der fall, so wird eine Exception ausgeloest.
-
Field Details
-
TRY_TO_CREATE
public static final boolean TRY_TO_CREATE- See Also:
-
DONT_TRY_TO_CREATE
public static final boolean DONT_TRY_TO_CREATE- See Also:
-
ALLOW_OVERWRITE
public static final boolean ALLOW_OVERWRITE- See Also:
-
DONT_ALLOW_OVERWRITE
public static final boolean DONT_ALLOW_OVERWRITE- See Also:
-
-
Constructor Details
-
SyntaxElement
es wird ein syntaxelement mit der id 'name' initialisiert; der pfad bis zu diesem element wird in 'path' uebergeben; 'idx' ist die nummer dieses elementes innerhalb der syntaxelementliste fuer dieses element (falls ein bestimmtes syntaxelement mehr als einmal auftreten kann) -
SyntaxElement
protected SyntaxElement(String type, String name, String path, char predelim, int idx, StringBuffer res, int fullResLen, Document syntax, Hashtable<String, String> predefs, Hashtable<String, String> valids) beim parsen: initialisiert ein neues syntaxelement mit der id 'name'; in 'path' wird der pfad bis zu dieser stelle uebergeben 'predelim' gibt das delimiter-zeichen an, das beim parsen vor diesem syntax- element stehen muesste 'idx' ist die nummer des syntaxelementes innerhalb der uebergeordneten liste (die liste repraesentiert das evtl. mehrmalige auftreten eines syntaxelementes, siehe class syntaxelementlist) 'res' ist der zu parsende String 'predefs' soll eine menge von pfad-wert-paaren enthalten, die fuer einige syntaxelemente den wert angeben, den diese elemente zwingend haben muessen (z.b. ein bestimmter segmentcode o.ae.)
-
-
Method Details
-
getElementTypeName
gibt einen string mit den typnamen (msg,seg,deg,de,...) des elementes zurueck -
getInDelim
protected abstract char getInDelim()liefert das delimiter-zeichen zurueck, dass innerhalb dieses syntaxelementes benutzt wird, um die einzelnen child-elemente voneinander zu trennen -
createNewChildContainer
erzeugt einen neuen Child-Container, welcher durch den xml-knoten 'ref' identifiziert wird; wird beim erzeugen von elementen benutzt -
parseNewChildContainer
protected abstract MultipleSyntaxElements parseNewChildContainer(Node ref, char predelim0, char predelim1, StringBuffer res, int fullResLen, Document syntax, Hashtable<String, String> predefs, Hashtable<String, String> valids) beim parsen: haengt an die 'childElements' ein neues Element an. der xml-knoten 'ref' gibt an, um welches element es sich dabei handelt; aus 'res' (der zu parsende String) wird der wert fuer das element ermittelt (falls es sich um ein de handelt); in 'predefined' ist der wert des elementes zu finden, der laut syntaxdefinition ('syntax') an dieser stelle auftauchen mueste (optional; z.b. fuer segmentcodes); 'predelim*' geben die delimiter an, die direkt vor dem zu erzeugenden syntaxelement auftauchen muessten -
init
-
createAndAppendNewChildContainer
-
storeValidValueInDE
-
enumerateSegs
public int enumerateSegs(int startValue, boolean allowOverwrite) loop through all child-elements; the segments found there will be sequentially enumerated starting with num startValue; if startValue is zero, the segments will not be enumerated, but all given the number 0- Parameters:
startValue
- value to be used for the first segment found- Returns:
- next sequence number usable for enumeration
-
init
-
parseAndAppendNewChildContainer
protected MultipleSyntaxElements parseAndAppendNewChildContainer(Node ref, char predelim0, char predelim1, StringBuffer res, int fullResLen, Document syntax, Hashtable<String, String> predefs, Hashtable<String, String> valids) -
extractValues
fuellt die hashtable 'values' mit den werten der de-syntaxelemente; dazu wird in allen anderen typen von syntaxelementen die liste der child-elemente durchlaufen und deren 'fillValues' methode aufgerufen -
addChildContainer
-
getChildContainers
- Returns:
- the ArrayList containing all child-elements (the elements of the ArrayList are instances of the SyntaxElementArray class
-
propagateValue
public boolean propagateValue(String destPath, String value, boolean tryToCreate, boolean allowOverwrite) setzt den wert eines de; in allen syntaxelementen ausser DE wird dazu die liste der child-elemente durchlaufen; jedem dieser child-elemente wird der wert zum setzen uebergeben; genau _eines_ dieser elemente wird sich dafuer zustaendig fuehlen (das DE mit 'path'='destPath') und den wert uebernehmen -
getValueOfDE
- Returns:
- den wert eines bestimmten DE; funktioniert analog zu 'propagateValue'
-
getValueOfDE
-
getElement
- Parameters:
path
- path to the element to be returned- Returns:
- the element identified by path
-
setPath
-
getPath
- Returns:
- the path to this element
-
setName
-
getName
- Returns:
- the name of this element (i.e. the last component of path)
-
setType
-
getType
-
getPreDelim
protected char getPreDelim()- Returns:
- the delimiter that must be in front of this element
-
getSyntaxDef
- Parameters:
type
- the name of the syntaxelement to be returnedsyntax
- the structure containing the current syntaxdefinition- Returns:
- a XML-node with the definition of the requested syntaxelement
-
toString
diese toString() methode wird benutzt, um den wert eines de-syntaxelementes in human-readable-form zurueckzugeben. innerhalb eines de-elementes wird der wert in der hbci-form gespeichert -
setValid
protected final void setValid(boolean valid) -
isValid
public boolean isValid() -
checkSegSeq
public int checkSegSeq(int value) -
validate
public void validate()ueberpreuft, ob das syntaxelement alle restriktionen einhaelt; ist das nicht der fall, so wird eine Exception ausgeloest. die meisten syntaxelemente koennen sich nicht selbst ueberpruefen, sondern rufen statt dessen die validate-funktion der child-elemente auf -
getElementPaths
-
setParent
-
getParent
-
getPosInMsg
public int getPosInMsg() -
destroy
protected void destroy()
-