Extracted MessageSegmentId and ISegmentId

This commit is contained in:
dankl 2019-10-05 18:56:28 +02:00 committed by dankito
parent 67ec1700e0
commit 6961f46ee9
11 changed files with 52 additions and 35 deletions

View File

@ -5,7 +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.Segmentnummer
import net.dankito.fints.messages.datenelemente.implementierte.Segmentversion import net.dankito.fints.messages.datenelemente.implementierte.Segmentversion
import net.dankito.fints.messages.datenelementgruppen.Datenelementgruppe import net.dankito.fints.messages.datenelementgruppen.Datenelementgruppe
import net.dankito.fints.messages.segmente.SegmentId import net.dankito.fints.messages.segmente.id.ISegmentId
open class Segmentkopf @JvmOverloads constructor( open class Segmentkopf @JvmOverloads constructor(
@ -20,6 +20,6 @@ open class Segmentkopf @JvmOverloads constructor(
Segmentversion(segmentVersion) // TODO: how to conditionally add Bezugsegment? Segmentversion(segmentVersion) // TODO: how to conditionally add Bezugsegment?
), Existenzstatus.Mandatory) { ), Existenzstatus.Mandatory) {
constructor(id: SegmentId, segmentVersion: Int, segmentNumber: Int) : this(id.id, segmentVersion, segmentNumber) constructor(id: ISegmentId, segmentVersion: Int, segmentNumber: Int) : this(id.id, segmentVersion, segmentNumber)
} }

View File

