public class SwiftTagListBlock extends SwiftBlock implements java.io.Serializable, java.lang.Iterable<Tag>
Modifier and Type | Field and Description |
---|---|
static SwiftTagListBlock |
EMPTY_LIST
Immutableempty instance of this class.
|
blockType, input, output, unparsedTexts
Constructor and Description |
---|
SwiftTagListBlock()
Default constructor, shouldn't be used normally.
|
SwiftTagListBlock(java.util.List<Tag> tags)
Intended to be used by search results in this class
|
Modifier and Type | Method and Description |
---|---|
void |
addTag(int index,
Tag tag)
Adds a tag at the specified position in this tag list.
|
void |
addTags(java.util.List<Tag> tags)
Add all tags in the List argument to the current blocks.
|
SwiftTagListBlock |
append(Field... fields)
Appends all fields to the current block
|
SwiftTagListBlock |
append(Field field)
Add the given field to the end of the list.
|
SwiftTagListBlock |
append(SwiftTagListBlock... blocks)
Appends all blocks to the end of this one.
|
SwiftTagListBlock |
append(SwiftTagListBlock block)
Appends all tags in block to the contents of this block
|
SwiftTagListBlock |
append(Tag... tags)
Appends all tags to the current block
|
SwiftTagListBlock |
append(Tag tag)
Add the given tag to the end of the list
|
Tag[] |
asTagArray()
Get the content of this tag block as a Tag array.
|
SwiftTagListBlock |
clear()
Removes all tags from the backing storage.
|
boolean |
containsAllOf(java.lang.String... name)
Tell if this block contains all of the given name tags.
|
boolean |
containsAnyOf(java.lang.String... name)
Tell if this block contains any of the given name tags.
|
boolean |
containsField(java.lang.String name)
Tell if this block contains at least a field with the given name
|
boolean |
containsTag(int tagNumber)
Tells if this block contains at least one tag with the given number (ignoring the letter option).
|
boolean |
containsTag(java.lang.String name)
Tells if this block contains at least one tag with the given name.
|
boolean |
containsTag(Tag t)
Iterates the internal list of tags and returns true if there is at least one tag equals to the given one.
|
int |
countAll()
Gets the number of tags in this taglist
|
int |
countByName(java.lang.String name)
Counts how many tags with the given name are present in the block.
|
int |
countTagsStarsWith(java.lang.String name,
java.lang.String value)
Counts tags starting with the given value
|
boolean |
equals(java.lang.Object o) |
java.util.List<Field> |
fields()
Return the list of fields in this block.
|
SwiftTagListBlock |
filterByName(boolean include,
java.lang.String... names)
Returns a new block that includes (true) or excludes (false), depending on
includeOrExclude flag
all tags with names matching any of the parameter names.Once a tagname is matched, it is removed from the list of tags to be matched, causing to be only included/excluded the first instance of every tagname. For example: 1, 2, 3, 4, 5, 6 filter by names 2, 4, 5 will return 1, 3, 6. |
SwiftTagListBlock |
filterByNameOrdered(java.lang.String... names)
Returns a new block that includes all tags with names matching any of the parameter names until a non matching tag is found.
Once a tagname is matched, it is removed from the list of tags to be matched, causing to be only included/excluded the first instance of every tagname. For example: 1, 2, 3, 9, 4, 5, 6 filter by names 1, 2, 3, 4 will return 1, 2, 3. |
Field |
getField(int index)
Shortcut to
getTag(int) .getField() |
Field |
getFieldByName(java.lang.String name)
Gets the first field matching the given name.
|
Field |
getFieldByName(java.lang.String name,
java.lang.String componentValue)
Gets the first field matching the given name and first component value.
|
Field |
getFieldByName(java.lang.String name,
java.lang.String component1,
java.lang.String component2)
Gets all fields matching the given name, matching also the first and second component values.
For example, for parameters 22F, OPTF and FOO it will match 22F::OPTF/FOO/QCAS but not 22F::OPTF//QCAS |
Field |
getFieldByNumber(int fieldNumber)
Search and retrieve the first Field with the given number.
|
Field |
getFieldByNumber(int fieldNumber,
java.lang.String componentValue)
Gets the first field matching the given number and component value.
|
Field |
getFieldByQualifiers(java.lang.String name,
java.lang.String qualifier,
java.lang.String conditionalQualifier)
Gets all generic fields matching the given name and qualifiers.
For example, for parameters 22F, OPTF and QCAS it will match 22F::OPTF//QCAS or 22F::OPTF/DSS/QCAS |
Field[] |
getFieldsByName(java.lang.String name)
Gets all fields matching the given name.
|
java.util.List<? extends Field> |
getFieldsByName(java.lang.String name,
java.lang.String componentValue)
Gets all fields matching the given name and first component value.
|
java.util.List<? extends Field> |
getFieldsByNumber(int fieldNumber)
Get all Fields of a given number.
For example: for 59 will return any of 59, 59A, 59F, etc... |
java.lang.String |
getName()
Returns the block name (this method is to be overwritten for derived classes).
|
java.lang.Integer |
getNumber()
Returns the block number (this method is to be overwritten for derived classes).
|
SwiftTagListBlock |
getOptionalList(java.lang.String[][] optionalTags) |
SwiftTagListBlock |
getOptionalList(java.lang.String[][] optionalTags,
int startAt)
Search a sequence of optional tags.
|
java.util.List<SwiftTagListBlock> |
getOptionalLists(java.lang.String[][] optionalTags) |
SwiftTagListBlock |
getSubBlock(java.lang.Integer from,
java.lang.Integer to)
Creates a new block containing the list of tags between the given indexes: from, inclusive, and to, exclusive.
Similar to the substring method of String, but for a list of Tag instead of an array of characters. |
SwiftTagListBlock |
getSubBlock(java.lang.String blockName)
Gets all tags of a specific sub block, searching for the first occurrence of the starting 16R field (with blockName as value)
and its correspondent 16S field (with blockName as value).
|
SwiftTagListBlock |
getSubBlock(java.lang.String startTagName,
java.lang.String endTagName)
Get all tags between the first occurrence of the starting Tag name and the first occurrence of an optional ending Tag name.
|
SwiftTagListBlock |
getSubBlock(Tag start,
Tag end)
Get all tags between the first occurrence of the starting Tag and the first occurrence of an optional ending Tag.
|
SwiftTagListBlock |
getSubBlockAfterFirst(java.lang.String tagname,
boolean includeBoundaryInResult)
Gets a subblock after the first tag with the given name.
|
SwiftTagListBlock |
getSubBlockAfterFirst(Tag tag,
boolean includeBoundaryInResult)
Gets the subblock after the first instance of a given tag boundary.
|
SwiftTagListBlock |
getSubBlockAfterLast(java.lang.String tagname,
boolean includeBoundaryInResult)
Gets the subblock after the last tag with the given name.
|
SwiftTagListBlock |
getSubBlockBeforeFirst(java.lang.String tagname,
boolean includeBoundaryInResult)
Gets the subblock before the first tag with the given tagname.
|
SwiftTagListBlock |
getSubBlockBeforeFirst(Tag tag,
boolean includeBoundaryInResult)
Gets the subblock before the first tag with the given tagname.
|
SwiftTagListBlock |
getSubBlockBeforeLast(java.lang.String tagname,
boolean includeBoundaryInResult)
Gets the subblock with all tags until tha last tag with the given name
|
SwiftTagListBlock |
getSubBlockByTagNames(java.lang.Integer startIndex,
java.lang.String... searchTags)
Find a sub block given a comprehensive ordered list of search tag names.
|
SwiftTagListBlock |
getSubBlockDelimitedWithOptionalTail(java.lang.String[] start,
java.lang.String[] end,
java.lang.String[] tail)
Get the first found sub block in message that start with tag with tag name, end with tag named endName and optionally, may be null, have optionalTail tag names at the end of the sequence
|
java.util.List<SwiftTagListBlock> |
getSubBlocks(int startTagNumber,
int endTagNumber)
Get all sub blocks using the starting and ending Tag numbers as block boundaries (Tag values are ignored).
|
java.util.List<SwiftTagListBlock> |
getSubBlocks(int startTagNumber,
java.lang.String endTagName)
Get all sub blocks using the starting Tag number and ending Tag name as block boundaries (Tag values are ignored).
|
java.util.List<SwiftTagListBlock> |
getSubBlocks(java.lang.String blockName)
Gets all sub blocks with a specific name, using ISO 15022 FIN block structure definitions.
|
java.util.List<SwiftTagListBlock> |
getSubBlocks(java.lang.String startTagName,
int endTagNumber)
Get all sub blocks using the starting Tag name and ending Tag number as block boundaries (Tag values are ignored).
|
java.util.List<SwiftTagListBlock> |
getSubBlocks(java.lang.String startTagName,
java.lang.String endTagName)
Get all sub blocks using the starting and ending Tag names as block boundaries (Tag values are ignored).
|
java.util.List<SwiftTagListBlock> |
getSubBlocks(Tag start,
Tag end)
Get all sub blocks using the starting and ending Tags as block boundaries.
The starting and end tags are included in the resulting sub blocks. |
java.util.List<SwiftTagListBlock> |
getSubBlocksByTagNames(java.lang.Integer startIndex,
java.lang.String... searchTags)
Similar to
getSubBlockByTagNames(Integer, String...) but will return
all matches for the indicated subblock. |
java.util.List<SwiftTagListBlock> |
getSubBlocksDelimitedWithOptionalTail(java.lang.String[] start,
java.lang.String[] end,
java.lang.String[] tail)
Get all subblocks in message that start with tag with tagname, end with tag named endName and optionally, may be null, have optionalTail tag names at the end of the secuence
|
Tag |
getTag(int index)
Gets the Tag at the given index in this block.
|
Tag |
getTagByName(java.lang.String name)
Iterate through tags in this block and return the first tag whose name matches the parameter.
|
Tag |
getTagByName(java.lang.String name,
java.lang.String component1,
java.lang.String component2)
Get the first field with the given name, matching the given values for components 1 and 2.
|
Tag |
getTagByNumber(int tagNumber)
Search and retrieve the first tag with the given number.
|
java.lang.Integer |
getTagIndex(java.lang.String startTagNumber,
java.lang.String[] letterOptions)
Get the index of the given tag in the list.
|
java.util.Map<java.lang.String,java.lang.String> |
getTagMap()
Gets a Map that contains the the tag names as keys and the values as map value.
|
java.util.List<Tag> |
getTags()
Gets the internal List of tags in block.
|
java.util.List<Tag> |
getTagsByContent(java.lang.String content)
Returns the tags having the specified content as part of its value, regardless of the tag name.
For example the field :98A::XDTE//20090818 will be included for parameter XDTE |
Tag[] |
getTagsByName(java.lang.String name)
Gets all tags with the given name.
|
java.util.List<Tag> |
getTagsByName(java.lang.String name,
java.lang.String componentValue)
Gets all tag instances matching the given name and first component value.
|
java.util.List<Tag> |
getTagsByNumber(int tagNumber)
Get all tags with a given number, regardless of the letter options.
|
java.util.List<Tag> |
getTagsByValue(java.lang.String value)
Returns the tags having the exact specified content as value, regardless of the tag name.
For example the field :98A::XDTE//20090818 will be included for parameter :XDTE//20090818 |
java.lang.String |
getTagValue(java.lang.String name)
Gets the value of the given tag or null if that tag is not found.
If the tag is present more than once, then this method retrieves the value of the first occurrence. |
java.lang.String[] |
getTagValues(java.lang.String name)
Gets the values for all tags matching the given name.
|
int |
hashCode() |
int |
indexOfAnyFirst(java.lang.String... tagnames)
Gets the index of the first tag matching any of the given names
|
int |
indexOfAnyFirstAfterIndex(int index,
java.lang.String... tagnames)
Gets the index of the first tag matching any of the given names at or after the given index in the tag list
|
int |
indexOfAnyLast(java.lang.String... tagnames)
Get the index of the last of any tagnames in the list or -1 if not found or any precondition is not met.
|
int |
indexOfAnyLastAfterIndex(int index,
java.lang.String... tagnames)
Get the index of the last of any tagnames after the given index in the list or -1 if not found or any precondition is not met
|
int |
indexOfFirst(java.lang.String tagname)
Gets the index of the first tag with the given name in this tag list
|
int |
indexOfFirstValue(java.lang.String tagname,
java.lang.String value)
Gets the index of the first tag in this tag list, with the given name and value
|
int |
indexOfLast(java.lang.String tagname)
Get the index of the last tagname in the list or -1 if not found or any precondition is not met
|
int |
indexOfLastValue(java.lang.String tagname,
java.lang.String value)
Get the index of the last tagname with the given value in the list or -1 if not found or any precondition is not met
|
boolean |
isEmpty()
Tells if the block contains at least one Tag.
|
java.util.Iterator<Tag> |
iterator() |
SwiftTagListBlock |
removeAfterFirstStartsWith(java.lang.String name,
java.lang.String startsWith)
Return a new block with all tags until the first tagname with the given name that start with startsWith
|
int |
removeAll(java.lang.String name)
Remove all tags in the current block that match the given name.
|
SwiftTagListBlock |
removeSubBlock(java.lang.String blockName)
Removes a sub block using fields 16R and 16S with the given block name as boundary.
|
SwiftTagListBlock |
removeSubBlocks(java.lang.String blockName)
Remove all sub blocks with the given name (using fields 16R and 16S as boundaries).
|
java.lang.String |
removeTag(java.lang.String name)
Remove the tag with the given name in the block.
|
protected void |
setBlockName(java.lang.String blockName)
Sets the block name (this method is to be overwrite for derived classes).
|
protected void |
setBlockNumber(java.lang.Integer blockNumber)
Sets the block number (this method is to be overwrite for derived classes).
|
Tag |
setTag(int index,
Tag tag)
Replaces the tag at the specified position in this tag list with the specified tag.
|
void |
setTags(java.util.List<Tag> tags)
Set tag in the list of tags of this block.
|
void |
setTags(Tag[] tags) |
int |
size()
Tells the amount of fields contained in the block, may be zero.
|
java.util.List<SwiftTagListBlock> |
splitByTagName(int tagNumber,
java.lang.String letterOption)
Helper method to retrieve all sequences starting with the parameter field.
|
java.util.List<SwiftTagListBlock> |
splitByTagName(java.lang.String tagName)
Split the given list with the given tagname.
|
SwiftTagListBlock |
sublist(java.lang.Integer start,
java.lang.Integer end)
Get a new list with the elements contained between start and end, both inclusive.
|
java.util.Iterator<Tag> |
tagIterator()
Gets a Iterator for the tags in this block or null if no tags are present on the block an empty iterator is returned.
|
java.util.List<java.lang.String> |
tagNamesList() |
java.lang.String |
toJson()
Get a json representation of this block.
|
java.lang.String |
toString()
convert this to string
|
void |
visit(TagVisitor visitor) |
getBlockType, getInput, getOutput, getUnparsedTexts, getUnparsedTextsSize, isTagBlock, setBlockType, setInput, setOutput, setUnparsedTexts, unparsedTextAddText, unparsedTextAddText, unparsedTextGetAsMessage, unparsedTextGetText, unparsedTextIsMessage, unparsedTextVerify
public static final SwiftTagListBlock EMPTY_LIST
public SwiftTagListBlock()
public SwiftTagListBlock(java.util.List<Tag> tags)
public java.util.List<Tag> getTags()
Tag
public void setTags(java.util.List<Tag> tags)
tags
- the tags of the block, may be null to remove all the tags of the blockjava.lang.IllegalArgumentException
- if parameter tags is not null and contains elements of class other than Tagpublic void setTags(Tag[] tags)
tags
- tags to setsetTags(List)
public Tag getTagByName(java.lang.String name)
name
- the tag name to search, for example "32A" or "58" (letter option wildcard 'a' is not supported)java.lang.IllegalArgumentException
- if the name parameter is nullpublic Tag getTag(int index)
index
- the index position of the tag to retrieve (zero based)java.lang.IndexOutOfBoundsException
- if the index is out of rangeList.get(int)
public boolean containsTag(java.lang.String name)
name
- the tag name to search, for example "32A" or "58" (letter option wildcard 'a' is not supported)java.lang.IllegalArgumentException
- if the name parameter is nullgetTagByName(String)
public boolean containsTag(int tagNumber)
containsTag(59)
will return true if there is any variant of 59, 59A, 59F, etc...tagNumber
- the tag number to searchgetTagByNumber(int)
public java.lang.String getTagValue(java.lang.String name)
name
- the tag name to search, for example "32A" or "58" (letter option wildcard 'a' is not supported)java.lang.IllegalArgumentException
- if the name parameter is nullgetTagByName(String)
public Tag[] getTagsByName(java.lang.String name)
name
- the tags name to search, for example "32A" or "58" (letter option wildcard 'a' is not supported)java.lang.IllegalArgumentException
- if the name parameter is nullto find tags with letter option wildcard
public Tag getTagByName(java.lang.String name, java.lang.String component1, java.lang.String component2)
name
- the tag name to search, for example "32A" or "58" (letter option wildcard 'a' is not supported)component1
- the string to match as component 1.component2
- the string to match as component 2.java.lang.IllegalArgumentException
- if the name parameter is nullpublic Tag getTagByNumber(int tagNumber)
tagNumber
- the tags number to searchpublic java.util.List<Tag> getTagsByNumber(int tagNumber)
tagNumber
- the tags number to searchpublic java.util.List<Tag> getTagsByValue(java.lang.String value)
For partial match see getTagsByContent(String)
value
- the value of tags to findpublic java.util.List<Tag> getTagsByContent(java.lang.String content)
For exact value match see getTagsByValue(String)
content
- partial value of the tags to findpublic java.lang.String[] getTagValues(java.lang.String name)
name
- the tag name to search, for example "32A" or "58" (letter option wildcard 'a' is not supported)java.lang.IllegalArgumentException
- if the name parameter is nullgetTagsByName(String)
public java.util.Map<java.lang.String,java.lang.String> getTagMap()
public Field getFieldByName(java.lang.String name)
name
- the name of the field to match, may end with 'a' as wildcard to select any letter option, for example 50a will match both 50A and 50Bjava.lang.IllegalArgumentException
- if the name parameter is nullpublic Field[] getFieldsByName(java.lang.String name)
name
- the name of the field to match, may end with 'a' as wildcard to select any letter option, for example 50a will match both 50A and 50Bjava.lang.IllegalArgumentException
- if the name parameter is nullpublic Field getFieldByName(java.lang.String name, java.lang.String componentValue)
name
- the name of the field to match, may end with 'a' as wildcard to select any letter option, for example 50a will match both 50A and 50BcomponentValue
- expected value for component 1 in the matched field, or null to return the first field matching the namejava.lang.IllegalArgumentException
- if name parameter is nullpublic java.util.List<? extends Field> getFieldsByName(java.lang.String name, java.lang.String componentValue)
name
- the name of the field to match, may end with 'a' as wildcard to select any letter option, for example 50a will match both 50A and 50BcomponentValue
- expected value for component 1 in the matched fields, or null to return all fields matching the namejava.lang.IllegalArgumentException
- if name parameter is nullpublic java.util.List<Tag> getTagsByName(java.lang.String name, java.lang.String componentValue)
name
- the name of the field to match, may end with 'a' as wildcard to select any letter option, for example 50a will match both 50A and 50BcomponentValue
- expected value for component 1 in the matched fields, or null to return all fields matching the namejava.lang.IllegalArgumentException
- if name parameter is nullpublic Field getField(int index)
getTag(int)
.getField()index
- the index position of the field to retrieve (zero based)java.lang.IndexOutOfBoundsException
- if the index is out of rangegetTag(int)
public Field getFieldByName(java.lang.String name, java.lang.String component1, java.lang.String component2)
name
- the name of the field to match, may end with 'a' as wildcard to select any letter option, for example 50a will match both 50A and 50Bcomponent1
- the expected value for the component 1 of the matched fieldcomponent2
- the expected value for the component 2 of the matched fieldgetFieldByQualifiers(String, String, String)
public Field getFieldByQualifiers(java.lang.String name, java.lang.String qualifier, java.lang.String conditionalQualifier)
name
- the name of the field to match, may end with 'a' as wildcard to select any letter option, for example 50a will match both 50A and 50Bqualifier
- the expected value for the component 1 of the matched fieldconditionalQualifier
- the expected value for the conditional qualifier component (usually 2 or 3) of the matched fieldgetFieldByName(String, String)
,
GenericField
public Field getFieldByNumber(int fieldNumber)
fieldNumber
- the field number to searchgetTagByNumber(int)
public java.util.List<? extends Field> getFieldsByNumber(int fieldNumber)
fieldNumber
- the field number to searchgetTagsByNumber(int)
public Field getFieldByNumber(int fieldNumber, java.lang.String componentValue)
fieldNumber
- the field number to searchcomponentValue
- expected value for component 1 in the matched fieldpublic boolean containsField(java.lang.String name)
name
- the name of the field to match, may end with 'a' as wildcard to select any letter option, for example 50a will match both 50A and 50BgetFieldsByName(String)
public int countByName(java.lang.String name)
name
- the name of the tagjava.lang.IllegalArgumentException
- if tagname key is nullpublic java.lang.String toString()
toString
in class SwiftBlock
public java.lang.String removeTag(java.lang.String name)
name
- the name of the tag to remove must not be nulljava.lang.IllegalArgumentException
- if parameter name is nullremoveAll(String)
public int removeAll(java.lang.String name)
containsTag(String)
must be used.name
- the name of the tag to remove. may be null in which case the tags containing 'block data' will be removedjava.lang.IllegalArgumentException
- if parameter name is nullremoveTag(String)
public java.util.Iterator<Tag> tagIterator()
Tag
public void addTags(java.util.List<Tag> tags)
tags
- the list of tags to addjava.lang.IllegalArgumentException
- if parameter name is nullpublic void addTag(int index, Tag tag)
tag
- the tag to addindex
- index at which the specified tag is to be inserted (zero based)java.lang.IllegalArgumentException
- if parameter name is nulljava.lang.IndexOutOfBoundsException
- if the index is out of range (index < 0 || index >= size())public int countAll()
public Tag setTag(int index, Tag tag)
index
- index of the tag to replace (zero based)tag
- tag to be stored at the specified positionjava.lang.IllegalArgumentException
- if parameter name is nulljava.lang.IndexOutOfBoundsException
- if the index is out of range (index < 0 || index >= size())public boolean isEmpty()
public int size()
public boolean equals(java.lang.Object o)
equals
in class SwiftBlock
public int hashCode()
hashCode
in class SwiftBlock
public java.util.List<SwiftTagListBlock> getSubBlocks(Tag start, Tag end)
Tag.equalsIgnoreCR(Tag)
(not object references).start
- starting tagend
- ending tagSwiftTagListBlock
new blocks containing the found tags (the list can be empty if no tags are found)public java.util.List<SwiftTagListBlock> getSubBlocks(java.lang.String blockName)
blockName
- block name, used for blockgetSubBlocks(Tag, Tag)
public java.util.List<SwiftTagListBlock> getSubBlocks(java.lang.String startTagName, java.lang.String endTagName)
startTagName
- starting tag nameendTagName
- ending tag nameSwiftTagListBlock
new blocks containing the found tags (the list can be empty if no tags are found)public java.util.List<SwiftTagListBlock> getSubBlocks(int startTagNumber, int endTagNumber)
startTagNumber
- starting tag number regardless of the letter optionendTagNumber
- ending tag number regardless of the letter optionSwiftTagListBlock
new blocks containing the found tags (the list can be empty if no tags are found)public java.util.List<SwiftTagListBlock> getSubBlocks(java.lang.String startTagName, int endTagNumber)
startTagName
- starting tag nameendTagNumber
- ending tag number regardless of the letter optionSwiftTagListBlock
new blocks containing the found tags (the list can be empty if no tags are found)public java.util.List<SwiftTagListBlock> getSubBlocks(int startTagNumber, java.lang.String endTagName)
startTagNumber
- starting tag name number regardless of the letter optionendTagName
- ending tag nameSwiftTagListBlock
new blocks containing the found tags (the list can be empty if no tags are found)public SwiftTagListBlock getSubBlock(java.lang.String startTagName, java.lang.String endTagName)
startTagName
- starting tag nameendTagName
- ending tag name or nullpublic SwiftTagListBlock getSubBlock(java.lang.String blockName)
blockName
- block name, used for blockgetSubBlock(Tag, Tag)
public SwiftTagListBlock getSubBlock(Tag start, Tag end)
start
- starting tagend
- ending tag or nullpublic SwiftTagListBlock getSubBlock(java.lang.Integer from, java.lang.Integer to)
List.subList(int, int)
For a new block containing both boundary elements included use sublist(Integer, Integer)
from
- may be null in which case is equivalent to zeroto
- may be null or larger than the list size, in which case is equivalent to the index of the last available item.java.lang.IllegalArgumentException
- if from is bigger than to.List.subList(int, int)
public SwiftTagListBlock sublist(java.lang.Integer start, java.lang.Integer end)
getSubBlock(Integer, Integer)
start
- start index, zero based. if null = zeroend
- last index, zero based, null means last elementpublic SwiftTagListBlock getSubBlockAfterFirst(java.lang.String tagname, boolean includeBoundaryInResult)
SwiftTagListBlock
that contains all tags after the first instance
of a tag with the given tagname.tagname
- the tag that will be used for splitting (value is set to empty)includeBoundaryInResult
- if true, the found boundary tag will be the first item in the returned blockpublic SwiftTagListBlock getSubBlockAfterFirst(Tag tag, boolean includeBoundaryInResult)
Tag.equalsIgnoreCR(Tag)
(not object references).tag
- the tag that will be used for splittingincludeBoundaryInResult
- if true, the found boundary tag will be the first item in the returned blockpublic SwiftTagListBlock getSubBlockAfterLast(java.lang.String tagname, boolean includeBoundaryInResult)
tagname
- the name of the tag that will be used for for splitting (value is set to empty)includeBoundaryInResult
- if true, the found boundary tag will be the first item in the returned blockpublic SwiftTagListBlock getSubBlockBeforeFirst(java.lang.String tagname, boolean includeBoundaryInResult)
SwiftTagListBlock
that contains all tags before the first instance
of a tag with the given tagname.tagname
- the name of the tag that will be used for splitting (value is set to empty)includeBoundaryInResult
- if true, the found boundary tag will be the last item in the returned blockpublic SwiftTagListBlock getSubBlockBeforeFirst(Tag tag, boolean includeBoundaryInResult)
SwiftTagListBlock
that contains all tags before the first instance
of a tag with the given tagname.tag
- the tag that will be used for splittingincludeBoundaryInResult
- if true, the found boundary tag will be the last item in the returned blockpublic SwiftTagListBlock getSubBlockBeforeLast(java.lang.String tagname, boolean includeBoundaryInResult)
tagname
- the name of the tag that will be used for splitting (value is set to empty)includeBoundaryInResult
- if true, the found boundary tag will be the last item in the returned blockpublic java.lang.Integer getTagIndex(java.lang.String startTagNumber, java.lang.String[] letterOptions)
startTagNumber
- the number of the tag, without any letter optionletterOptions
- list of letter options to search, an empty string is accepted to search no letter optionpublic boolean containsTag(Tag t)
t
- the tag to search in tagspublic java.util.List<SwiftTagListBlock> splitByTagName(java.lang.String tagName)
public int indexOfLast(java.lang.String tagname)
public int indexOfLastValue(java.lang.String tagname, java.lang.String value)
public int indexOfAnyLast(java.lang.String... tagnames)
tagnames
- a variable list of tagnames to search. Exact match only, wildcards NOT acceptedpublic int indexOfAnyLastAfterIndex(int index, java.lang.String... tagnames)
public int indexOfFirst(java.lang.String tagname)
public int indexOfFirstValue(java.lang.String tagname, java.lang.String value)
tagname
- the name of the tag to findvalue
- the value of the tag to findpublic int indexOfAnyFirst(java.lang.String... tagnames)
public int indexOfAnyFirstAfterIndex(int index, java.lang.String... tagnames)
public SwiftTagListBlock removeSubBlock(java.lang.String blockName)
It searches for a starting 16R field (with blockName as value) and its correspondent 16S field (with blockName as value) as block boundaries and removes those fields from the result.
If the searched block is not found (starting field 16R not present) the result will be just a copy from this block. If the end boundary is not found (ending field field 16S not present), trims all fields after the start boundary 16R.
If several instances of the searched block are present, only the first one will be removed.
The boundary fields 16R and 16S are also removed from the result.
blockName
- block name, for example "SUBBAL" to search for 16R:SUBBAL and 16S:SUBBAL as boundariespublic SwiftTagListBlock removeSubBlocks(java.lang.String blockName)
The implementation is similar to removeSubBlock(String)
but will remove all found
instances of the sub block.
blockName
- block name, for example "SUBBAL" to search for 16R:SUBBAL and 16S:SUBBAL as boundariesremoveSubBlock(String)
public boolean containsAnyOf(java.lang.String... name)
containsTag(String)
.name
- the list of tags to check, if null or empty this method will return false without further actioncontainsTag(String)
,
containsAllOf(String...)
public boolean containsAllOf(java.lang.String... name)
containsTag(String)
.name
- the list of tags to check, if null or empty this method will return false without further actioncontainsTag(String)
,
containsAnyOf(String...)
public SwiftTagListBlock filterByName(boolean include, java.lang.String... names)
includeOrExclude
flag
all tags with names matching any of the parameter names.include
- if true include all tags with given names, if false include all tags with a name not in namesnames
- list of tagnames to matchpublic SwiftTagListBlock filterByNameOrdered(java.lang.String... names)
names
- list of tagnames to matchpublic java.util.List<SwiftTagListBlock> getSubBlocksDelimitedWithOptionalTail(java.lang.String[] start, java.lang.String[] end, java.lang.String[] tail)
start
- name of the tag that identifies the begin of the sequenceend
- name of the tag that identifies the end of the sequencetail
- names of tags that are optional and belong to the sequence, the must be after endNamepublic java.util.List<SwiftTagListBlock> getSubBlocksByTagNames(java.lang.Integer startIndex, java.lang.String... searchTags)
getSubBlockByTagNames(Integer, String...)
but will return
all matches for the indicated subblock.public SwiftTagListBlock getSubBlockByTagNames(java.lang.Integer startIndex, java.lang.String... searchTags)
For example given the block [20, 21, 32A, 54, 36, 36, 58B, 72]
startIndex
- optional starting offset, defaults to zero to search from the beginning of the blocksearchTags
- a list of tags to search, in order, for example: 20, 59A, 50K, 72public SwiftTagListBlock getSubBlockDelimitedWithOptionalTail(java.lang.String[] start, java.lang.String[] end, java.lang.String[] tail)
start
- name of the tag that identifies the begin of the sequenceend
- name of the tag that identifies the end of the sequencetail
- names of tags that are optional and belong to the sequence, the must be after endNamepublic SwiftTagListBlock getOptionalList(java.lang.String[][] optionalTags)
optionalTags
- the rows of optional tagsgetOptionalList(String[][], int)
public SwiftTagListBlock getOptionalList(java.lang.String[][] optionalTags, int startAt)
optionalTags
- the rows of optional tagsstartAt
- the starting index, zero-basedpublic java.util.List<SwiftTagListBlock> getOptionalLists(java.lang.String[][] optionalTags)
public java.util.List<java.lang.String> tagNamesList()
public int countTagsStarsWith(java.lang.String name, java.lang.String value)
name
- the exact name of the tag to be matchedvalue
- the value that will be used to test if tag value startsWithTag.startsWith(String)
public SwiftTagListBlock removeAfterFirstStartsWith(java.lang.String name, java.lang.String startsWith)
name
- a field namestartsWith
- the starting field content to searchpublic java.lang.String toJson()
Example:
{ "tags": [ { "name": "113", "value": "SEPA" }, { "name": "20", "value": "REFERENCE" } ] }
public SwiftTagListBlock append(SwiftTagListBlock block)
block
- a block to appendpublic SwiftTagListBlock append(SwiftTagListBlock... blocks)
blocks
- may be null or empty, if so nothing happenspublic SwiftTagListBlock append(Tag tag)
tag
- the tag to add, must not be nullthis
java.lang.IllegalArgumentException
- if tag is nullpublic SwiftTagListBlock append(Tag... tags)
tags
- the tags to append. may be null in which case nothing happensthis
public SwiftTagListBlock append(Field field)
field
- the field to add, must not be nullthis
java.lang.IllegalArgumentException
- if field is nullpublic SwiftTagListBlock append(Field... fields)
fields
- the fields to append. may be null in which case nothing happensthis
public java.util.Iterator<Tag> iterator()
iterator
in interface java.lang.Iterable<Tag>
public Tag[] asTagArray()
public SwiftTagListBlock clear()
public java.lang.String getName()
SwiftBlock
getName
in class SwiftBlock
public java.lang.Integer getNumber()
SwiftBlock
getNumber
in class SwiftBlock
protected void setBlockName(java.lang.String blockName)
SwiftBlock
setBlockName
in class SwiftBlock
blockName
- the block name to setprotected void setBlockNumber(java.lang.Integer blockNumber)
SwiftBlock
setBlockNumber
in class SwiftBlock
blockNumber
- the block number to setpublic void visit(TagVisitor visitor)
public java.util.List<Field> fields()
THe implementation iterates the existing Tag objects and for each
calls the Tag.asField()
method to create the corresponding
Field instance
public java.util.List<SwiftTagListBlock> splitByTagName(int tagNumber, java.lang.String letterOption)
tagNumber
- the tag numberletterOption
- optional letter option, if null, split is done by tag number for any letter option