1 package com.sri.emo.wizard.creation;
2
3 import com.jcorporate.expresso.core.controller.Transition;
4 import com.jcorporate.expresso.core.db.DBException;
5 import com.sri.emo.controller.CreationWizardAction;
6 import com.sri.emo.wizard.WizardException;
7 import com.sri.emo.wizard.creation.persistence.CreationDefinition;
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 CreationWizardSelector {
19 public CreationWizardSelector() {
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 CreationDefinition definition = new CreationDefinition();
37 /***
38 * @todo rich: definingNodeId is now a String which contains all of the node ids,
39 * so make sure that this doesn't create a conflict during the
40 * finish stage of the completion wizard (which is when this method gets called)
41 */
42 definition.setField(CreationDefinition.FLD_TARGET_NODE, definingNodeId);
43 if (definition.find()) {
44 Transition wizardGateway = new Transition();
45 wizardGateway.setControllerObject(WizardGatewayController.class);
46 wizardGateway.setState(RunWizard.STATE_NAME);
47 wizardGateway.setLabel("Run Wizard");
48 wizardGateway.addParam(WizardController.WIZ_PARAMETER_ID,
49 definition.getField(CreationDefinition.FLD_ID));
50 if (optionalNodeToModifyId != null) {
51 wizardGateway.addParam(CreationWizardAction.PARAM_TARGET_ID, optionalNodeToModifyId);
52 }
53
54 return wizardGateway;
55 } else {
56 return null;
57 }
58 } catch (DBException ex) {
59 throw new WizardException("Error searching for matching completion wizard", ex);
60 }
61 }
62
63 }