View Javadoc

1   package com.sri.emo.wizard.wizardgateway;
2   
3   import com.jcorporate.expresso.core.controller.Controller;
4   import com.jcorporate.expresso.core.controller.ControllerException;
5   import com.jcorporate.expresso.core.controller.ExpressoRequest;
6   import com.jcorporate.expresso.core.controller.ExpressoResponse;
7   import com.jcorporate.expresso.core.db.DBException;
8   import com.sri.common.controller.StateHandler;
9   import com.sri.emo.wizard.IWizardManager;
10  import org.apache.log4j.Logger;
11  
12  /***
13   * Handles the redirection of the Add wizard user to the appropriate wizard
14   * manager.
15   *
16   * @author Michael Rimov
17   * @version 1.0
18   */
19  public class DoAddWizard extends AddWizardHandler implements StateHandler {
20      /***
21       * Name of the State for which this handler deals with.
22       */
23      public static final String STATE_NAME = "doAddWizard";
24  
25  
26      /***
27       * Friendly description of this handler.
28       */
29      public static final String STATE_DESCRIPTION = "Add a wizard.";
30  
31      /***
32       * The log4j Logger
33       */
34      private static final Logger log = Logger.getLogger(DoAddWizard.class);
35  
36      /***
37       * Constructs this particular state handler.
38       */
39      public DoAddWizard(final Controller owner) {
40          super(owner);
41  
42      }
43  
44      /***
45       * Called to handle the request.
46       *
47       * @param request  ControllerRequest The Function's ControllerRequest
48       *                 object.
49       * @param response ControllerResponse The Function's ControllerResponse
50       *                 object.
51       * @throws DBException         upon underlying database exception error.
52       * @throws ControllerException upon underlying ControllerException error.
53       */
54      public void handleRequest(final ExpressoRequest request, final ExpressoResponse response) throws DBException,
55              ControllerException {
56  
57          final String key = request.getParameter(AddWizardHandler.PARAM_WIZARD_TYPE);
58          if (key == null || key.length() == 0) {
59              response.addError("You need to specify a wizard to select");
60          }
61  
62  
63          IWizardManager toTransitionTo = null;
64          try {
65              toTransitionTo = (IWizardManager) this.getControllerForKey(key);
66          } catch (ControllerException ex) {
67              log.error("Error resolving input to controller", ex);
68              response.addError("There was an error resolving your input. Error: " + ex.getMessage());
69          } catch (IllegalArgumentException ex) {
70              log.error("Error resolving input to controller", ex);
71              response.addError("There was an error resolving your input. Error: " + ex.getMessage());
72          } catch (ClassCastException ex) {
73              throw new ControllerException(
74                      this.getControllerForKey(key).getClass().getName() + " must implement class IWizardManager", ex);
75          }
76  
77          toTransitionTo.add(request, response);
78      }
79  }