View Javadoc

1   package com.sri.emo.wizard.completion;
2   
3   import com.jcorporate.expresso.core.controller.Transition;
4   import com.jcorporate.expresso.core.db.DBException;
5   import com.sri.emo.controller.CompletionWizardAction;
6   import com.sri.emo.wizard.WizardException;
7   import com.sri.emo.wizard.completion.persistence.CompletionDefinition;
8   import com.sri.emo.wizard.expressoimpl.WizardController;
9   import com.sri.emo.wizard.wizardgateway.RunWizard;
10  import com.sri.emo.wizard.wizardgateway.WizardGatewayController;
11  
12  /***
13   * Allows for locating completion wizards for a given node.
14   *
15   * @author Michael Rimov
16   * @version 1.0
17   */
18  public class CompletionWizardSelector {
19      public CompletionWizardSelector() {
20          super();
21      }
22  
23      /***
24       * Resolves a definingNodeId to a CompletionWizard.
25       *
26       * @param definingNodeId         String the target node id by which the completion wizard
27       *                               is found.
28       * @param optionalNodeToModifyId String the node id to operate the wizard on.  May be null.
29       * @return Transition to the appropriate wizard gateway with parameters populated
30       *         or null if no appropriate completion wizard is found.
31       * @throws WizardException
32       */
33      public Transition locateCompletionWizardForNode(final String definingNodeId,
34                                                      final String optionalNodeToModifyId) throws WizardException {
35          try {
36              CompletionDefinition definition = new CompletionDefinition();
37              definition.setField(CompletionDefinition.FLD_TARGET_NODE, definingNodeId);
38              if (definition.find()) {
39                  Transition wizardGateway = new Transition();
40                  wizardGateway.setControllerObject(WizardGatewayController.class);
41                  wizardGateway.setState(RunWizard.STATE_NAME);
42                  wizardGateway.setLabel("Run Wizard");
43                  wizardGateway.addParam(WizardController.WIZ_PARAMETER_ID,
44                          definition.getField(CompletionDefinition.FLD_ID));
45                  if (optionalNodeToModifyId != null) {
46                      wizardGateway.addParam(CompletionWizardAction.PARAM_TARGET_ID, optionalNodeToModifyId);
47                  }
48  
49                  return wizardGateway;
50              } else {
51                  return null;
52              }
53          } catch (DBException ex) {
54              throw new WizardException("Error searching for matching completion wizard", ex);
55          }
56      }
57  
58  }