StockClient.java
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:7k
- 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 Systemn");
- 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 = "nIdtAvailtOrderedtDescription";
- 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;
- }
- }