diff options
Diffstat (limited to 'src/interfaces/jdbc/example/corba/StockClient.java')
-rw-r--r-- | src/interfaces/jdbc/example/corba/StockClient.java | 288 |
1 files changed, 288 insertions, 0 deletions
diff --git a/src/interfaces/jdbc/example/corba/StockClient.java b/src/interfaces/jdbc/example/corba/StockClient.java new file mode 100644 index 00000000000..7613f886fc1 --- /dev/null +++ b/src/interfaces/jdbc/example/corba/StockClient.java @@ -0,0 +1,288 @@ +package example.corba; + +import java.io.*; +import java.sql.*; +import org.omg.CosNaming.*; + +/** + * This class is the frontend to our mini CORBA application. + * + * It has no GUI, just a text frontend to keep it simple. + * + * $Id: StockClient.java,v 1.1 1999/01/25 21:22:03 scrappy Exp $ + */ +public class StockClient +{ + org.omg.CosNaming.NamingContext nameService; + + stock.StockDispenser dispenser; + stock.StockItem item; + + BufferedReader in; + + public StockClient(String[] args) { + try { + // We need this for our IO + in = new BufferedReader(new InputStreamReader(System.in)); + + // Initialize the orb + org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args,null); + + // Get a reference to the Naming Service + org.omg.CORBA.Object nameServiceObj = orb.resolve_initial_references("NameService"); + if(nameServiceObj==null) { + System.err.println("nameServiceObj == null"); + return; + } + + nameService = org.omg.CosNaming.NamingContextHelper.narrow(nameServiceObj); + if(nameService==null) { + System.err.println("nameService == null"); + return; + } + + // Resolve the dispenser + NameComponent[] dispName = { + new NameComponent("StockDispenser","Stock") + }; + dispenser = stock.StockDispenserHelper.narrow(nameService.resolve(dispName)); + if(dispenser==null) { + System.err.println("dispenser == null"); + return; + } + + // Now run the front end. + run(); + } catch(Exception e) { + System.out.println(e.toString()); + e.printStackTrace(); + System.exit(1); + } + } + + public static void main(String[] args) { + new StockClient(args); + } + + public void run() { + // First reserve a StockItem + try { + item = dispenser.reserveItem(); + } catch(Exception e) { + System.out.println(e.toString()); + e.printStackTrace(); + System.exit(1); + } + + mainMenu(); + + // finally free the StockItem + try { + dispenser.releaseItem(item); + } catch(Exception e) { + System.out.println(e.toString()); + e.printStackTrace(); + System.exit(1); + } + } + + private void mainMenu() { + boolean run=true; + while(run) { + System.out.println("\nCORBA Stock System\n"); + System.out.println(" 1 Display stock item"); + System.out.println(" 2 Remove item from stock"); + System.out.println(" 3 Put item into stock"); + System.out.println(" 4 Order item"); + System.out.println(" 5 Display all items"); + System.out.println(" 0 Exit"); + int i = getMenu("Main",5); + switch(i) + { + case 0: + run=false; + break; + + case 1: + displayItem(); + break; + + case 2: + bookOut(); + break; + + case 3: + bookIn(); + break; + + case 4: + order(0); + break; + + case 5: + displayAll(); + break; + } + } + } + + private void displayItem() { + try { + int id = getMenu("\nStockID to display",item.getLastID()); + if(id>0) { + item.fetchItem(id); + System.out.println("========================================"); + + String status = ""; + if(!item.isItemValid()) + status=" ** Superceded **"; + + int av = item.getAvailable(); + + System.out.println(" Stock ID: "+id+status+ + "\nItems Available: "+av+ + "\nItems on order: "+item.getOrdered()+ + "\n Description: "+item.getDescription()); + System.out.println("========================================"); + + if(av>0) + if(yn("Take this item out of stock?")) { + int rem=1; + if(av>1) + rem=getMenu("How many?",av); + if(rem>0) + item.removeStock(rem); + } + + } + } catch(Exception e) { + System.out.println(e.toString()); + e.printStackTrace(); + } + } + + private void bookOut() { + try { + int id = getMenu("\nStockID to take out",item.getLastID()); + if(id>0) { + item.fetchItem(id); + int av = item.getAvailable(); + if(av>0) + if(yn("Take this item out of stock?")) { + int rem=1; + if(av>1) + rem=getMenu("How many?",av); + if(rem>0) + item.removeStock(rem); + } + else { + System.out.println("This item is not in stock."); + int order = item.getOrdered(); + if(order>0) + System.out.println("There are "+item.getOrdered()+" items on order."); + else { + if(item.isItemValid()) { + System.out.println("You will need to order some more "+item.getDescription()); + order(id); + } else + System.out.println("This item is now obsolete"); + } + } + } else + System.out.println(item.getDescription()+"\nThis item is out of stock"); + } catch(Exception e) { + System.out.println(e.toString()); + e.printStackTrace(); + } + } + + // book an item into stock + private void bookIn() { + try { + int id = getMenu("\nStockID to book in",item.getLastID()); + item.fetchItem(id); + System.out.println(item.getDescription()); + + if(item.getOrdered()>0) { + int am = getMenu("How many do you want to book in",item.getOrdered()); + if(am>0) + item.addNewStock(am); + } else + System.out.println("You don't have any of this item on ordered"); + + } catch(Exception e) { + System.out.println(e.toString()); + e.printStackTrace(); + } + } + + // Order an item + private void order(int id) { + try { + if(id==0) + id = getMenu("\nStockID to order",item.getLastID()); + item.fetchItem(id); + System.out.println(item.getDescription()); + int am = getMenu("How many do you want to order",999); + if(am>0) + item.orderStock(am); + } catch(Exception e) { + System.out.println(e.toString()); + e.printStackTrace(); + } + } + + private void displayAll() { + try { + boolean cont=true; + int nr=item.getLastID(); + String header = "\nId\tAvail\tOrdered\tDescription"; + System.out.println(header); + for(int i=1;i<=nr && cont;i++) { + item.fetchItem(i); + System.out.println(""+i+"\t"+item.getAvailable()+"\t"+item.getOrdered()+"\t"+item.getDescription()); + if((i%20)==0) { + if((cont=yn("Continue?"))) + System.out.println(header); + } + } + } catch(Exception e) { + System.out.println(e.toString()); + e.printStackTrace(); + } + } + + private int getMenu(String title,int max) { + int v=-1; + while(v<0 || v>max) { + System.out.print(title); + System.out.print(" [0-"+max+"]: "); + System.out.flush(); + try { + v = Integer.parseInt(in.readLine()); + } catch(Exception nfe) { + v=-1; + } + } + return v; + } + + private boolean yn(String title) { + try { + while(true) { + System.out.print(title); + System.out.flush(); + String s = in.readLine(); + if(s.startsWith("y") || s.startsWith("Y")) + return true; + if(s.startsWith("n") || s.startsWith("N")) + return false; + } + } catch(Exception nfe) { + System.out.println(nfe.toString()); + nfe.printStackTrace(); + System.exit(1); + } + return false; + } +} |