01 package propEditor;
02
03 import com.bea.control.*;
04 import java.util.HashMap;
05 import java.util.ArrayList;
06 import java.sql.ResultSet;
07 import java.sql.SQLException;
08
09 /**
10 * The CustomerData control illustrates how to connect a custom attribute
11 * editing/validation dialog. The dialog ensures that the customer-id
12 * attribute is a six-digit number.
13 *
14 * After specifying a value for the customer-id attribute, you can use
15 * the control's method's to get information about the customer.
16 *
17 * @jcs:control-tags file="CustomerData-tags.xml"
18 * @jcs:jc-jar label="CustomerData"
19 * version="0.8"
20 * icon-16="/images/hello_16.gif"
21 * icon-32="/images/hello_32.gif"
22 * palette-priority="6"
23 * group-name="Feature Sample Controls"
24 * description="Illustrates custom property editor"
25 * @editor-info:code-gen control-interface="true"
26 */
27 public class CustomerDataImpl implements CustomerData, com.bea.control.ControlSource
28 {
29 /**
30 * @common:control
31 */
32 private propEditor.CustomerDBControl customerDB;
33
34 private String m_custIDProp;
35 private int m_custIDInt;
36
37 /**
38 * @common:context
39 */
40 com.bea.control.ControlContext context;
41
42 /*
43 * Use the onCreate callback handler to retrieve the attribute value set
44 * by the control's user. With the customer-id attribute stored internally,
45 * it can be used by other control methods. Remember that the onCreate callback
46 * is received when the control is created, before any control methods are called.
47 */
48 public void context_onCreate() {
49 m_custIDProp = context.getControlAttribute("jc:customer-db", "customer-id");
50 m_custIDInt = new Integer(m_custIDProp).intValue();
51 }
52
53 /**
54 * Returns the customer's company name using the nested Database control.
55 *
56 * @common:operation
57 */
58 public String getCustomerName()
59 {
60 String custIDProp = context.getControlAttribute("jc:customer-db", "customer-id");
61 int custIDInt = new Integer(custIDProp).intValue();
62 String customerName = customerDB.selectCustomerName(custIDInt);
63 return customerName;
64 }
65
66 /**
67 * Returns a list of items the customer has ordered. The database includes
68 * tables for customers, items, items by order, and customers by order.
69 * This is method nests queries against these tables to produce joined
70 * results.
71 *
72 * @common:operation
73 */
74 public ArrayList getItemsOrdered()
75 {
76 ArrayList itemNamesArray = new ArrayList();
77 ResultSet orderIDs = customerDB.selectOrdersByCustomer(m_custIDInt);
78 try{
79 while (orderIDs.next()){
80 int orderID = orderIDs.getInt("orderid");
81 ResultSet itemNumbers = customerDB.selectItemNumbersByOrder(orderID);
82 while (itemNumbers.next()){
83 int itemNumber = itemNumbers.getInt("itemnumber");
84 ResultSet itemNames = customerDB.selectItemNameByItemNumber(itemNumber);
85 while (itemNames.next()){
86 itemNamesArray.add(itemNames.getString("itemname"));
87 }
88 }
89 }
90 return itemNamesArray;
91 } catch(SQLException se){
92 throw new ControlException("Error while getting items ordered.", se);
93 }
94 }
95 }
|