MSG.CHECK_SEQ,MSG.DONT_CHECK_VALIDS);
// in einer Schleife durch alle SuppSecMethods-Datens�tze laufen
for (int i=0;;i++) {
String elemBaseName=HBCIUtilsInternal.withCounter(myMsgName+".BPD.SecMethod.SuppSecMethods",i);
SyntaxElement elem=msg.getElement(elemBaseName+".method");
if (elem==null) {
break;
}
// Methodenbezeichner extrahieren
String method=elem.toString();
if (method.equals("TAN")) { // "TAN" ist ung�ltiger Bezeichner
HBCIUtils.log("there is an invalid sec type (TAN) in this BPD - removing it",HBCIUtils.LOG_WARN);
// Elternelement finden (Segment "SecMethods")
SyntaxElement parent=elem.getParent().getParent().getParent().getParent();
String parentPath=parent.getPath();
int number=0;
// durch alle Elemente dieses Segmentes laufen, bis die Multiple-DEG
// mit den unterst�tzten SecMethods gefunden wurde
for (Iterator<MultipleSyntaxElements> it=parent.getChildContainers().iterator();it.hasNext();) {
MultipleSyntaxElements childContainer= it.next();
if (childContainer.getPath().equals(parentPath+".SuppSecMethods")) {
// die Anzahl der eingestellten unterst�tzten SecMethods herausholen
number=childContainer.getElements().size();
break;
}
}
int startpos;
int endpos;
/* wenn mehr als eine SecMethod im Segment stand, dann braucht nur
* das eine der multiplen DEGs entfernt werden. Wenn aber nur die eine
* fehlerhafte Info enthalten war, dann muss das gesamte Segment
* entfernt werden, weil ein SecMethods-Segment ohne tats�chliche Daten
* �ber unterst�tzte SecMethods ung�ltig ist. */
if (number>1) { // nur das eine fehlerhafte TAN:1 l�schen
startpos=elem.getPosInMsg();
endpos=startpos
+1
+elem.toString(0).length()
+1
+msg.getElement(elemBaseName+".version").toString(0).length();
} else { // komplettes segment "SecMethod" l�schen
startpos=parent.getPosInMsg()+1;
endpos=startpos+parent.toString(0).length();
/* der Fehler, der hier gemacht wird (nachfolgende Segment-
* Sequenznummern sind falsch), wird durch ein nachgeschaltetes
* Olly-Modul korrigiert */
}