Package org.kapott.hbci.protocol
Class SyntaxElement
- java.lang.Object
-
- org.kapott.hbci.protocol.SyntaxElement
-
-
Field Summary
Fields Modifier and Type Field Description static booleanALLOW_OVERWRITEstatic booleanDONT_ALLOW_OVERWRITEstatic booleanDONT_TRY_TO_CREATEstatic booleanTRY_TO_CREATE
-
Constructor Summary
Constructors Modifier Constructor Description protectedSyntaxElement(String type, String name, String path, char predelim, int idx, StringBuilder res, int fullResLen, Document document, Map<String,String> predefs, Map<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 document- element stehen muesste 'idx' ist die nummer des syntaxelementes innerhalb der uebergeordneten liste (die liste repraesentiert das evtl.protectedSyntaxElement(String type, String name, String path, int idx, Document document)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
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description intcheckSegSeq(int value)protected MultipleSyntaxElementscreateAndAppendNewChildContainer(Node ref, Document document)protected abstract MultipleSyntaxElementscreateNewChildContainer(Node ref, Document document)erzeugt einen neuen Child-Container, welcher durch den xml-knoten 'ref' identifiziert wird; wird beim erzeugen von elementen benutztintenumerateSegs(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 0voidextractValues(Map<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 aufgerufenList<MultipleSyntaxElements>getChildContainers()SyntaxElementgetElement(String path)voidgetElementPaths(Map<String,String> p, int[] segref, int[] degref, int[] deref)protected abstract StringgetElementTypeName()gibt einen string mit den typnamen (msg,seg,deg,de,...) des elementes zurueckprotected abstract chargetInDelim()liefert das delimiter-zeichen zurueck, dass innerhalb dieses syntaxelementes benutzt wird, um die einzelnen child-elemente voneinander zu trennenStringgetName()MultipleSyntaxElementsgetParent()StringgetPath()intgetPosInMsg()NodegetSyntaxDef(String type, Document document)StringgetType()StringgetValueOfDE(String path)StringgetValueOfDE(String path, int zero)protected voidinit(String type, String name, String path, char predelim, int idx, StringBuilder res, int fullResLen, Document document, Map<String,String> predefs, Map<String,String> valids)protected voidinit(String type, String name, String path, int idx, Document document)booleanisValid()protected MultipleSyntaxElementsparseAndAppendNewChildContainer(Node ref, char predelim0, char predelim1, StringBuilder res, int fullResLen, Document document, Map<String,String> predefs, Map<String,String> valids)protected abstract MultipleSyntaxElementsparseNewChildContainer(Node ref, char predelim0, char predelim1, StringBuilder res, int fullResLen, Document document, Map<String,String> predefs, Map<String,String> valids)beim parsen: haengt an die 'childElements' ein neues Element an.booleanpropagateValue(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 voidsetName(String name)voidsetParent(MultipleSyntaxElements parent)protected voidsetPath(String path)protected voidsetType(String type)protected voidsetValid(boolean valid)protected booleanstoreValidValueInDE(String destPath, String value)StringtoString(int zero)voidvalidate()ueberpreuft, ob das syntaxelement alle restriktionen einhaelt; ist das nicht der fall, so wird eine Exception ausgeloest.
-
-
-
Field Detail
-
TRY_TO_CREATE
public static final boolean TRY_TO_CREATE
- See Also:
- Constant Field Values
-
DONT_TRY_TO_CREATE
public static final boolean DONT_TRY_TO_CREATE
- See Also:
- Constant Field Values
-
ALLOW_OVERWRITE
public static final boolean ALLOW_OVERWRITE
- See Also:
- Constant Field Values
-
DONT_ALLOW_OVERWRITE
public static final boolean DONT_ALLOW_OVERWRITE
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
SyntaxElement
protected SyntaxElement(String type, String name, String path, int idx, Document document)
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, StringBuilder res, int fullResLen, Document document, Map<String,String> predefs, Map<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 document- 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 Detail
-
getElementTypeName
protected abstract String 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
protected abstract MultipleSyntaxElements createNewChildContainer(Node ref, Document document)
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, StringBuilder res, int fullResLen, Document document, Map<String,String> predefs, Map<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 ('document') an dieser stelle auftauchen mueste (optional; z.b. fuer segmentcodes); 'predelim*' geben die delimiter an, die direkt vor dem zu erzeugenden syntaxelement auftauchen muessten
-
createAndAppendNewChildContainer
protected MultipleSyntaxElements createAndAppendNewChildContainer(Node ref, Document document)
-
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
protected void init(String type, String name, String path, char predelim, int idx, StringBuilder res, int fullResLen, Document document, Map<String,String> predefs, Map<String,String> valids)
-
parseAndAppendNewChildContainer
protected MultipleSyntaxElements parseAndAppendNewChildContainer(Node ref, char predelim0, char predelim1, StringBuilder res, int fullResLen, Document document, Map<String,String> predefs, Map<String,String> valids)
-
extractValues
public void extractValues(Map<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 aufgerufen
-
getChildContainers
public List<MultipleSyntaxElements> 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
public String getValueOfDE(String path)
- Returns:
- den wert eines bestimmten DE; funktioniert analog zu 'propagateValue'
-
getElement
public SyntaxElement getElement(String path)
- Parameters:
path- path to the element to be returned- Returns:
- the element identified by path
-
getPath
public final String getPath()
- Returns:
- the path to this element
-
setPath
protected void setPath(String path)
-
getName
public String getName()
- Returns:
- the name of this element (i.e. the last component of path)
-
setName
protected void setName(String name)
-
getType
public String getType()
-
setType
protected void setType(String type)
-
getSyntaxDef
public final Node getSyntaxDef(String type, Document document)
- Parameters:
type- the name of the syntaxelement to be returneddocument- the structure containing the current syntaxdefinition- Returns:
- a XML-node with the definition of the requested syntaxelement
-
isValid
public boolean isValid()
-
setValid
protected final void setValid(boolean valid)
-
checkSegSeq
public int checkSegSeq(int value)
-
toString
public String toString(int zero)
-
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
public void getElementPaths(Map<String,String> p, int[] segref, int[] degref, int[] deref)
-
getParent
public MultipleSyntaxElements getParent()
-
setParent
public void setParent(MultipleSyntaxElements parent)
-
getPosInMsg
public int getPosInMsg()
-
-