StockClient.java
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:7k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. package example.corba;
  2. import java.io.*;
  3. import java.sql.*;
  4. import org.omg.CosNaming.*;
  5. /**
  6.  * This class is the frontend to our mini CORBA application.
  7.  *
  8.  * It has no GUI, just a text frontend to keep it simple.
  9.  *
  10.  * $Id: StockClient.java,v 1.1 1999/01/25 21:22:03 scrappy Exp $
  11.  */
  12. public class StockClient
  13. {
  14.     org.omg.CosNaming.NamingContext nameService;
  15.     
  16.     stock.StockDispenser dispenser;
  17.     stock.StockItem  item;
  18.     
  19.     BufferedReader  in;
  20.     
  21.     public StockClient(String[] args) {
  22. try {
  23.     // We need this for our IO
  24.     in = new BufferedReader(new InputStreamReader(System.in));
  25.     
  26.     // Initialize the orb
  27.     org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args,null);
  28.     
  29.     // Get a reference to the Naming Service
  30.     org.omg.CORBA.Object nameServiceObj = orb.resolve_initial_references("NameService");
  31.     if(nameServiceObj==null) {
  32. System.err.println("nameServiceObj == null");
  33. return;
  34.     }
  35.     
  36.     nameService = org.omg.CosNaming.NamingContextHelper.narrow(nameServiceObj);
  37.     if(nameService==null) {
  38. System.err.println("nameService == null");
  39. return;
  40.     }
  41.     
  42.     // Resolve the dispenser
  43.     NameComponent[] dispName = {
  44. new NameComponent("StockDispenser","Stock")
  45.     };
  46.     dispenser = stock.StockDispenserHelper.narrow(nameService.resolve(dispName));
  47.     if(dispenser==null) {
  48. System.err.println("dispenser == null");
  49. return;
  50.     }
  51.     
  52.     // Now run the front end.
  53.     run();
  54. } catch(Exception e) {
  55.     System.out.println(e.toString());
  56.     e.printStackTrace();
  57.     System.exit(1);
  58. }
  59.     }
  60.     
  61.     public static void main(String[] args) {
  62. new StockClient(args);
  63.     }
  64.     
  65.     public void run() {
  66. // First reserve a StockItem
  67. try {
  68.     item = dispenser.reserveItem();
  69. } catch(Exception e) {
  70.     System.out.println(e.toString());
  71.     e.printStackTrace();
  72.     System.exit(1);
  73. }
  74. mainMenu();
  75. // finally free the StockItem
  76. try {
  77.     dispenser.releaseItem(item);
  78. } catch(Exception e) {
  79.     System.out.println(e.toString());
  80.     e.printStackTrace();
  81.     System.exit(1);
  82. }
  83.     }
  84.     
  85.     private void mainMenu() {
  86. boolean run=true;
  87. while(run) {
  88.     System.out.println("nCORBA Stock Systemn");
  89.     System.out.println("  1 Display stock item");
  90.     System.out.println("  2 Remove item from stock");
  91.     System.out.println("  3 Put item into stock");
  92.     System.out.println("  4 Order item");
  93.     System.out.println("  5 Display all items");
  94.     System.out.println("  0 Exit");
  95.     int i = getMenu("Main",5);
  96.     switch(i)
  97. {
  98. case 0:
  99.     run=false;
  100.     break;
  101.     
  102. case 1:
  103.     displayItem();
  104.     break;
  105.     
  106. case 2:
  107.     bookOut();
  108.     break;
  109.     
  110. case 3:
  111.     bookIn();
  112.     break;
  113.     
  114. case 4:
  115.     order(0);
  116.     break;
  117.     
  118. case 5:
  119.     displayAll();
  120.     break;
  121. }
  122. }
  123.     }
  124.     
  125.     private void displayItem() {
  126. try {
  127.     int id = getMenu("nStockID to display",item.getLastID());
  128.     if(id>0) {
  129. item.fetchItem(id);
  130. System.out.println("========================================");
  131. String status = "";
  132. if(!item.isItemValid())
  133.     status=" ** Superceded **";
  134. int av = item.getAvailable();
  135. System.out.println("      Stock ID: "+id+status+
  136.    "nItems Available: "+av+
  137.    "nItems on order: "+item.getOrdered()+
  138.    "n   Description: "+item.getDescription());
  139. System.out.println("========================================");
  140. if(av>0)
  141.     if(yn("Take this item out of stock?")) {
  142. int rem=1;
  143. if(av>1)
  144.     rem=getMenu("How many?",av);
  145. if(rem>0)
  146.     item.removeStock(rem);
  147.     }
  148.     }
  149. } catch(Exception e) {
  150.     System.out.println(e.toString());
  151.     e.printStackTrace();
  152. }
  153.     }
  154.     
  155.     private void bookOut() {
  156. try {
  157.     int id = getMenu("nStockID to take out",item.getLastID());
  158.     if(id>0) {
  159. item.fetchItem(id);
  160. int av = item.getAvailable();
  161. if(av>0)
  162.     if(yn("Take this item out of stock?")) {
  163. int rem=1;
  164. if(av>1)
  165.     rem=getMenu("How many?",av);
  166. if(rem>0)
  167.     item.removeStock(rem);
  168.     }
  169.     else {
  170. System.out.println("This item is not in stock.");
  171. int order = item.getOrdered();
  172. if(order>0)
  173.     System.out.println("There are "+item.getOrdered()+" items on order.");
  174. else {
  175.     if(item.isItemValid()) {
  176. System.out.println("You will need to order some more "+item.getDescription());
  177. order(id);
  178.     } else
  179. System.out.println("This item is now obsolete");
  180. }
  181.     }
  182.     } else
  183. System.out.println(item.getDescription()+"nThis item is out of stock");
  184. } catch(Exception e) {
  185.     System.out.println(e.toString());
  186.     e.printStackTrace();
  187. }
  188.     }
  189.     
  190.     // book an item into stock
  191.     private void bookIn() {
  192. try {
  193.     int id = getMenu("nStockID to book in",item.getLastID());
  194.     item.fetchItem(id);
  195.     System.out.println(item.getDescription());
  196.     
  197.     if(item.getOrdered()>0) {
  198. int am = getMenu("How many do you want to book in",item.getOrdered());
  199. if(am>0)
  200.     item.addNewStock(am);
  201.     } else
  202. System.out.println("You don't have any of this item on ordered");
  203.     
  204. } catch(Exception e) {
  205.     System.out.println(e.toString());
  206.     e.printStackTrace();
  207. }
  208.     }
  209.     
  210.     // Order an item
  211.     private void order(int id) {
  212. try {
  213.     if(id==0)
  214. id = getMenu("nStockID to order",item.getLastID());
  215.     item.fetchItem(id);
  216.     System.out.println(item.getDescription());
  217.     int am = getMenu("How many do you want to order",999);
  218.     if(am>0)
  219. item.orderStock(am);
  220. } catch(Exception e) {
  221.     System.out.println(e.toString());
  222.     e.printStackTrace();
  223. }
  224.     }
  225.     
  226.     private void displayAll() {
  227. try {
  228.     boolean cont=true;
  229.     int nr=item.getLastID();
  230.     String header = "nIdtAvailtOrderedtDescription";
  231.     System.out.println(header);
  232.     for(int i=1;i<=nr && cont;i++) {
  233. item.fetchItem(i);
  234. System.out.println(""+i+"t"+item.getAvailable()+"t"+item.getOrdered()+"t"+item.getDescription());
  235. if((i%20)==0) {
  236.     if((cont=yn("Continue?")))
  237. System.out.println(header);
  238. }
  239.     }
  240. } catch(Exception e) {
  241.     System.out.println(e.toString());
  242.     e.printStackTrace();
  243. }
  244.     }
  245.     
  246.     private int getMenu(String title,int max) {
  247. int v=-1;
  248. while(v<0 || v>max) {
  249.     System.out.print(title);
  250.     System.out.print(" [0-"+max+"]: ");
  251.     System.out.flush();
  252.     try {
  253. v = Integer.parseInt(in.readLine());
  254.     } catch(Exception nfe) {
  255. v=-1;
  256.     }
  257. }
  258. return v;
  259.     }
  260.     
  261.     private boolean yn(String title) {
  262. try {
  263.     while(true) {
  264. System.out.print(title);
  265. System.out.flush();
  266. String s = in.readLine();
  267. if(s.startsWith("y") || s.startsWith("Y"))
  268.     return true;
  269. if(s.startsWith("n") || s.startsWith("N"))
  270.     return false;
  271.     }
  272. } catch(Exception nfe) {
  273.     System.out.println(nfe.toString());
  274.     nfe.printStackTrace();
  275.     System.exit(1);
  276. }
  277. return false;
  278.     }
  279. }