|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.biojava.bio.program.tagvalue.StateMachine
public class StateMachine
This class implements a state machine for parsing events from the Parser class.
Each State can be specified to deliver events to a particular TagValueListener.
Transitions can be specified to occur between States when specific events are encountered. These events can be Tags delivered by startTag as well as the endTag/endRecord events. Events that result in exit from the current State can be specified to be notifiable to the State listener.
In addition, tables of transitions can be defined and specified as the fallback when the a corresponding Transition cannot be found for the tag. This is useful for specifying the destination States that are globally applicable for particular tags. As the fallbacks can be chained, you can end up with a hierarchy of Transition Tables, some being State-specific, others applicable to groups of States and finally one being global.
Nested Class Summary | |
---|---|
class |
StateMachine.BasicState
Implementation of a State in a state machine |
static interface |
StateMachine.ExitNotification
Interface implemented by State listeners that want notification when a transition leaves the State. |
class |
StateMachine.SimpleStateListener
a basic listener for a State. |
static interface |
StateMachine.State
Interface for a State within this StateMachine |
class |
StateMachine.Transition
class to represent a State Transition |
class |
StateMachine.TransitionTable
Table of Transition destination States and their corresponding Tags. |
Field Summary | |
---|---|
protected TagValueListener |
delegate
|
protected static java.lang.String |
END_RECORD_TAG
|
protected static java.lang.String |
END_TAG
|
protected static java.lang.String |
MAGICAL_STATE
|
protected static java.lang.String |
START_RECORD_TAG
|
Constructor Summary | |
---|---|
StateMachine()
|
Method Summary | |
---|---|
StateMachine.BasicState |
createState(java.lang.String label)
|
StateMachine.TransitionTable |
createTransitionTable()
|
void |
endRecord()
The current record has ended. |
void |
endTag()
End the current tag. |
TagValueListener |
getDelegate()
get listener to which all calls will be delegated |
StateMachine.BasicState |
getMagicalState()
|
StateMachine.State |
getState(java.lang.String label)
|
void |
setDelegate(TagValueListener delegate)
TagValueWrapper interface |
void |
startRecord()
A new record is about to start. |
void |
startTag(java.lang.Object tag)
TagValueListener interface |
void |
value(TagValueContext ctxt,
java.lang.Object value)
A value has been seen. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected static final java.lang.String START_RECORD_TAG
protected static final java.lang.String END_RECORD_TAG
protected static final java.lang.String END_TAG
protected static final java.lang.String MAGICAL_STATE
protected TagValueListener delegate
Constructor Detail |
---|
public StateMachine()
Method Detail |
---|
public StateMachine.BasicState getMagicalState()
public StateMachine.BasicState createState(java.lang.String label)
public StateMachine.State getState(java.lang.String label)
public StateMachine.TransitionTable createTransitionTable()
public void setDelegate(TagValueListener delegate)
setDelegate
in interface TagValueWrapper
public TagValueListener getDelegate()
TagValueWrapper
getDelegate
in interface TagValueWrapper
public void startTag(java.lang.Object tag) throws ParserException
startTag
in interface TagValueListener
tag
- the Object representing the new tag
ParserException
- if the tag could not be startedpublic void endTag() throws ParserException
TagValueListener
endTag
in interface TagValueListener
ParserException
- if the tag could not be endedpublic void startRecord() throws ParserException
TagValueListener
startRecord
in interface TagValueListener
ParserException
- if the record can not be startedpublic void endRecord() throws ParserException
TagValueListener
endRecord
in interface TagValueListener
ParserException
- if the record can not be endedpublic void value(TagValueContext ctxt, java.lang.Object value) throws ParserException
TagValueListener
value
in interface TagValueListener
ctxt
- a TagValueContext that could be used to push a sub-documentvalue
- the value Object observed
ParserException
- if the value could not be processed
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |