001: // license-header java merge-point
002: package org.andromda.samples.animalquiz.guess;
003:
004: import org.andromda.samples.animalquiz.decisiontree.VODecisionItem;
005: import org.apache.struts.action.ActionMapping;
006:
007: import javax.servlet.http.HttpServletRequest;
008: import javax.servlet.http.HttpServletResponse;
009:
010: /**
011: * @see org.andromda.samples.animalquiz.guess.GuessController
012: */
013: public class GuessControllerImpl extends GuessController {
014: /**
015: * @see org.andromda.samples.animalquiz.guess.GuessController#getFirstQuestion(org.apache.struts.action.ActionMapping, org.andromda.samples.animalquiz.guess.GetFirstQuestionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
016: */
017: public final void getFirstQuestion(
018: ActionMapping mapping,
019: org.andromda.samples.animalquiz.guess.GetFirstQuestionForm form,
020: HttpServletRequest request, HttpServletResponse response)
021: throws Exception {
022: try {
023: final VODecisionItem item = this .getDecisionService()
024: .getFirstQuestion();
025: form.setQuestion(item.getPrompt());
026:
027: // Keep the decision item in the session so that
028: // the next step can process it.
029: this .getGuessSessionState(request)
030: .setLastDecisionItem(item);
031: } catch (Exception ex) {
032: ex.printStackTrace();
033: throw new RuntimeException(ex);
034: }
035: }
036:
037: /**
038: * @see org.andromda.samples.animalquiz.guess.GuessController#nextDecisionItemAvailable(org.apache.struts.action.ActionMapping, org.andromda.samples.animalquiz.guess.NextDecisionItemAvailableForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
039: */
040: public final java.lang.String nextDecisionItemAvailable(
041: ActionMapping mapping,
042: org.andromda.samples.animalquiz.guess.NextDecisionItemAvailableForm form,
043: HttpServletRequest request, HttpServletResponse response)
044: throws Exception {
045: final GuessSessionState sessionState = this
046: .getGuessSessionState(request);
047: VODecisionItem item = sessionState.getLastDecisionItem();
048:
049: final Long idNextItem = "yes".equals(sessionState
050: .getLastAnswerFromUser()) ? item.getIdYesItem() : item
051: .getIdNoItem();
052:
053: if (idNextItem != null) {
054: item = this .getDecisionService()
055: .getNextQuestion(idNextItem);
056:
057: form.setQuestion(item.getPrompt());
058:
059: // Keep the decision item in the session so that
060: // the next step can process it.
061: sessionState.setLastDecisionItem(item);
062: return "yes";
063: }
064: return "no";
065: }
066:
067: /**
068: * @see org.andromda.samples.animalquiz.guess.GuessController#rememberAnimal(org.apache.struts.action.ActionMapping, org.andromda.samples.animalquiz.guess.RememberAnimalForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
069: */
070: public final void rememberAnimal(
071: ActionMapping mapping,
072: org.andromda.samples.animalquiz.guess.RememberAnimalForm form,
073: HttpServletRequest request, HttpServletResponse response)
074: throws Exception {
075: this .getGuessSessionState(request).setLastAnimalName(
076: form.getAnimal());
077: }
078:
079: /**
080: * @see org.andromda.samples.animalquiz.guess.GuessController#rememberQuestion(org.apache.struts.action.ActionMapping, org.andromda.samples.animalquiz.guess.RememberQuestionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
081: */
082: public final void rememberQuestion(
083: ActionMapping mapping,
084: org.andromda.samples.animalquiz.guess.RememberQuestionForm form,
085: HttpServletRequest request, HttpServletResponse response)
086: throws Exception {
087: final GuessSessionState sessionState = this
088: .getGuessSessionState(request);
089: this .getDecisionService().addNewAnimalWithQuestion(
090: sessionState.getLastAnimalName(), form.getQuestion(),
091: sessionState.getLastDecisionItem().getId());
092: }
093:
094: /**
095: * @see org.andromda.samples.animalquiz.guess.GuessController#lastAnswerWasYes(org.apache.struts.action.ActionMapping, org.andromda.samples.animalquiz.guess.LastAnswerWasYesForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
096: */
097: public final boolean lastAnswerWasYes(
098: ActionMapping mapping,
099: org.andromda.samples.animalquiz.guess.LastAnswerWasYesForm form,
100: HttpServletRequest request, HttpServletResponse response)
101: throws Exception {
102: return "yes".equals(this .getGuessSessionState(request)
103: .getLastAnswerFromUser());
104: }
105:
106: /**
107: * @see org.andromda.samples.animalquiz.guess.GuessController#rememberPositiveAnswer(org.apache.struts.action.ActionMapping, org.andromda.samples.animalquiz.guess.RememberPositiveAnswerForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
108: */
109: public final void rememberPositiveAnswer(
110: ActionMapping mapping,
111: org.andromda.samples.animalquiz.guess.RememberPositiveAnswerForm form,
112: HttpServletRequest request, HttpServletResponse response)
113: throws Exception {
114: this .getGuessSessionState(request).setLastAnswerFromUser("yes");
115: }
116:
117: /**
118: * @see org.andromda.samples.animalquiz.guess.GuessController#rememberNegativeAnswer(org.apache.struts.action.ActionMapping, org.andromda.samples.animalquiz.guess.RememberNegativeAnswerForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
119: */
120: public final void rememberNegativeAnswer(
121: ActionMapping mapping,
122: org.andromda.samples.animalquiz.guess.RememberNegativeAnswerForm form,
123: HttpServletRequest request, HttpServletResponse response)
124: throws Exception {
125: this .getGuessSessionState(request).setLastAnswerFromUser("no");
126: }
127:
128: /**
129: * @see org.andromda.samples.animalquiz.guess.GuessController#initializeSession(org.apache.struts.action.ActionMapping, org.andromda.samples.animalquiz.guess.InitializeSessionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
130: */
131: public final void initializeSession(
132: ActionMapping mapping,
133: org.andromda.samples.animalquiz.guess.InitializeSessionForm form,
134: HttpServletRequest request, HttpServletResponse response)
135: throws Exception {
136: setGuessSessionState(request, new GuessSessionState());
137: }
138: }
|