org.kapott.hbci.swift.SwiftLegacy Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of hbci4j-core Show documentation
Show all versions of hbci4j-core Show documentation
HBCI4j - Home Banking Computer Interface for Java
package org.kapott.hbci.swift;
import org.kapott.hbci.exceptions.HBCI_Exception;
public class SwiftLegacy {
public static String getTagValue(final String st, final String tag, final String[] suffixes, int counter) {
// TODO: hier noch die parser-Änderungen einbauen, die schon bei
// getTagValue() drin sind ("\r\n:" anstatt ":" suchen)
String ret = null;
int endpos = 0;
while (true) {
ret = null;
int startpos = -1;
String mytag = null;
for (final String suffixe : suffixes) {
final int p = st.indexOf(":" + tag + suffixe + ":", endpos);
if (p != -1) {
if (startpos == -1) {
startpos = p;
mytag = tag + suffixe;
} else {
if (p < startpos) {
startpos = p;
mytag = tag + suffixe;
}
}
}
}
if (startpos != -1) {
endpos = st.indexOf("\r\n:", startpos);
if (endpos == -1) {
endpos = st.indexOf("\r\n-", startpos);
while (endpos != -1 && endpos + 3 < st.length()) {
endpos = st.indexOf("\r\n-", endpos + 1);
}
}
if (endpos == -1) {
throw new HBCI_Exception("*** invalid swift stream - no end of tag found: tag=" + tag);
}
ret = st.substring(startpos + mytag.length() + 2, endpos);
}
if (counter-- == 0) {
break;
}
}
return ret;
}
public static String getLineFieldValue(final String stream, final String linenum, int fieldnum) {
// TODO: hier evtl. sauberer parsen
String ret = null;
int linepos = 0;
while (true) {
if (linepos >= stream.length()) {
break;
}
if (stream.charAt(linepos) == linenum.charAt(0)) {
int end = stream.indexOf("\r\n", linepos);
if (end == -1) {
end = stream.length();
}
final String line = stream.substring(linepos + 1, end);
int fieldpos = 0;
for (; fieldnum > 0; fieldnum--) {
final int p = line.indexOf("+", fieldpos);
if (p == -1) {
break;
}
fieldpos = p + 1;
}
if (fieldnum == 0) {
int p = line.indexOf("+", fieldpos);
if (p == -1) {
p = line.length();
}
ret = line.substring(fieldpos, p);
if (ret.length() == 0) {
ret = null;
}
}
break;
}
linepos = stream.indexOf("\r\n", linepos);
if (linepos == -1) {
break;
}
linepos += 2;
}
return ret;
}
}