diff --git a/CHANGELOG.md b/CHANGELOG.md index af04678b..9fc40a34 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ #### 9.4.18 - October 2024 * Added new `FieldEnum` with all the available field names * Code security improvements as per CodeQL recommendations + * Added new `MtSequenceInfoEnum` with all the available inner sequences of specific MT schemas #### 9.4.17 - June 2024 * (PW-1913) Added IBAN validation for Egypt local account structure diff --git a/src/generated/java/com/prowidesoftware/swift/model/mt/MtSequenceInfoEnum.java b/src/generated/java/com/prowidesoftware/swift/model/mt/MtSequenceInfoEnum.java new file mode 100644 index 00000000..b6af3bd6 --- /dev/null +++ b/src/generated/java/com/prowidesoftware/swift/model/mt/MtSequenceInfoEnum.java @@ -0,0 +1,131 @@ +/* +* Copyright 2006-2024 Prowide +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +package com.prowidesoftware.swift.model.mt; + +/** +* Enumeration representing all possible sequence paths for each MT (Message Type) schema. +* Each constant in this enumeration corresponds to a specific MT schema, identified by its +* sequence paths as a comma-separated string (CSV) for SRU 2023. +* +*
For example, the MT508 message type may have sequence paths such as "A", "A/A1", "B", "B/B1", and "C", +* which would be represented as the CSV string "A,A/A1,B,B/B1,C". +* +* @since 9.4.18 +*/ +public enum MtSequenceInfoEnum { + + MTMT101("A,B"), + MTMT102("A,B,C"), + MTMT102_STP("A,B,C"), + MTMT104("A,B,C"), + MTMT107("A,B,C"), + MTMT202COV("A,B"), + MTMT204("A,B"), + MTMT205COV("A,B"), + MTMT300("A,B,B/B1,B/B2,C,D,D/D1,E,E/E1,E/E1/E1a,E/E1/E1a/E1a1,F"), + MTMT304("A,B,B/B1,B/B2,C,C/C1,C/C1/C1a,D,E"), + MTMT305("A,B,B/B1,B/B1/B1a,B/B1/B1a/B1a1"), + MTMT306("A,B,B/B1,B/B2,C,D,E,F,F/F1,G,H,I,J,J/J1,J/J2,K,L,M,M/M1,M/M1/M1a,M/M1/M1a/M1a1"), + MTMT320("A,B,C,D,E,F,G,H,I"), + MTMT321("A,A/A1,B,B/B1,B/B2,B/B3,C,C/C1"), + MTMT330("A,B,C,D,E,F,G,H"), + MTMT340("A,B,B/B1,B/B2,C,D,E,F,G,G/G1,G/G1/G1a,G/G1/G1a/G1a1"), + MTMT341("A,B,B/B1,C,D,D/D1,D/D1/D1a,D/D1/D1a/D1a1"), + MTMT350("A,B,C,D,D/D1,D/D2"), + MTMT360("A,B,B/B1,C,C/C1,C/C2,C/C3,D,E,E/E1,F,F/F1,F/F2,F/F3,G,H,L,M,N,O,O/O1,O/O1/O1a,O/O1/O1a/O1a1"), + MTMT361("A,B,B/B1,C,C/C1,C/C2,C/C3,D,E,E/E1,F,F/F1,F/F2,F/F3,G,H,I,J,K,L,M,N,O,P,P/P1,P/P1/P1a,P/P1/P1a/P1a1"), + MTMT362("A,B,C,D,E"), + MTMT364("A,B,E,L,M"), + MTMT365("A,B,E,J,K,L,M"), + MTMT370("A,A/A1,A/A2,B,B/B1"), + MTMT380("A,A/A1,B,B/B1,B/B2,C"), + MTMT381("A,A/A1,B,B/B1,B/B2,C"), + MTMT416("A,B"), + MTMT430("A,B"), + MTMT500("A,A/A1,B,B/B1,B/B2,C,C/C1,C/C2,D,E"), + MTMT501("A,A/A1,B,B/B1,B/B2,C,C/C1,C/C2,D,E"), + MTMT502("A,A/A1,B,B/B1,B/B2,B/B3,C,C/C1,C/C2,C/C3,D,E"), + MTMT503("A,A/A1,A/A2,B,B/B1,C,C/C1,C/C2,C/C3,D"), + MTMT504("A,A/A1,A/A2,B,B/B1,C,C/C1,C/C1/C1a,C/C1/C1a/C1a1,C/C2,C/C2/C2a,C/C2/C2a/C2a1,C/C3,D,D/D1,E,E/E1,F"), + MTMT505("A,A/A1,A/A2,B,B/B1,B/B1/B1a,B/B1/B1a/B1a1,B/B2,B/B2/B2a,B/B2/B2a/B2a1,B/B3,C,C/C1,D,D/D1,E"), + MTMT506("A,A/A1,A/A2,B,B/B1,C,C/C1,C/C2,C/C3,D,D/D1,D/D2,D/D3,E"), + MTMT507("A,A/A1,A/A2,B,B/B1,B/B1/B1a,B/B1/B1a/B1a1,B/B1/B1b,B/B1/B1b/B1b1,C"), + MTMT508("A,A/A1,B,B/B1,C"), + MTMT509("A,A/A1,A/A2,A/A2/A2a,B,B/B1,C"), + MTMT510("A,A/A1,A/A2,A/A2/A2a,B,C"), + MTMT513("A,A/A1,B,B/B1,C,C/C1,C/C2,C/C3,D,D/D1,D/D2,D/D3,E,F"), + MTMT514("A,A/A1,B,B/B1,B/B2,C,C/C1,C/C2,C/C3,D,E"), + MTMT515("A,A/A1,B,C,C/C1,C/C2,D,D/D1,D/D2,D/D3,E,F"), + MTMT516("A,B,C"), + MTMT517("A,A/A1"), + MTMT518("A,A/A1,B,B/B1,B/B2,C,C/C1,C/C2,C/C3,D,E"), + MTMT519("A,A/A1,B,B/B1,B/B2,C,C/C1,C/C2,D"), + MTMT524("A,A/A1,B,B/B1,C"), + MTMT526("A,B"), + MTMT527("A,A/A1,A/A2,B,B/B1,C,D,E"), + MTMT530("A,B,B/B1,C,C/C1,C/C1/C1a"), + MTMT535("A,A/A1,B,B/B1,B/B1/B1a,B/B1/B1b,B/B1/B1b/B1b1,B/B1/B1c,C"), + MTMT536("A,A/A1,B,B/B1,B/B1/B1a,B/B1/B1a/B1a1,B/B1/B1a/B1a2,B/B1/B1a/B1a2/B1a2A,C"), + MTMT537("A,A/A1,B,B/B1,B/B2,B/B2/B2a,B/B2/B2b,B/B2/B2b/B2b1,C,C/C1,C/C2,C/C2/C2a,C/C3,C/C3/C3a,D,D/D1,D/D1/D1a,D/D1/D1a/D1a1,D/D1/D1a/D1a1/D1a1A,D/D1/D1a/D1a1/D1a1A/D1a1A1,D/D1/D1a/D1a1/D1a1B,D/D1/D1a/D1a1/D1a1B/D1a1B1,D/D1/D1a/D1a1/D1a1B/D1a1B1/D1a1B1a,D/D1/D1a/D1a1/D1a1B/D1a1B1/D1a1B1a/D1a1B1a1,E"), + MTMT538("A,A/A1,B,B/B1,B/B2,B/B2/B2a,B/B2/B2a/B2a1,C"), + MTMT540("A,A/A1,B,B/B1,C,C/C1,D,E,E/E1,E/E2,E/E3,F"), + MTMT541("A,A/A1,B,B/B1,C,C/C1,D,E,E/E1,E/E2,E/E3,F"), + MTMT542("A,A/A1,B,B/B1,C,C/C1,D,E,E/E1,E/E2,E/E3,F"), + MTMT543("A,A/A1,B,B/B1,C,C/C1,D,E,E/E1,E/E2,E/E3,F"), + MTMT544("A,A/A1,B,B/B1,C,C/C1,D,E,E/E1,E/E2,E/E3,F"), + MTMT545("A,A/A1,B,B/B1,C,C/C1,D,E,E/E1,E/E2,E/E3,F"), + MTMT546("A,A/A1,B,B/B1,C,C/C1,D,E,E/E1,E/E2,E/E3,F"), + MTMT547("A,A/A1,B,B/B1,C,C/C1,D,E,E/E1,E/E2,E/E3,F"), + MTMT548("A,A/A1,A/A2,A/A2/A2a,B,B/B1,C,C/C1,C/C1/C1a,C/C1/C1a/C1a1,C/C1/C1a/C1a1/C1a1A,C/C1/C1a/C1a1/C1a1A/C1a1A1,C/C1/C1a/C1a1/C1a1B,C/C1/C1a/C1a1/C1a1B/C1a1B1,C/C1/C1a/C1a1/C1a1B/C1a1B1/C1a1B1a,C/C1/C1a/C1a1/C1a1B/C1a1B1/C1a1B1a/C1a1B1a1,D"), + MTMT549("A,A/A1,B,C,D"), + MTMT558("A,A/A1,A/A2,A/A2/A2a,A/A3,B,B/B1,C,D,E"), + MTMT564("A,A/A1,B,B/B1,B/B2,C,D,E,E/E1,E/E1/E1a,E/E2,F"), + MTMT565("A,A/A1,B,B/B1,B/B2,C,D,E"), + MTMT566("A,A/A1,B,B/B1,C,D,D/D1,D/D1/D1a,D/D1/D1b,D/D2,D/D2/D2a,D/D2/D2b,E"), + MTMT567("A,A/A1,A/A2,A/A2/A2a,B,C"), + MTMT568("A,A/A1,B,B/B1,C"), + MTMT569("A,A/A1,A/A2,B,C,C/C1,C/C1/C1a,C/C1/C1a/C1a1,C/C1/C1a/C1a1/C1a1A,D"), + MTMT575("A,A/A1,B,B/B1,B/B1/B1a,B/B1/B1a/B1a1,B/B1/B1a/B1a2,B/B1/B1a/B1a3,B/B1/B1a/B1a4,C,C/C1,C/C2,C/C2/C2a,D"), + MTMT576("A,A/A1,B,B/B1,B/B2,B/B2/B2a,B/B2/B2b,B/B2/B2c,C"), + MTMT578("A,A/A1,B,B/B1,C,C/C1,D,E,E/E1,E/E2,E/E3,F"), + MTMT586("A,A/A1,B,B/B1,B/B2,B/B3,B/B4,B/B4/B4a,B/B5,B/B6,B/B6/B6a,B/B6/B6b,C"), + MTMT600("A,B,C,D,D/D1,D/D1/D1a,D/D1/D1a/D1a1"), + MTMT601("A,B,B/B1,B/B1/B1a,B/B1/B1a/B1a1"), + MTMT620("A,B,C,D,E,F,G,G/G1,G/G2,H"), + MTMT670("A,A/A1,A/A2,B,B/B1,B/B2,C"), + MTMT671("A,A/A1,B,B/B1,B/B2,C"), + MTMT760("A,B,C"), + MTMT767("A,B,C"); + + private final String sequencesInfo; + + MtSequenceInfoEnum(String sequencesInfo) { + this.sequencesInfo = sequencesInfo; + } + + /** + * Returns the sequence paths for this MT schema. + * Each sequence path represents a hierarchical structure within the MT schema. + * + * @return A comma-separated string of sequence paths. + * + */ + public String getSequencesInfo() { + return sequencesInfo; + } + +} diff --git a/src/test/java/com/prowidesoftware/swift/model/mt/MtSequenceInfoEnumTest.java b/src/test/java/com/prowidesoftware/swift/model/mt/MtSequenceInfoEnumTest.java new file mode 100644 index 00000000..c43a5b98 --- /dev/null +++ b/src/test/java/com/prowidesoftware/swift/model/mt/MtSequenceInfoEnumTest.java @@ -0,0 +1,42 @@ +package com.prowidesoftware.swift.model.mt; + +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; + +class MtSequenceInfoEnumTest { + + @ParameterizedTest + @CsvSource({ + "MTMT101, 'A,B'", + "MTMT102, 'A,B,C'", + "MTMT300, 'A,B,B/B1,B/B2,C,D,D/D1,E,E/E1,E/E1/E1a,E/E1/E1a/E1a1,F'", + "MTMT508, 'A,A/A1,B,B/B1,C'" + }) + void testGetSequencesInfo(MtSequenceInfoEnum sequenceInfo, String expectedSequences) { + assertEquals(expectedSequences, sequenceInfo.getSequencesInfo()); + } + + @ParameterizedTest + @CsvSource({"MTMT101, MTMT101", "MTMT102, MTMT102", "MTMT508, MTMT508"}) + void testFromFieldNameValid(String fieldName, MtSequenceInfoEnum expectedEnum) { + assertEquals(expectedEnum, MtSequenceInfoEnum.valueOf(fieldName)); + } + + @Test + void testFromFieldNameInvalid() { + assertThrows(IllegalArgumentException.class, () -> MtSequenceInfoEnum.valueOf("INVALID")); + assertThrows(IllegalArgumentException.class, () -> MtSequenceInfoEnum.valueOf("")); + assertThrows(IllegalArgumentException.class, () -> MtSequenceInfoEnum.valueOf("MT")); + } + + @Test + void testAllEnumValuesHaveSequences() { + for (MtSequenceInfoEnum sequenceInfo : MtSequenceInfoEnum.values()) { + assertNotNull(sequenceInfo.getSequencesInfo(), "Sequence info should not be null"); + assertFalse(sequenceInfo.getSequencesInfo().isEmpty(), "Sequence info should not be empty"); + } + } +}