* </ol>
*
* @return
*/
private Machine geDuration2ndMachine() {
State startState = new NamedState("START");
State endState = new NamedState("END");
endState.setEndStateFlag(true);
Machine m = new Machine(startState);
State startAbbreviateState = new NamedState("START_ABBR");
State middleTermState = new NamedState("MID_TERM");
State finalTextState = new NamedState("FIN_TEXT");
State finalTermState = new NamedState("FIN_TERM");
State finalAppendState = new NamedState("FIN_APPEND");
State anotherAppendState = new NamedState("ANOTHER_APPEND");
// State firstDashState = new NamedState("FIRST_DASH");
// State secondDashState = new NamedState("SECOND_DASH");
// Condition firstDashCondition = new PunctuationValueCondition('-');
// Condition secondDashCondition = new PunctuationValueCondition('-');
Condition numericTextCondition = new WordSetCondition(
iv_middleNumericTermSet, true);
Condition periodCondition = new WordSetCondition(iv_periodSet, true);
Condition periodAdditionalCondition = new WordSetCondition(iv_periodSet, true);
Condition periodAdditional2Condition = new WordSetCondition(iv_periodSet, true);
Condition specificWordCondition = new WordSetCondition(
iv_specifiedWordSet, false);
Condition containsAppendTermCondition = new WordSetCondition(
iv_appendWordSet, true);
Condition containsSecondAppendTermCondition = new WordSetCondition(
iv_appendWordSet, true);
startState.addTransition(specificWordCondition, startAbbreviateState);
startState.addTransition(new AnyCondition(), startState);
startAbbreviateState.addTransition(containsAppendTermCondition,
middleTermState);
// startAbbreviateState.addTransition(firstDashCondition, firstDashState);
startAbbreviateState.addTransition(new NumberCondition(),
finalTermState);
startAbbreviateState.addTransition(new AnyCondition(), startState);
middleTermState.addTransition(new RangeStrengthCondition(), anotherAppendState);
middleTermState.addTransition(containsSecondAppendTermCondition, finalTermState);
middleTermState.addTransition(numericTextCondition, finalAppendState);
middleTermState.addTransition(new NumberCondition(), anotherAppendState);
middleTermState.addTransition(new AnyCondition(), startState);
// secondDashState.addTransition(containsSecondAppendTermCondition, finalTextState);
// secondDashState.addTransition(periodCondition, endState);
// secondDashState.addTransition(new AnyCondition(), startState);
//finalTermState.addTransition(periodCondition, endState);
finalTermState.addTransition(new RangeStrengthCondition(), finalTextState);
finalTermState.addTransition(numericTextCondition, finalTextState);
finalTermState.addTransition(new NumberCondition(), finalTextState);
finalTermState.addTransition(new AnyCondition(), startState);
finalAppendState.addTransition(periodAdditionalCondition, endState);
finalAppendState.addTransition(new AnyCondition(), startState);
anotherAppendState.addTransition(periodAdditional2Condition, endState);
anotherAppendState.addTransition(new AnyCondition(), startState);
finalTextState.addTransition(periodCondition, endState);
finalTextState.addTransition(new AnyCondition(), startState);
endState.addTransition(new AnyCondition(), startState);