diff options
author | PostgreSQL Daemon <webmaster@postgresql.org> | 2004-01-19 20:07:14 +0000 |
---|---|---|
committer | PostgreSQL Daemon <webmaster@postgresql.org> | 2004-01-19 20:07:14 +0000 |
commit | 2a9bf5b33d0b82e9f483f6a5ced9d71e1c009441 (patch) | |
tree | 8c0c38494985b8dbfd2311b5be51fa76a271ba17 /src/interfaces/jdbc/example/corba | |
parent | 9bd681a5220186230e0ea0f718a71af7ebe4b560 (diff) | |
download | postgresql-2a9bf5b33d0b82e9f483f6a5ced9d71e1c009441.tar.gz postgresql-2a9bf5b33d0b82e9f483f6a5ced9d71e1c009441.zip |
JDBC is now on GBorg
Diffstat (limited to 'src/interfaces/jdbc/example/corba')
-rw-r--r-- | src/interfaces/jdbc/example/corba/StockClient.java | 348 | ||||
-rw-r--r-- | src/interfaces/jdbc/example/corba/StockDB.java | 134 | ||||
-rw-r--r-- | src/interfaces/jdbc/example/corba/StockDispenserImpl.java | 92 | ||||
-rw-r--r-- | src/interfaces/jdbc/example/corba/StockItemImpl.java | 208 | ||||
-rw-r--r-- | src/interfaces/jdbc/example/corba/StockServer.java | 58 | ||||
-rw-r--r-- | src/interfaces/jdbc/example/corba/readme | 34 | ||||
-rwxr-xr-x | src/interfaces/jdbc/example/corba/stock.idl | 40 | ||||
-rw-r--r-- | src/interfaces/jdbc/example/corba/stock.sql | 27 |
8 files changed, 0 insertions, 941 deletions
diff --git a/src/interfaces/jdbc/example/corba/StockClient.java b/src/interfaces/jdbc/example/corba/StockClient.java deleted file mode 100644 index 217552f0810..00000000000 --- a/src/interfaces/jdbc/example/corba/StockClient.java +++ /dev/null @@ -1,348 +0,0 @@ -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. - * - * $PostgreSQL: pgsql/src/interfaces/jdbc/example/corba/StockClient.java,v 1.7 2003/11/29 22:41:21 pgsql 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; - } -} diff --git a/src/interfaces/jdbc/example/corba/StockDB.java b/src/interfaces/jdbc/example/corba/StockDB.java deleted file mode 100644 index 90fb8d28048..00000000000 --- a/src/interfaces/jdbc/example/corba/StockDB.java +++ /dev/null @@ -1,134 +0,0 @@ -package example.corba; - -import java.sql.*; - -/* - * This class handles the JDBC side of things. It opens a connection to - * the database, and performes queries on that database. - * - * In essence, you could use this class on it's own. The rest of the classes - * in this example handle either the CORBA mechanism, or the frontend. - * - * Note: Before you ask, why perform a query on each call, you have to remember - * that an object could be changed by another client, and we need to ensure that - * the returned data is live and accurate. - * - * $PostgreSQL: pgsql/src/interfaces/jdbc/example/corba/StockDB.java,v 1.5 2003/11/29 22:41:21 pgsql Exp $ - */ -public class StockDB -{ - Connection con; - Statement st; - - // the current stock number - int id = -1; - - public void connect(String url, String usr, String pwd) throws Exception - { - Class.forName("org.postgresql.Driver"); - System.out.println("Connecting to " + url); - con = DriverManager.getConnection(url, usr, pwd); - st = con.createStatement(); - } - - public void closeConnection() throws Exception - { - con.close(); - } - - public void fetchItem(int id) throws Exception - { - this.id = id; - } - - public int newItem() throws Exception - { - // tba - return -1; - } - - public String getDescription() throws SQLException - { - ResultSet rs = st.executeQuery("select description from stock where id=" + id); - if (rs != null) - { - rs.next(); - String s = rs.getString(1); - rs.close(); - return s; - } - throw new SQLException("No ResultSet"); - } - - public int getAvailable() throws SQLException - { - ResultSet rs = st.executeQuery("select avail from stock where id=" + id); - if (rs != null) - { - rs.next(); - int v = rs.getInt(1); - rs.close(); - return v; - } - throw new SQLException("No ResultSet"); - } - - public int getOrdered() throws SQLException - { - ResultSet rs = st.executeQuery("select ordered from stock where id=" + id); - if (rs != null) - { - rs.next(); - int v = rs.getInt(1); - rs.close(); - return v; - } - throw new SQLException("No ResultSet"); - } - - public boolean isItemValid() throws SQLException - { - ResultSet rs = st.executeQuery("select valid from stock where id=" + id); - if (rs != null) - { - rs.next(); - boolean b = rs.getBoolean(1); - rs.close(); - return b; - } - throw new SQLException("No ResultSet"); - } - - public void addNewStock(int amount) throws SQLException - { - st.executeUpdate("update stock set avail=avail+" + amount + - ", ordered=ordered-" + amount + - " where id=" + id + " and ordered>=" + amount); - } - - public void removeStock(int amount) throws SQLException - { - st.executeUpdate("update stock set avail=avail-" + amount + - " where id=" + id); - } - - public void orderStock(int amount) throws SQLException - { - st.executeUpdate("update stock set ordered=ordered+" + amount + - " where id=" + id); - } - - public int getLastID() throws SQLException - { - ResultSet rs = st.executeQuery("select max(id) from stock"); - if (rs != null) - { - rs.next(); - int v = rs.getInt(1); - rs.close(); - return v; - } - throw new SQLException("No ResultSet"); - } - -} diff --git a/src/interfaces/jdbc/example/corba/StockDispenserImpl.java b/src/interfaces/jdbc/example/corba/StockDispenserImpl.java deleted file mode 100644 index 132b58f64c0..00000000000 --- a/src/interfaces/jdbc/example/corba/StockDispenserImpl.java +++ /dev/null @@ -1,92 +0,0 @@ -package example.corba; - -import org.omg.CosNaming.*; - -/* - * This class implements the server side of the example. - * - * $PostgreSQL: pgsql/src/interfaces/jdbc/example/corba/StockDispenserImpl.java,v 1.6 2003/11/29 22:41:21 pgsql Exp $ - */ -public class StockDispenserImpl extends stock._StockDispenserImplBase -{ - private int maxObjects = 10; - private int numObjects = 0; - private StockItemStatus[] stock = new StockItemStatus[maxObjects]; - - public StockDispenserImpl(String[] args, String name, int num) - { - super(); - - try - { - // get reference to orb - org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args, null); - - // prestart num objects - if (num >= maxObjects) - num = maxObjects; - numObjects = num; - for (int i = 0;i < numObjects;i++) - { - stock[i] = new StockItemStatus(); - stock[i].ref = new StockItemImpl(args, "StockItem" + (i + 1)); - orb.connect(stock[i].ref); - } - } - catch (org.omg.CORBA.SystemException e) - { - e.printStackTrace(); - } - } - - /* - * This method, defined in stock.idl, reserves a slot in the dispenser - */ - public stock.StockItem reserveItem() throws stock.StockException - { - for (int i = 0;i < numObjects;i++) - { - if (!stock[i].inUse) - { - stock[i].inUse = true; - System.out.println("Reserving slot " + i); - return stock[i].ref; - } - } - return null; - } - - /* - * This releases a slot from the dispenser - */ - public void releaseItem(stock.StockItem item) throws stock.StockException - { - for (int i = 0;i < numObjects;i++) - { - if (stock[i].ref.getInstanceName().equals(item.getInstanceName())) - { - stock[i].inUse = false; - System.out.println("Releasing slot " + i); - return ; - } - } - System.out.println("Reserved object not a member of this dispenser"); - return ; - } - - /* - * This class defines a slot in the dispenser - */ - class StockItemStatus - { - StockItemImpl ref; - boolean inUse; - - StockItemStatus() - { - ref = null; - inUse = false; - } - } - -} diff --git a/src/interfaces/jdbc/example/corba/StockItemImpl.java b/src/interfaces/jdbc/example/corba/StockItemImpl.java deleted file mode 100644 index 4b52dc18056..00000000000 --- a/src/interfaces/jdbc/example/corba/StockItemImpl.java +++ /dev/null @@ -1,208 +0,0 @@ -package example.corba; - -import org.omg.CosNaming.*; - -/* - * This class implements the server side of the example. - * - * $PostgreSQL: pgsql/src/interfaces/jdbc/example/corba/StockItemImpl.java,v 1.4 2003/11/29 22:41:21 pgsql Exp $ - */ -public class StockItemImpl extends stock._StockItemImplBase -{ - private StockDB db; - private String instanceName; - - public StockItemImpl(String[] args, String iname) - { - super(); - try - { - db = new StockDB(); - db.connect(args[1], args[2], args[3]); - System.out.println("StockDB object " + iname + " created"); - instanceName = iname; - } - catch (Exception e) - { - e.printStackTrace(); - } - } - - /* - * This is defined in stock.idl - * - * It sets the item to view - */ - public void fetchItem(int id) throws stock.StockException - { - try - { - db.fetchItem(id); - } - catch (Exception e) - { - throw new stock.StockException(e.toString()); - } - } - - - /* - * This is defined in stock.idl - * - * It sets the item to view - */ - public int newItem() throws stock.StockException - { - try - { - return db.newItem(); - } - catch (Exception e) - { - throw new stock.StockException(e.toString()); - } - } - - /* - * This is defined in stock.idl - * - * It returns the description of a Stock item - */ - public String getDescription() throws stock.StockException - { - try - { - return db.getDescription(); - } - catch (Exception e) - { - throw new stock.StockException(e.toString()); - } - } - - /* - * This is defined in stock.idl - * - * It returns the description of a Stock item - */ - public int getAvailable() throws stock.StockException - { - try - { - return db.getAvailable(); - } - catch (Exception e) - { - throw new stock.StockException(e.toString()); - } - } - - /* - * This is defined in stock.idl - * - * It returns the description of a Stock item - */ - public int getOrdered() throws stock.StockException - { - try - { - return db.getOrdered(); - } - catch (Exception e) - { - throw new stock.StockException(e.toString()); - } - } - - /* - * This is defined in stock.idl - * - * It returns the description of a Stock item - */ - public boolean isItemValid() throws stock.StockException - { - try - { - return db.isItemValid(); - } - catch (Exception e) - { - throw new stock.StockException(e.toString()); - } - } - - /* - * This is defined in stock.idl - * - * It returns the description of a Stock item - */ - public void addNewStock(int id) throws stock.StockException - { - try - { - db.addNewStock(id); - } - catch (Exception e) - { - throw new stock.StockException(e.toString()); - } - } - - /* - * This is defined in stock.idl - * - * It returns the description of a Stock item - */ - public void removeStock(int id) throws stock.StockException - { - try - { - db.removeStock(id); - } - catch (Exception e) - { - throw new stock.StockException(e.toString()); - } - } - - /* - * This is defined in stock.idl - * - * It returns the description of a Stock item - */ - public void orderStock(int id) throws stock.StockException - { - try - { - db.orderStock(id); - } - catch (Exception e) - { - throw new stock.StockException(e.toString()); - } - } - - /* - * This returns the highest id used, hence the number of items available - */ - public int getLastID() throws stock.StockException - { - try - { - return db.getLastID(); - } - catch (Exception e) - { - throw new stock.StockException(e.toString()); - } - } - - /* - * This is used by our Dispenser - */ - public String getInstanceName() - { - return instanceName; - } -} - diff --git a/src/interfaces/jdbc/example/corba/StockServer.java b/src/interfaces/jdbc/example/corba/StockServer.java deleted file mode 100644 index 18c8b893faa..00000000000 --- a/src/interfaces/jdbc/example/corba/StockServer.java +++ /dev/null @@ -1,58 +0,0 @@ -package example.corba; - -import org.omg.CosNaming.*; - -/* - * This class implements the server side of the example. - * - * $PostgreSQL: pgsql/src/interfaces/jdbc/example/corba/StockServer.java,v 1.6 2003/11/29 22:41:21 pgsql Exp $ - */ -public class StockServer -{ - public static void main(String[] args) - { - int numInstances = 3; - - try - { - // Initialise the ORB - org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args, null); - - // Create the StockDispenser object - StockDispenserImpl dispenser = new StockDispenserImpl(args, "Stock Dispenser", numInstances); - - // Export the new object - orb.connect(dispenser); - - // Get the naming service - org.omg.CORBA.Object nameServiceObj = orb.resolve_initial_references("NameService"); - if (nameServiceObj == null) - { - System.err.println("nameServiceObj = null"); - return ; - } - - org.omg.CosNaming.NamingContext nameService = org.omg.CosNaming.NamingContextHelper.narrow(nameServiceObj); - if (nameService == null) - { - System.err.println("nameService = null"); - return ; - } - - // bind the dispenser into the naming service - NameComponent[] dispenserName = { - new NameComponent("StockDispenser", "Stock") - }; - nameService.rebind(dispenserName, dispenser); - - // Now wait forever for the current thread to die - Thread.currentThread().join(); - } - catch (Exception e) - { - e.printStackTrace(); - } - } -} - - diff --git a/src/interfaces/jdbc/example/corba/readme b/src/interfaces/jdbc/example/corba/readme deleted file mode 100644 index d44c17613f3..00000000000 --- a/src/interfaces/jdbc/example/corba/readme +++ /dev/null @@ -1,34 +0,0 @@ - -The CORBA example is the most complicated of the examples. It -aims to show how to use JDBC & Java2's ORB to access PostgreSQL. - -To compile: - -Type "make corba" to build the example. This will create a new directory -stock which contains the stubs needed by the orb, and all required classes -under the example/corba directory. - -To run: - -NOTE: To run, you will need 3 shells on Win32 (under unix you can get away -with two shells): - -1: Start the naming service - -Unix: tnameserv -ORBInitialPort 1050 & -Win32: tnameserv -ORBInitialPort 1050 - -2: Start the StockServer - - java example.corba.StockServer 3 jdbc:postgresql:dbase user passwd -ORBInitialPort 1050 - -Where: - 3 Number of concurrent sessions to allow - dbase The database (including a hostname if required) - user The PostgreSQL user name - passwd The password - -3: Using a fresh shell, run the client: - - java example.corba.StockClient -ORBInitialPort 1050 - diff --git a/src/interfaces/jdbc/example/corba/stock.idl b/src/interfaces/jdbc/example/corba/stock.idl deleted file mode 100755 index 4be5a79d7d2..00000000000 --- a/src/interfaces/jdbc/example/corba/stock.idl +++ /dev/null @@ -1,40 +0,0 @@ -// $PostgreSQL: pgsql/src/interfaces/jdbc/example/corba/stock.idl,v 1.2 2003/11/29 22:41:21 pgsql Exp $ -// -// This is our CORBA bindings for a very simple stock control -// system. -// -// $PostgreSQL: pgsql/src/interfaces/jdbc/example/corba/stock.idl,v 1.2 2003/11/29 22:41:21 pgsql Exp $ -// - -// For some reason, idltojava on my setup doesn't like this to be -// in caps. It could be a problem with Win95 & Samba, but for now, -// this is in lowercase -module stock -{ - exception StockException - { - string reason; - }; - - interface StockItem - { - void fetchItem(in long id) raises (StockException); - long newItem() raises (StockException); - string getDescription() raises (StockException); - long getAvailable() raises (StockException); - long getOrdered() raises (StockException); - boolean isItemValid() raises (StockException); - void addNewStock(in long amount) raises (StockException); - void removeStock(in long amount) raises (StockException); - void orderStock(in long amount) raises (StockException); - long getLastID() raises (StockException); - string getInstanceName(); - }; - - interface StockDispenser - { - StockItem reserveItem() raises (StockException); - void releaseItem(in StockItem item) raises (StockException); - }; - -}; diff --git a/src/interfaces/jdbc/example/corba/stock.sql b/src/interfaces/jdbc/example/corba/stock.sql deleted file mode 100644 index 6082ad6fe1e..00000000000 --- a/src/interfaces/jdbc/example/corba/stock.sql +++ /dev/null @@ -1,27 +0,0 @@ --- --- This creates the database for the stock example --- $PostgreSQL: pgsql/src/interfaces/jdbc/example/corba/stock.sql,v 1.2 2003/11/29 22:41:21 pgsql Exp $ --- -drop table stock; - -create table stock ( - id int4, - avail int4, - ordered int4, - valid bool, - description text -); - -create index stock_id on stock(id); - -copy stock from stdin; -1 19 0 t Dell Latitude XPi P133 Laptop -2 3 2 t Iomega Zip Plus drive -3 2 0 f Iomega Ext/Par drive -4 0 4 t Iomega Ext USB drive -5 200 0 t Blank Unbranded CDR media -6 20 30 t Iomega Zip media 100Mb -\. - -grant all on stock to public; -grant all on stock_id to public; |