Manage() provides data management functionality for your application and/or process.
Below is the code for Manage():
//
// Manage()
//
// Populates table and perform a simple query
//
static void Manage() throws IOException {
int quantity;
BigDecimal price, total;
String itemnumb, custnumb, ordrnumb, custname;
boolean isOrderFound, isItemFound;
System.out.println("MANAGE");
// populate the tables with data
Add_CustomerMaster_Records();
Add_CustomerOrders_Records();
Add_OrderItems_Records();
Add_ItemMaster_Records();
// perform a query:
// list customer name and total amount per order
// name total
// @@@@@@@@@@@@@ $xx.xx
// for each order in the CustomerOrders table
// fetch order number
// fetch customer number
// fetch name from CustomerMaster table based on customer number
// for each order item in OrderItems table
// fetch item quantity
// fetch item number
// fetch item price from ItemMaster table based on item number
// next
// next
System.out.println("\n\tQuery Results");
try {
// get the first order
isOrderFound = recordCustOrdr.First();
while (isOrderFound) // for each order in the CustomerOrders table
{
// fetch order number
ordrnumb = recordCustOrdr.GetFieldAsString(2);
// fetch customer number
custnumb = recordCustOrdr.GetFieldAsString(3);
// fetch name from CustomerMaster table based on customer number
recordCustMast.Clear();
recordCustMast.SetFieldAsString(0, custnumb);
if (!recordCustMast.Find(FIND_MODE.EQUAL)) {
continue; // not possible in our canned example
}
custname = recordCustMast.GetFieldAsString(4);
// fetch item price from OrderItems table
recordOrdrItem.Clear();
recordOrdrItem.SetFieldAsString(2, ordrnumb);
// define a recordset to scan only items applicable to this order
recordOrdrItem.RecordSetOn(6);
isItemFound = recordOrdrItem.First();
total = BigDecimal.ZERO;
while (isItemFound) // for each order item in OrderItems table
{
// fetch item quantity
quantity = recordOrdrItem.GetFieldAsInt(1);
// fetch item number
itemnumb = recordOrdrItem.GetFieldAsString(3);
// fetch item price from ItemMaster table based on item number
recordItemMast.Clear();
recordItemMast.SetFieldAsString(2, itemnumb);
recordItemMast.Find(FIND_MODE.EQUAL);
price = recordItemMast.GetFieldAsBigDecimal(1);
// calculate order total
total = total.add(price.multiply(new BigDecimal(quantity)));
isItemFound = recordOrdrItem.Next();
}
recordOrdrItem.RecordSetOff();
// output data to stdout
System.out.println("\t" + custname + "\t" + total);
// read next order
if (!recordCustOrdr.Next()) {
isOrderFound = false;
}
}
} catch (CTException E) {
Handle_Exception(E);
}
}
//
// Add_CustomerMaster_Records()
//
// This function adds records to table CustomerMaster from an
// array of Strings
//
public static class CUSTOMER_DATA {
// struct members
public String number, zipcode, state, rating, name, address, city;
// struct constructor
public CUSTOMER_DATA(String number, String zipcode, String state, String rating, String name, String address, String city) {
this.number = number;
this.zipcode = zipcode;
this.state = state;
this.rating = rating;
this.name = name;
this.address = address;
this.city = city;
}
};
static void Add_CustomerMaster_Records() throws IOException {
CUSTOMER_DATA[] data = new CUSTOMER_DATA[4];
data[0] = new CUSTOMER_DATA("1000", "92867", "CA", "1", "Bryan Williams", "2999 Regency", "Orange");
data[1] = new CUSTOMER_DATA("1001", "61434", "CT", "1", "Michael Jordan", "13 Main", "Harford");
data[2] = new CUSTOMER_DATA("1002", "73677", "GA", "1", "Joshua Brown", "4356 Cambridge", "Atlanta");
data[3] = new CUSTOMER_DATA("1003", "10034", "MO", "1", "Keyon Dooling", "19771 Park Avenue", "Columbia");
int nRecords = data.length;
Delete_Records(recordCustMast);
System.out.println("\tAdd records in table CustomerMaster...");
try {
for (int i = 0; i
< nRecords; i++) {
recordCustMast.Clear();
// populate record buffer with data
recordCustMast.SetFieldAsString(0, data[i].number);
recordCustMast.SetFieldAsString(1, data[i].zipcode);
recordCustMast.SetFieldAsString(2, data[i].state);
recordCustMast.SetFieldAsString(3, data[i].rating);
recordCustMast.SetFieldAsString(4, data[i].name);
recordCustMast.SetFieldAsString(5, data[i].address);
recordCustMast.SetFieldAsString(6, data[i].city);
// add record
recordCustMast.Write();
}
} catch (CTException E) {
Handle_Exception(E);
}
}
//
// Add_CustomerOrders_Records()
//
// This function adds records to table CustomerOrders from an
// array of Strings
//
public static class ORDER_DATA {
// struct members
public Calendar orderdate, promisedate;
public String ordernum, customernum;
// struct constructor
public ORDER_DATA(Calendar orderdate, Calendar promisedate, String ordernum, String customernum) {
this.orderdate = orderdate;
this.promisedate = promisedate;
this.ordernum = ordernum;
this.customernum = customernum;
}
};
static void Add_CustomerOrders_Records() throws IOException {
ORDER_DATA[] data = new ORDER_DATA[2];
Calendar orddate0 = Calendar.getInstance();
Calendar promdate0 = Calendar.getInstance();
//Java.util.Calendar.MONTH is Zero Based. ie: January = 0
orddate0.set(2002, 9-1, 01);
//Java.util.Calendar.MONTH is Zero Based. ie: January = 0
promdate0.set(2002, 9-1, 05);
data[0] = new ORDER_DATA(orddate0, promdate0, "1", "1001");
Calendar orddate1 = Calendar.getInstance();
Calendar promdate1 = Calendar.getInstance();
//Java.util.Calendar.MONTH is Zero Based. ie: January = 0
orddate1.set(2002, 9-1, 02);
//Java.util.Calendar.MONTH is Zero Based. ie: January = 0
promdate1.set(2002, 9-1, 06);
data[1] = new ORDER_DATA(orddate1, promdate1, "2", "1002");
int nRecords = data.length;
Delete_Records(recordCustOrdr);
System.out.println("\tAdd records in table CustomerOrders...");
try {
for (int i = 0; i
< nRecords; i++) {
recordCustOrdr.Clear();
// populate record buffer with data
recordCustOrdr.SetFieldAsCalendar(0, data[i].orderdate);
recordCustOrdr.SetFieldAsCalendar(1, data[i].promisedate);
recordCustOrdr.SetFieldAsString(2, data[i].ordernum);
recordCustOrdr.SetFieldAsString(3, data[i].customernum);
// add record
recordCustOrdr.Write();
}
} catch (CTException E) {
Handle_Exception(E);
}
}
//
// Add_OrderItems_Records()
//
// This function adds records to table OrderItems from an
// array of Strings
//
public static class ORDERITEM_DATA {
// struct members
public int sequencenum, quantity;
public String ordernum, itemnum;
// struct constructor
public ORDERITEM_DATA(
int sequencenum, int quantity, String ordernum, String itemnum) {
this.sequencenum = sequencenum;
this.quantity = quantity;
this.ordernum = ordernum;
this.itemnum = itemnum;
}
};
static void Add_OrderItems_Records() throws IOException {
ORDERITEM_DATA[] data = new ORDERITEM_DATA[4];
data[0] = new ORDERITEM_DATA(1, 2, "1", "1");
data[1] = new ORDERITEM_DATA(2, 1, "1", "2");
data[2] = new ORDERITEM_DATA(3, 1, "1", "3");
data[3] = new ORDERITEM_DATA(1, 3, "2", "3");
int nRecords = data.length;
Delete_Records(
recordOrdrItem);
System.out.println("\tAdd records in table OrderItems...");
try {
for (int i = 0; i
< nRecords; i++) {
recordOrdrItem.Clear();
// populate record buffer with data
recordOrdrItem.SetFieldAsInt(0, data[i].sequencenum);
recordOrdrItem.SetFieldAsInt(1, data[i].quantity);
recordOrdrItem.SetFieldAsString(2, data[i].ordernum);
recordOrdrItem.SetFieldAsString(3, data[i].itemnum);
// add record
recordOrdrItem.Write();
}
} catch (CTException E) {
Handle_Exception(E);
}
}
//
// Add_ItemMaster_Records()
//
// This function adds records to table ItemMaster from an
// array of Strings
//
public static class ITEM_DATA {
// struct members
public int weight;
public BigDecimal price;
public String itemnum, description;
// struct constructor
public ITEM_DATA(int weight, BigDecimal price, String itemnum, String description) {
this.weight = weight;
this.price = price;
this.itemnum = itemnum;
this.description = description;
}
}
static void Add_ItemMaster_Records() throws IOException {
ITEM_DATA[] data = new ITEM_DATA[4];
data[0] = new ITEM_DATA(10, new BigDecimal("19.95"), "1", "Hammer");
data[1] = new ITEM_DATA(3, new BigDecimal("9.99"), "2", "Wrench");
data[2] = new ITEM_DATA(4, new BigDecimal("16.59"), "3", "Saw");
data[3] = new ITEM_DATA(1, new BigDecimal("3.98"), "4", "Pliers");
int nRecords = data.length;
Delete_Records(
recordItemMast);
System.out.println("\tAdd records in table ItemMaster...");
try {
for (int i = 0; i
< nRecords; i++) {
recordItemMast.Clear();
// populate record buffer with data
recordItemMast.SetFieldAsInt(0, data[i].weight);
recordItemMast.SetFieldAsBigDecimal(1, data[i].price);
recordItemMast.SetFieldAsString(2, data[i].itemnum);
recordItemMast.SetFieldAsString(3, data[i].description);
// add record
recordItemMast.Write();
}
} catch (CTException E) {
Handle_Exception(E);
}
}
//
// Delete_Records()
//
// This function deletes all the records in the table
//
static void Delete_Records(CTRecord record) throws IOException {
boolean found;
System.out.println("\tDelete records...");
try {
// read first record
found = record.First();
while (found) // while records are found
{
// delete record
record.Delete();
// read next record
found = record.Next();
}
} catch (CTException E) {
Handle_Exception(E);
}
}