@ -1,19 +1,9 @@
package net.dankito.fints.messages.segmente package net.dankito.fints.messages.segmente
import net.dankito.fints.messages.segmente.id.ISegmentId
enum class SegmentId(val id: String) {
MessageHeader("HNHBK"), enum class SegmentId(override val id: String) : ISegmentId {
MessageEnding("HNHBS"),
EncryptionHeader("HNVSK"),
EncryptionData("HNVSD"),
SignatureHeader("HNSHK"),
SignatureEnding("HNSHA"),
DialogEnd("HKEND"), DialogEnd("HKEND"),

View File

@ -0,0 +1,8 @@
package net.dankito.fints.messages.segmente.id
interface ISegmentId {
val id: String
}

View File

@ -0,0 +1,18 @@
package net.dankito.fints.messages.segmente.id
enum class MessageSegmentId(override val id: String) : ISegmentId {
MessageHeader("HNHBK"),
MessageEnding("HNHBS"),
EncryptionHeader("HNVSK"),
EncryptionData("HNVSD"),
SignatureHeader("HNSHK"),
SignatureEnding("HNSHA")
}

View File

@ -4,7 +4,7 @@ import net.dankito.fints.messages.Existenzstatus
import net.dankito.fints.messages.datenelemente.implementierte.Nachrichtennummer import net.dankito.fints.messages.datenelemente.implementierte.Nachrichtennummer
import net.dankito.fints.messages.datenelementgruppen.implementierte.Segmentkopf import net.dankito.fints.messages.datenelementgruppen.implementierte.Segmentkopf
import net.dankito.fints.messages.segmente.Segment import net.dankito.fints.messages.segmente.Segment
import net.dankito.fints.messages.segmente.SegmentId import net.dankito.fints.messages.segmente.id.MessageSegmentId
import net.dankito.fints.model.DialogData import net.dankito.fints.model.DialogData
@ -16,6 +16,6 @@ open class Nachrichtenabschluss(
dialogData: DialogData dialogData: DialogData
) : Segment(listOf( ) : Segment(listOf(
Segmentkopf(SegmentId.MessageEnding, 1, segmentNumber), Segmentkopf(MessageSegmentId.MessageEnding, 1, segmentNumber),
Nachrichtennummer(dialogData.messageNumber) Nachrichtennummer(dialogData.messageNumber)
), Existenzstatus.Mandatory) ), Existenzstatus.Mandatory)

View File

@ -3,8 +3,8 @@ package net.dankito.fints.messages.segmente.implementierte
import net.dankito.fints.messages.Existenzstatus import net.dankito.fints.messages.Existenzstatus
import net.dankito.fints.messages.datenelemente.implementierte.* import net.dankito.fints.messages.datenelemente.implementierte.*
import net.dankito.fints.messages.datenelementgruppen.implementierte.Segmentkopf import net.dankito.fints.messages.datenelementgruppen.implementierte.Segmentkopf
import net.dankito.fints.messages.segmente.id.MessageSegmentId
import net.dankito.fints.messages.segmente.Segment import net.dankito.fints.messages.segmente.Segment
import net.dankito.fints.messages.segmente.SegmentId
import net.dankito.fints.model.DialogData import net.dankito.fints.model.DialogData
@ -14,7 +14,7 @@ open class Nachrichtenkopf(
dialogData: DialogData dialogData: DialogData
) : Segment(listOf( ) : Segment(listOf(
Segmentkopf(SegmentId.MessageHeader, 3, segmentNumber), Segmentkopf(MessageSegmentId.MessageHeader, 3, segmentNumber),
Nachrichtengroesse(messageSize), Nachrichtengroesse(messageSize),
HbciVersionDatenelement(HbciVersion.FinTs_3_0_0), HbciVersionDatenelement(HbciVersion.FinTs_3_0_0),
DialogId(dialogData.dialogId), DialogId(dialogData.dialogId),

View File

@ -6,7 +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.Segmentkopf
import net.dankito.fints.messages.datenelementgruppen.implementierte.signatur.BenutzerdefinierteSignatur import net.dankito.fints.messages.datenelementgruppen.implementierte.signatur.BenutzerdefinierteSignatur
import net.dankito.fints.messages.segmente.Segment import net.dankito.fints.messages.segmente.Segment
import net.dankito.fints.messages.segmente.SegmentId import net.dankito.fints.messages.segmente.id.MessageSegmentId
/** /**
@ -19,7 +19,7 @@ open class Signaturabschluss(
pinOrTan: String pinOrTan: String
) )
: Segment(listOf( : Segment(listOf(
Segmentkopf(SegmentId.SignatureEnding, 2, segmentNumber), Segmentkopf(MessageSegmentId.SignatureEnding, 2, segmentNumber),
Sicherheitskontrollreferenz(securityControlReference), // has to be the same as in Signaturkopf Sicherheitskontrollreferenz(securityControlReference), // has to be the same as in Signaturkopf
NotAllowedDatenelement(), // only used for HBCI, not allowed for PIN/TAN NotAllowedDatenelement(), // only used for HBCI, not allowed for PIN/TAN
BenutzerdefinierteSignatur(pinOrTan) BenutzerdefinierteSignatur(pinOrTan)

View File

@ -5,7 +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.Segmentkopf
import net.dankito.fints.messages.datenelementgruppen.implementierte.signatur.* import net.dankito.fints.messages.datenelementgruppen.implementierte.signatur.*
import net.dankito.fints.messages.segmente.Segment import net.dankito.fints.messages.segmente.Segment
import net.dankito.fints.messages.segmente.SegmentId import net.dankito.fints.messages.segmente.id.MessageSegmentId
import net.dankito.fints.model.BankData import net.dankito.fints.model.BankData
import net.dankito.fints.model.CustomerData import net.dankito.fints.model.CustomerData
@ -36,7 +36,7 @@ open class Signaturkopf(
keyVersion: Int keyVersion: Int
) : Segment(listOf( ) : Segment(listOf(
Segmentkopf(SegmentId.SignatureHeader, 4, segmentNumber), // allowed Segmentkopf(MessageSegmentId.SignatureHeader, 4, segmentNumber), // allowed
Sicherheitsprofil(customer.securityMethod!!, customer.version!!), // allowed: method: RAH, PIN; Sicherheitsprofil(customer.securityMethod!!, customer.version!!), // allowed: method: RAH, PIN;
SicherheitsfunktionKodiert(customer.selectedTanProcedure?.securityFunction!!), // allowed: 1, 2 SicherheitsfunktionKodiert(customer.selectedTanProcedure?.securityFunction!!), // allowed: 1, 2
Sicherheitskontrollreferenz(securityControlReference), // allowed: <>0 Sicherheitskontrollreferenz(securityControlReference), // allowed: <>0

View File

@ -4,7 +4,7 @@ import net.dankito.fints.messages.Existenzstatus
import net.dankito.fints.messages.datenelemente.implementierte.encryption.PinTanVerschluesselteDatenDatenelement import net.dankito.fints.messages.datenelemente.implementierte.encryption.PinTanVerschluesselteDatenDatenelement
import net.dankito.fints.messages.datenelementgruppen.implementierte.Segmentkopf import net.dankito.fints.messages.datenelementgruppen.implementierte.Segmentkopf
import net.dankito.fints.messages.segmente.Segment import net.dankito.fints.messages.segmente.Segment
import net.dankito.fints.messages.segmente.SegmentId import net.dankito.fints.messages.segmente.id.MessageSegmentId
/** /**
@ -14,6 +14,6 @@ open class VerschluesselteDaten(
payload: String payload: String
) : Segment(listOf( ) : Segment(listOf(
Segmentkopf(SegmentId.EncryptionData, 1, 999), Segmentkopf(MessageSegmentId.EncryptionData, 1, 999),
PinTanVerschluesselteDatenDatenelement(payload) PinTanVerschluesselteDatenDatenelement(payload)
), Existenzstatus.Mandatory) ), Existenzstatus.Mandatory)

View File

@ -12,7 +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.SicherheitsidentifikationDetails
import net.dankito.fints.messages.datenelementgruppen.implementierte.signatur.Sicherheitsprofil import net.dankito.fints.messages.datenelementgruppen.implementierte.signatur.Sicherheitsprofil
import net.dankito.fints.messages.segmente.Segment import net.dankito.fints.messages.segmente.Segment
import net.dankito.fints.messages.segmente.SegmentId import net.dankito.fints.messages.segmente.id.MessageSegmentId
import net.dankito.fints.model.BankData import net.dankito.fints.model.BankData
import net.dankito.fints.model.CustomerData import net.dankito.fints.model.CustomerData
@ -45,7 +45,7 @@ open class Verschluesselungskopf(
algorithm: Komprimierungsfunktion algorithm: Komprimierungsfunktion
) : Segment(listOf( ) : Segment(listOf(
Segmentkopf(SegmentId.EncryptionHeader, 3, 998), Segmentkopf(MessageSegmentId.EncryptionHeader, 3, 998),
Sicherheitsprofil(customer.securityMethod!!, customer.version!!), Sicherheitsprofil(customer.securityMethod!!, customer.version!!),
SicherheitsfunktionKodiert(Sicherheitsfunktion.Klartext), // allowed: 4 SicherheitsfunktionKodiert(Sicherheitsfunktion.Klartext), // allowed: 4
RolleDesSicherheitslieferantenKodiert(), // allowed: 1, 4 RolleDesSicherheitslieferantenKodiert(), // allowed: 1, 4

View File

@ -1,8 +1,9 @@
package net.dankito.fints.messages.segmente.implementierte package net.dankito.fints.messages.segmente.implementierte
import net.dankito.fints.messages.Existenzstatus import net.dankito.fints.messages.Existenzstatus
import net.dankito.fints.messages.datenelemente.implementierte.NotAllowedDatenelement import net.dankito.fints.messages.datenelemente.implementierte.tan.Auftragsreferenz
import net.dankito.fints.messages.datenelemente.implementierte.tan.* import net.dankito.fints.messages.datenelemente.implementierte.tan.TANProzessDatenelement
import net.dankito.fints.messages.datenelemente.implementierte.tan.TanProcess
import net.dankito.fints.messages.datenelementgruppen.implementierte.Segmentkopf import net.dankito.fints.messages.datenelementgruppen.implementierte.Segmentkopf
import net.dankito.fints.messages.segmente.Segment import net.dankito.fints.messages.segmente.Segment
import net.dankito.fints.messages.segmente.SegmentId import net.dankito.fints.messages.segmente.SegmentId
@ -20,11 +21,11 @@ open class ZweiSchrittTanEinreichung(
) : Segment(listOf( ) : Segment(listOf(
Segmentkopf(SegmentId.Tan, 6, segmentNumber), Segmentkopf(SegmentId.Tan, 6, segmentNumber),
TANProzessDatenelement(process), TANProzessDatenelement(process),
// AuftragsHashwert(), // M: bei AuftragsHashwertverfahren<>0 und TAN-Prozess=1. N: sonst // 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 Auftragsreferenz(jobReference, Existenzstatus.Mandatory) // M: bei TAN-Prozess=2, 3, 4. O: bei TAN-Prozess=1
ChallengeVersion3(challenge, Existenzstatus.Mandatory), // M: bei TAN-Prozess=1, 3, 4. O: bei TAN-Prozess=2 // ChallengeVersion3(challenge, Existenzstatus.Mandatory), // M: bei TAN-Prozess=1, 3, 4. O: bei TAN-Prozess=2
ChallengeHHD_UC(challgendHHD_UC, Existenzstatus.Optional), // ChallengeHHD_UC(challgendHHD_UC, Existenzstatus.Optional),
NotAllowedDatenelement(), // GueltigkeitsdatumUndUhrzeitFuerChallenge // TODO: how to not write an element if it's optional and its paramters (date and time) are not set? // NotAllowedDatenelement(), // GueltigkeitsdatumUndUhrzeitFuerChallenge // TODO: how to not write an element if it's optional and its paramters (date and time) are not set?
BezeichnungDesTANMediums(tanMediaIdentifier ?: "", Existenzstatus.Optional)// M: bei TAN-Prozess=1, 3, 4 und „Anzahl unterstützter aktiver TAN-Medien“ nicht vorhanden. O: sonst // BezeichnungDesTANMediums(tanMediaIdentifier ?: "", Existenzstatus.Optional)// M: bei TAN-Prozess=1, 3, 4 und „Anzahl unterstützter aktiver TAN-Medien“ nicht vorhanden. O: sonst
), Existenzstatus.Mandatory) ), Existenzstatus.Mandatory)