Package nz.org.riskscape.wizard.ask
Class EnumAsker
java.lang.Object
nz.org.riskscape.wizard.ask.BaseAsker
nz.org.riskscape.wizard.ask.EnumAsker
- All Implemented Interfaces:
Asker
-
Field Summary
Fields inherited from class nz.org.riskscape.wizard.ask.BaseAsker
enumTranslator, translationContext
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionnz.org.riskscape.problem.ResultOrProblems<nz.org.riskscape.wizard.Answer.Response>
ask
(AskRequest input) Get a bound value from the user - note that the response's original input is returned fromBaseAsker.askUnbound(AskRequest)
.boolean
canAsk
(nz.org.riskscape.wizard.bld.IncrementalBuildState buildState, nz.org.riskscape.wizard.Question question) toChoice
(nz.org.riskscape.engine.i18n.EnumTranslator.EnumEntry<T> entry) Allows individual Askers to potentially override how enums get displayed to the userMethods inherited from class nz.org.riskscape.wizard.ask.BaseAsker
askUnbound, getChoices, getLocale, getMessage, getMessageSource, getOptionalMessage
-
Constructor Details
-
EnumAsker
public EnumAsker(nz.org.riskscape.engine.i18n.TranslationContext messageSource)
-
-
Method Details
-
canAsk
public boolean canAsk(nz.org.riskscape.wizard.bld.IncrementalBuildState buildState, nz.org.riskscape.wizard.Question question) Description copied from interface:Asker
Determine whether this
Asker
is relevant for the givenQuestion
andIncrementalBuildState
- Returns:
- true if this
Asker
can and should drive the cli to answer the givenQuestion
.
-
toChoice
protected <T extends Enum<?>> Choice<T> toChoice(nz.org.riskscape.engine.i18n.EnumTranslator.EnumEntry<T> entry) Description copied from class:BaseAsker
Allows individual Askers to potentially override how enums get displayed to the user
-
ask
public nz.org.riskscape.problem.ResultOrProblems<nz.org.riskscape.wizard.Answer.Response> ask(AskRequest input) Description copied from class:BaseAsker
Get a bound value from the user - note that the response's original input is returned from
BaseAsker.askUnbound(AskRequest)
. This is partly here because the original API exposed this method on the interface, and keeping this method here keeps the refactoring/change noise down to a minimum while allowing the interface to change in the way we want to preserve the right amount of encapsulation
-