001 package handlingData.dropdown;
002
003 import java.util.Map;
004 import java.util.LinkedHashMap;
005 import com.bea.wlw.netui.pageflow.*;
006 import handlingData.dropdown.ItemsDBControl;
007 import handlingData.dropdown.ItemsDBControl.ItemSelectNode;
008 import java.sql.SQLException;
009 import com.bea.wlw.netui.databinding.form.RowSetForm;
010 import com.bea.wlw.netui.pageflow.Forward;
011 import com.bea.wlw.netui.pageflow.FormData;
012
013
014 /**
015 * @jpf:catch type="java.sql.SQLException" method="sqlExceptionHandler"
016 * @jpf:view-properties view-properties::
017 * <!-- This data is auto-generated. Hand-editing this section is not recommended. -->
018 * <view-properties>
019 * <pageflow-object id="pageflow:/handlingData/dropdown/dropdownController.jpf"/>
020 * <pageflow-object id="action:begin.do">
021 * <property value="100" name="x"/>
022 * <property value="60" name="y"/>
023 * </pageflow-object>
024 * <pageflow-object id="action:showSelection.do#handlingData.dropdown.dropdownController.SelectItemForm">
025 * <property value="280" name="x"/>
026 * <property value="200" name="y"/>
027 * </pageflow-object>
028 * <pageflow-object id="action:backToSelectPage.do#handlingData.dropdown.dropdownController.DatabaseForm">
029 * <property value="100" name="x"/>
030 * <property value="360" name="y"/>
031 * </pageflow-object>
032 * <pageflow-object id="action-call:@page:select.jsp@#@action:showSelection.do#handlingData.dropdown.dropdownController.SelectItemForm@">
033 * <property value="136,190,190,244" name="elbowsX"/>
034 * <property value="192,192,192,192" name="elbowsY"/>
035 * <property value="East_1" name="fromPort"/>
036 * <property value="West_1" name="toPort"/>
037 * </pageflow-object>
038 * <pageflow-object id="page:select.jsp">
039 * <property value="100" name="x"/>
040 * <property value="200" name="y"/>
041 * </pageflow-object>
042 * <pageflow-object id="action-call:@page:showSelection.jsp@#@action:backToSelectPage.do#handlingData.dropdown.dropdownController.DatabaseForm@">
043 * <property value="244,190,190,136" name="elbowsX"/>
044 * <property value="352,352,352,352" name="elbowsY"/>
045 * <property value="West_1" name="fromPort"/>
046 * <property value="East_1" name="toPort"/>
047 * </pageflow-object>
048 * <pageflow-object id="page:showSelection.jsp">
049 * <property value="280" name="x"/>
050 * <property value="360" name="y"/>
051 * </pageflow-object>
052 * <pageflow-object id="forward:path#start#select.jsp#@action:begin.do@">
053 * <property value="104,130,130,156" name="elbowsY"/>
054 * <property value="North_1" name="toPort"/>
055 * <property value="100,100,100,100" name="elbowsX"/>
056 * <property value="start" name="label"/>
057 * <property value="South_1" name="fromPort"/>
058 * </pageflow-object>
059 * <pageflow-object id="forward:path#showSelection#showSelection.jsp#@action:showSelection.do#handlingData.dropdown.dropdownController.SelectItemForm@">
060 * <property value="280,280,280,280" name="elbowsX"/>
061 * <property value="244,280,280,316" name="elbowsY"/>
062 * <property value="South_1" name="fromPort"/>
063 * <property value="North_1" name="toPort"/>
064 * <property value="showSelection" name="label"/>
065 * </pageflow-object>
066 * <pageflow-object id="forward:path#back#select.jsp#@action:backToSelectPage.do#handlingData.dropdown.dropdownController.DatabaseForm@">
067 * <property value="100,100,100,100" name="elbowsX"/>
068 * <property value="316,280,280,244" name="elbowsY"/>
069 * <property value="North_1" name="fromPort"/>
070 * <property value="South_1" name="toPort"/>
071 * <property value="back" name="label"/>
072 * </pageflow-object>
073 * <pageflow-object id="control:handlingData.dropdown.ItemsDBControl#items">
074 * <property value="26" name="x"/>
075 * <property value="34" name="y"/>
076 * </pageflow-object>
077 * <pageflow-object id="formbeanprop:handlingData.dropdown.dropdownController.SelectItemForm#selectedOption#java.lang.String"/>
078 * <pageflow-object id="formbeanprop:handlingData.dropdown.dropdownController.SelectItemForm#itemOptions#java.util.Map"/>
079 * <pageflow-object id="formbean:handlingData.dropdown.dropdownController.SelectItemForm"/>
080 * <pageflow-object id="formbeanprop:handlingData.dropdown.dropdownController.DatabaseForm#itemnumber#int"/>
081 * <pageflow-object id="formbeanprop:handlingData.dropdown.dropdownController.DatabaseForm#itemname#java.lang.String"/>
082 * <pageflow-object id="formbeanprop:handlingData.dropdown.dropdownController.DatabaseForm#quantityavailable#int"/>
083 * <pageflow-object id="formbeanprop:handlingData.dropdown.dropdownController.DatabaseForm#price#java.lang.Double"/>
084 * <pageflow-object id="formbean:handlingData.dropdown.dropdownController.DatabaseForm"/>
085 * </view-properties>
086 * ::
087 *
088 */
089 public class dropdownController extends com.bea.wlw.netui.pageflow.PageFlowController
090 {
091 /**
092 * @common:control
093 */
094 private ItemsDBControl items;
095
096 /*
097 * A java.util.Map to hold the options
098 * to be displayed in the dropdown on select.jsp
099 */
100 private transient Map options = null;
101
102 /**
103 * @jpf:action
104 * @jpf:forward name="start" path="select.jsp"
105 */
106 public Forward begin()
107 throws Exception
108 {
109 initSelections();
110
111 SelectItemForm form = new SelectItemForm();
112 form.setItemOptions(options);
113
114 return new Forward("start", form);
115 }
116
117 /**
118 * @jpf:action
119 * @jpf:forward name="showSelection" path="showSelection.jsp"
120 */
121 public Forward showSelection(SelectItemForm form)
122 throws Exception
123 {
124 // Get the selected record from the Items database
125 javax.sql.RowSet rec = items.getItems(new Integer(form.selectedOption));
126
127 // Load the record retrieved from the Items database into dbForm
128 DatabaseForm dbForm = new DatabaseForm();
129 dbForm.applyValuesToForm(rec);
130
131 // Forward the user to showSelection.jsp
132 return new Forward("showSelection", dbForm);
133 }
134
135
136 /**
137 * This method takes a DatabaseForm parameter so that the
138 * <netui:form> element on select.jsp can be bound to the DatabaseForm class.
139 *
140 * @jpf:action
141 * @jpf:forward name="back" path="select.jsp"
142 */
143 protected Forward backToSelectPage(DatabaseForm dbForm)
144 {
145 initSelections();
146
147 SelectItemForm form = new SelectItemForm();
148 form.setItemOptions(options);
149
150 return new Forward("back", form);
151 }
152
153
154 /**
155 * Retrieve the selections from the Items database
156 * and load them into a LinkHashMap.
157 */
158 protected void initSelections()
159 {
160 if(options == null)
161 {
162 try
163 {
164 ItemSelectNode[] array = items.getItemSelectData();
165 Map map = new LinkedHashMap();
166 for(int i = 0; i < array.length; i++)
167 map.put(new Integer(array[i].itemNumber), array[i].itemName);
168
169 options = map;
170 }
171 catch(java.sql.SQLException sql)
172 {
173 sql.printStackTrace();
174 }
175 }
176 }
177
178
179 public static class SelectItemForm
180 extends FormData
181 {
182 private String selectedOption = null;
183 private Map itemOptions = null;
184
185 public String getSelectedOption() {return selectedOption;}
186 public void setSelectedOption(String selectedOption) {this.selectedOption = selectedOption;}
187
188 public Map getItemOptions() {return itemOptions;}
189 public void setItemOptions(Map itemOptions) {this.itemOptions = itemOptions;}
190 }
191
192
193 public static class DatabaseForm extends RowSetForm
194 {
195
196 public DatabaseForm()
197 {
198 super ();
199 }
200
201 private int itemnumber;
202 private String itemname;
203 private int quantityavailable;
204 private Double price;
205
206 public int getItemnumber()
207 {
208 return itemnumber;
209 }
210
211 public void setItemnumber( int newOne )
212 {
213 this.itemnumber = newOne;
214 }
215
216 public String getItemname()
217 {
218 return itemname;
219 }
220
221 public void setItemname( String newOne )
222 {
223 this.itemname = newOne;
224 registerChange ( "itemname" );
225 }
226
227 public int getQuantityavailable()
228 {
229 return quantityavailable;
230 }
231
232 public void setQuantityavailable( int newOne )
233 {
234 this.quantityavailable = newOne;
235 registerChange ( "quantityavailable" );
236 }
237
238 public Double getPrice()
239 {
240 return price;
241 }
242
243 public void setPrice( Double newOne )
244 {
245 this.price = newOne;
246 registerChange ( "price" );
247 }
248 }
249
250 /**
251 * @jpf:exception-handler
252 */
253 protected Forward sqlExceptionHandler(Exception exception, String actionName, String message, FormData form)
254 {
255 String displayMessage = null;
256 boolean trace = false;
257 trace = true;
258
259 displayMessage = com.bea.wlw.netui.util.HtmlExceptionFormatter.format("<br/><b>An exception occurred in the action \"" + actionName + "\".</b><br/>",
260 exception,
261 trace);
262
263 System.out.println("error message: " + displayMessage);
264
265 getRequest().setAttribute("errorMessage", displayMessage);
266 return new Forward("error");
267 }
268
269
270 }
|