diff --git a/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/MessageBuilder.kt b/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/MessageBuilder.kt index b62903ee..0b22cd42 100644 --- a/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/MessageBuilder.kt +++ b/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/MessageBuilder.kt @@ -4,6 +4,7 @@ import net.dankito.fints.messages.datenelemente.implementierte.tan.TanProcess import net.dankito.fints.messages.nachrichten.Nachricht import net.dankito.fints.messages.segmente.ISegmentNumberGenerator import net.dankito.fints.messages.segmente.Segment +import net.dankito.fints.messages.segmente.SegmentId import net.dankito.fints.messages.segmente.SegmentNumberGenerator import net.dankito.fints.messages.segmente.implementierte.* import net.dankito.fints.model.BankData @@ -61,7 +62,7 @@ open class MessageBuilder(protected val generator: ISegmentNumberGenerator = Seg return createMessage(true, true, bank, customer, dialogData, listOf( IdentifikationsSegment(generator.resetSegmentNumber(2), bank, customer), Verarbeitungsvorbereitung(generator.getNextSegmentNumber(), bank, customer, product), - ZweiSchrittTanEinreichung(generator.getNextSegmentNumber(), TanProcess.TanProcess4, "HKIDN") // TODO: make job reference referencable, don't hard code + ZweiSchrittTanEinreichung(generator.getNextSegmentNumber(), TanProcess.TanProcess4, SegmentId.Identification.id) )) } diff --git a/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/datenelementgruppen/implementierte/Segmentkopf.kt b/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/datenelementgruppen/implementierte/Segmentkopf.kt index e93ea9ed..9336949c 100644 --- a/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/datenelementgruppen/implementierte/Segmentkopf.kt +++ b/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/datenelementgruppen/implementierte/Segmentkopf.kt @@ -5,6 +5,7 @@ import net.dankito.fints.messages.datenelemente.implementierte.Segmentkennung import net.dankito.fints.messages.datenelemente.implementierte.Segmentnummer import net.dankito.fints.messages.datenelemente.implementierte.Segmentversion import net.dankito.fints.messages.datenelementgruppen.Datenelementgruppe +import net.dankito.fints.messages.segmente.SegmentId open class Segmentkopf @JvmOverloads constructor( @@ -18,4 +19,7 @@ open class Segmentkopf @JvmOverloads constructor( Segmentnummer(segmentNumber), Segmentversion(segmentVersion) // TODO: how to conditionally add Bezugsegment? ), Existenzstatus.Mandatory) { + + constructor(id: SegmentId, segmentVersion: Int, segmentNumber: Int) : this(id.id, segmentVersion, segmentNumber) + } \ No newline at end of file diff --git a/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/segmente/SegmentId.kt b/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/segmente/SegmentId.kt new file mode 100644 index 00000000..ddabe623 --- /dev/null +++ b/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/segmente/SegmentId.kt @@ -0,0 +1,26 @@ +package net.dankito.fints.messages.segmente + + +enum class SegmentId(val id: String) { + + MessageHeader("HNHBK"), + + MessageClosing("HNHBS"), + + EncryptionHeader("HNVSK"), + + EncryptionData("HNVSD"), + + SignatureHeader("HNSHK"), + + SignatureClosing("HNSHA"), + + DialogEnd("HKEND"), + + ProcessingPreparation("HKVVB"), + + Identification("HKIDN"), + + Tan("HKTAN") + +} \ No newline at end of file diff --git a/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/segmente/implementierte/Dialogende.kt b/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/segmente/implementierte/Dialogende.kt index 8a89934d..feb8696d 100644 --- a/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/segmente/implementierte/Dialogende.kt +++ b/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/segmente/implementierte/Dialogende.kt @@ -4,6 +4,7 @@ import net.dankito.fints.messages.Existenzstatus import net.dankito.fints.messages.datenelemente.implementierte.DialogId import net.dankito.fints.messages.datenelementgruppen.implementierte.Segmentkopf import net.dankito.fints.messages.segmente.Segment +import net.dankito.fints.messages.segmente.SegmentId import net.dankito.fints.model.DialogData @@ -12,6 +13,6 @@ class Dialogende( dialogData: DialogData ) : Segment(listOf( - Segmentkopf("HKEND", 1, segmentNumber), + Segmentkopf(SegmentId.DialogEnd, 1, segmentNumber), DialogId(dialogData.dialogId) ), Existenzstatus.Mandatory) \ No newline at end of file diff --git a/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/segmente/implementierte/IdentifikationsSegment.kt b/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/segmente/implementierte/IdentifikationsSegment.kt index 83ebdceb..f48062ca 100644 --- a/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/segmente/implementierte/IdentifikationsSegment.kt +++ b/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/segmente/implementierte/IdentifikationsSegment.kt @@ -7,6 +7,7 @@ import net.dankito.fints.messages.datenelemente.implementierte.KundensystemStatu import net.dankito.fints.messages.datenelementgruppen.implementierte.Kreditinstitutskennung import net.dankito.fints.messages.datenelementgruppen.implementierte.Segmentkopf import net.dankito.fints.messages.segmente.Segment +import net.dankito.fints.messages.segmente.SegmentId import net.dankito.fints.model.BankData import net.dankito.fints.model.CustomerData @@ -17,7 +18,7 @@ open class IdentifikationsSegment( customer: CustomerData ) : Segment(listOf( - Segmentkopf("HKIDN", 2, segmentNumber), + Segmentkopf(SegmentId.Identification, 2, segmentNumber), Kreditinstitutskennung(bank.countryCode, bank.bankCode), KundenID(customer.customerId), KundensystemID(customer.customerSystemId), diff --git a/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/segmente/implementierte/Nachrichtenabschluss.kt b/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/segmente/implementierte/Nachrichtenabschluss.kt index 6e7cf805..5330c0a2 100644 --- a/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/segmente/implementierte/Nachrichtenabschluss.kt +++ b/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/segmente/implementierte/Nachrichtenabschluss.kt @@ -4,6 +4,7 @@ import net.dankito.fints.messages.Existenzstatus import net.dankito.fints.messages.datenelemente.implementierte.Nachrichtennummer import net.dankito.fints.messages.datenelementgruppen.implementierte.Segmentkopf import net.dankito.fints.messages.segmente.Segment +import net.dankito.fints.messages.segmente.SegmentId import net.dankito.fints.model.DialogData @@ -15,6 +16,6 @@ open class Nachrichtenabschluss( dialogData: DialogData ) : Segment(listOf( - Segmentkopf("HNHBS", 1, segmentNumber), + Segmentkopf(SegmentId.MessageClosing, 1, segmentNumber), Nachrichtennummer(dialogData.messageNumber) ), Existenzstatus.Mandatory) \ No newline at end of file diff --git a/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/segmente/implementierte/Nachrichtenkopf.kt b/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/segmente/implementierte/Nachrichtenkopf.kt index 77be85de..43caf0a6 100644 --- a/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/segmente/implementierte/Nachrichtenkopf.kt +++ b/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/segmente/implementierte/Nachrichtenkopf.kt @@ -4,6 +4,7 @@ import net.dankito.fints.messages.Existenzstatus import net.dankito.fints.messages.datenelemente.implementierte.* import net.dankito.fints.messages.datenelementgruppen.implementierte.Segmentkopf import net.dankito.fints.messages.segmente.Segment +import net.dankito.fints.messages.segmente.SegmentId import net.dankito.fints.model.DialogData @@ -13,7 +14,7 @@ open class Nachrichtenkopf( dialogData: DialogData ) : Segment(listOf( - Segmentkopf("HNHBK", 3, segmentNumber), + Segmentkopf(SegmentId.MessageHeader, 3, segmentNumber), Nachrichtengroesse(messageSize), HbciVersionDatenelement(HbciVersion.FinTs_3_0_0), DialogId(dialogData.dialogId), diff --git a/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/segmente/implementierte/Signaturabschluss.kt b/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/segmente/implementierte/Signaturabschluss.kt index 6e24c065..cadd7027 100644 --- a/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/segmente/implementierte/Signaturabschluss.kt +++ b/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/segmente/implementierte/Signaturabschluss.kt @@ -6,6 +6,7 @@ import net.dankito.fints.messages.datenelemente.implementierte.signatur.Sicherhe import net.dankito.fints.messages.datenelementgruppen.implementierte.Segmentkopf import net.dankito.fints.messages.datenelementgruppen.implementierte.signatur.BenutzerdefinierteSignatur import net.dankito.fints.messages.segmente.Segment +import net.dankito.fints.messages.segmente.SegmentId /** @@ -18,7 +19,7 @@ open class Signaturabschluss( pinOrTan: String ) : Segment(listOf( - Segmentkopf("HNSHA", 2, segmentNumber), + Segmentkopf(SegmentId.SignatureClosing, 2, segmentNumber), Sicherheitskontrollreferenz(securityControlReference), // has to be the same as in Signaturkopf NotAllowedDatenelement(), // only used for HBCI, not allowed for PIN/TAN BenutzerdefinierteSignatur(pinOrTan) diff --git a/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/segmente/implementierte/Signaturkopf.kt b/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/segmente/implementierte/Signaturkopf.kt index 9bfd8374..a34f0e16 100644 --- a/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/segmente/implementierte/Signaturkopf.kt +++ b/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/segmente/implementierte/Signaturkopf.kt @@ -5,6 +5,7 @@ import net.dankito.fints.messages.datenelemente.implementierte.signatur.* import net.dankito.fints.messages.datenelementgruppen.implementierte.Segmentkopf import net.dankito.fints.messages.datenelementgruppen.implementierte.signatur.* import net.dankito.fints.messages.segmente.Segment +import net.dankito.fints.messages.segmente.SegmentId import net.dankito.fints.model.BankData import net.dankito.fints.model.CustomerData @@ -35,7 +36,7 @@ open class Signaturkopf( keyVersion: Int ) : Segment(listOf( - Segmentkopf("HNSHK", 4, segmentNumber), // allowed + Segmentkopf(SegmentId.SignatureHeader, 4, segmentNumber), // allowed Sicherheitsprofil(customer.securityMethod!!, customer.version!!), // allowed: method: RAH, PIN; SicherheitsfunktionKodiert(customer.selectedTanProcedure?.securityFunction!!), // allowed: 1, 2 Sicherheitskontrollreferenz(securityControlReference), // allowed: <>0 diff --git a/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/segmente/implementierte/Verarbeitungsvorbereitung.kt b/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/segmente/implementierte/Verarbeitungsvorbereitung.kt index b410ab33..295edd9c 100644 --- a/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/segmente/implementierte/Verarbeitungsvorbereitung.kt +++ b/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/segmente/implementierte/Verarbeitungsvorbereitung.kt @@ -4,6 +4,7 @@ import net.dankito.fints.messages.Existenzstatus import net.dankito.fints.messages.datenelemente.implementierte.* import net.dankito.fints.messages.datenelementgruppen.implementierte.Segmentkopf import net.dankito.fints.messages.segmente.Segment +import net.dankito.fints.messages.segmente.SegmentId import net.dankito.fints.model.BankData import net.dankito.fints.model.CustomerData import net.dankito.fints.model.ProductData @@ -15,7 +16,7 @@ open class Verarbeitungsvorbereitung( customer: CustomerData, product: ProductData ) : Segment(listOf( - Segmentkopf("HKVVB", 3, segmentNumber), + Segmentkopf(SegmentId.ProcessingPreparation, 3, segmentNumber), BPDVersion(bank.bpdVersion, Existenzstatus.Mandatory), UPDVersion(customer.updVersion, Existenzstatus.Mandatory), DialogspracheDatenelement(customer.selectedLanguage, Existenzstatus.Mandatory), diff --git a/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/segmente/implementierte/VerschluesselteDaten.kt b/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/segmente/implementierte/VerschluesselteDaten.kt index 0d5a2c22..19e389c2 100644 --- a/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/segmente/implementierte/VerschluesselteDaten.kt +++ b/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/segmente/implementierte/VerschluesselteDaten.kt @@ -4,6 +4,7 @@ import net.dankito.fints.messages.Existenzstatus import net.dankito.fints.messages.datenelemente.implementierte.encryption.PinTanVerschluesselteDatenDatenelement import net.dankito.fints.messages.datenelementgruppen.implementierte.Segmentkopf import net.dankito.fints.messages.segmente.Segment +import net.dankito.fints.messages.segmente.SegmentId /** @@ -13,6 +14,6 @@ open class VerschluesselteDaten( payload: String ) : Segment(listOf( - Segmentkopf("HNVSD", 1, 999), + Segmentkopf(SegmentId.EncryptionData, 1, 999), PinTanVerschluesselteDatenDatenelement(payload) ), Existenzstatus.Mandatory) \ No newline at end of file diff --git a/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/segmente/implementierte/Verschluesselungskopf.kt b/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/segmente/implementierte/Verschluesselungskopf.kt index 60916a03..62f07427 100644 --- a/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/segmente/implementierte/Verschluesselungskopf.kt +++ b/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/segmente/implementierte/Verschluesselungskopf.kt @@ -12,6 +12,7 @@ import net.dankito.fints.messages.datenelementgruppen.implementierte.signatur.Si import net.dankito.fints.messages.datenelementgruppen.implementierte.signatur.SicherheitsidentifikationDetails import net.dankito.fints.messages.datenelementgruppen.implementierte.signatur.Sicherheitsprofil import net.dankito.fints.messages.segmente.Segment +import net.dankito.fints.messages.segmente.SegmentId import net.dankito.fints.model.BankData import net.dankito.fints.model.CustomerData @@ -44,7 +45,7 @@ open class Verschluesselungskopf( algorithm: Komprimierungsfunktion ) : Segment(listOf( - Segmentkopf("HNVSK", 3, 998), + Segmentkopf(SegmentId.EncryptionHeader, 3, 998), Sicherheitsprofil(customer.securityMethod!!, customer.version!!), SicherheitsfunktionKodiert(Sicherheitsfunktion.Klartext), // allowed: 4 RolleDesSicherheitslieferantenKodiert(), // allowed: 1, 4 diff --git a/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/segmente/implementierte/ZweiSchrittTanEinreichung.kt b/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/segmente/implementierte/ZweiSchrittTanEinreichung.kt index e5aea161..90ef0bc8 100644 --- a/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/segmente/implementierte/ZweiSchrittTanEinreichung.kt +++ b/fints4javaLib/src/main/kotlin/net/dankito/fints/messages/segmente/implementierte/ZweiSchrittTanEinreichung.kt @@ -5,6 +5,7 @@ import net.dankito.fints.messages.datenelemente.implementierte.NotAllowedDatenel import net.dankito.fints.messages.datenelemente.implementierte.tan.* import net.dankito.fints.messages.datenelementgruppen.implementierte.Segmentkopf import net.dankito.fints.messages.segmente.Segment +import net.dankito.fints.messages.segmente.SegmentId open class ZweiSchrittTanEinreichung( @@ -18,7 +19,7 @@ open class ZweiSchrittTanEinreichung( tanMediaIdentifier: String? = "N" // TODO: why 'N'? ) : Segment(listOf( - Segmentkopf("HKTAN", 6, segmentNumber), + Segmentkopf(SegmentId.Tan, 6, segmentNumber), TANProzessDatenelement(process), // AuftragsHashwert(), // M: bei AuftragsHashwertverfahren<>0 und TAN-Prozess=1. N: sonst Auftragsreferenz(jobReference, Existenzstatus.Mandatory), // M: bei TAN-Prozess=2, 3, 4. O: bei TAN-Prozess=1