DropdownController.jpf Sample

This topic inludes the source code for the DropdownController.jpf Sample.

Sample Location

This sample is located in the following directory in your WebLogic Workshop installation:

BEA_HOME/weblogic81/samples/workshop/SamplesApp/WebApp/handlingData/dropdown/

Sample Source Code


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 setItemnumberint newOne )
212         {
213             this.itemnumber = newOne;
214         }
215 
216         public String getItemname()
217         {
218             return itemname;
219         }
220 
221         public void setItemnameString newOne )
222         {
223             this.itemname = newOne;
224             registerChange "itemname" );
225         }
226 
227         public int getQuantityavailable()
228         {
229             return quantityavailable;
230         }
231 
232         public void setQuantityavailableint newOne )
233         {
234             this.quantityavailable = newOne;
235             registerChange "quantityavailable" );
236         }
237 
238         public Double getPrice()
239         {
240             return price;
241         }
242 
243         public void setPriceDouble 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 }