stockclient.java

来自「PostgreSQL7.4.6 for Linux」· Java 代码 · 共 349 行

JAVA
349
字号
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.6 2002/09/06 21:23:05 momjian 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;	}}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?