View Javadoc

1   package com.sri.emo.wizard.selection;
2   
3   import com.jcorporate.expresso.core.db.DBException;
4   import com.sri.emo.dbobj.Node;
5   import com.sri.emo.wizard.PageMetadata;
6   import com.sri.emo.wizard.WizardException;
7   import com.sri.emo.wizard.defaults.EmoWizardPage;
8   
9   import java.io.Serializable;
10  
11  /***
12   * Handles the execution of the decision matrix to find a wizard node and
13   * then provides a prompt to name the given wizard.
14   *
15   * @author Michael Rimov
16   * @version 1.0
17   */
18  public class NameNodePage extends EmoWizardPage {
19  
20      /***
21  	 * 
22  	 */
23  	private static final long serialVersionUID = 1L;
24  
25  
26  	/***
27       * Name the node page id.
28       */
29      public static final String PAGE_ID = "-1";
30  
31  
32      private String nodeId;
33  
34      public NameNodePage(final Integer newId, final PageMetadata pageMetadata) {
35          super(newId, pageMetadata, null);
36          assert newId != null;
37  
38      }
39  
40  
41      public Node getSelectedNode() throws WizardException {
42          try {
43              Node n = new Node();
44              n.setNodeId(nodeId);
45              n.retrieve();
46              return n;
47          } catch (DBException ex) {
48              throw new WizardException("Error querying node id defined in previous set.", ex);
49          }
50      }
51  
52  
53      public void setSelectedNodeId(String nodeId) {
54          this.nodeId = nodeId;
55      }
56  
57  
58      /***
59       * Sets the data associated with the page.
60       *
61       * @param newData the new data for the page.
62       * @throws WizardException upon error.
63       */
64      public void setData(final Serializable newData) throws WizardException {
65          if (newData == null) {
66              this.addError("You must enter a name for this page.");
67          }
68  
69          String dataAsString = (String) newData;
70          if (dataAsString.length() == 0) {
71              this.addError("You must enter a name for this page.");
72          }
73  
74  
75          try {
76              Node n = new Node();
77              n.setNodeTitle(dataAsString);
78              if (n.find()) {
79                  this.addError("The name \"" + dataAsString + "\" already exists.  Please choose another name");
80              }
81          } catch (DBException ex) {
82              throw new WizardException("Error querying node to check title.", ex);
83          }
84  
85          super.setData(newData);
86      }
87  
88  }