|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectca.uhn.hl7v2.parser.MessageIterator
public class MessageIterator
Iterates over all defined nodes (ie segments, groups) in a message,
regardless of whether they have been instantiated previously. This is a
tricky process, because the number of nodes is infinite, due to infinitely
repeating segments and groups. See next()
for details on how
this is handled.
This implementation assumes that the first segment in each group is present
(as per HL7 rules). Specifically, when looking for a segment location, an
empty group that has a spot for the segment will be overlooked if there is
anything else before that spot. This may result in surprising (but sensible)
behaviour if a message is missing the first segment in a group.
Nested Class Summary | |
---|---|
static class |
MessageIterator.Position
A structure position within a message. |
Constructor Summary | |
---|---|
MessageIterator(Message start,
IStructureDefinition startDefinition,
java.lang.String direction,
boolean handleUnexpectedSegments)
Creates a new instance of MessageIterator |
Method Summary | |
---|---|
java.lang.String |
getDirection()
|
int |
getNextIndexWithinParent()
Must be called after next() |
boolean |
hasNext()
Returns true if another object exists in the iteration sequence. |
Structure |
next()
Returns the next node in the message. |
void |
remove()
Not supported |
void |
setDirection(java.lang.String direction)
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public MessageIterator(Message start, IStructureDefinition startDefinition, java.lang.String direction, boolean handleUnexpectedSegments)
Method Detail |
---|
public boolean hasNext()
hasNext
in interface java.util.Iterator<Structure>
public Structure next()
Returns the next node in the message. Sometimes the next node is ambiguous. For example at the end of a repeating group, the next node may be the first segment in the next repetition of the group, or the next sibling, or an undeclared segment locally added to the group's end. Cases like this are disambiguated using getDirection(), which returns the name of the structure that we are "iterating towards". Usually we are "iterating towards" a segment of a certain name because we have a segment string that we would like to parse into that node. Here are the rules:
next
in interface java.util.Iterator<Structure>
public void remove()
remove
in interface java.util.Iterator<Structure>
public java.lang.String getDirection()
public void setDirection(java.lang.String direction)
public int getNextIndexWithinParent()
next()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |