summaryrefslogtreecommitdiff
path: root/java/demo/Database/library/Parser.java
diff options
context:
space:
mode:
authorMatthew Newhook <matthew@zeroc.com>2008-08-15 14:47:14 -0230
committerMatthew Newhook <matthew@zeroc.com>2008-08-15 14:47:14 -0230
commit7b735386b10c464a39d4e0298c99a33f6ae038fe (patch)
tree7f2e9ee218038b3b3883e3827b82ec70533aff8f /java/demo/Database/library/Parser.java
parentFix more conflicts. (diff)
downloadice-7b735386b10c464a39d4e0298c99a33f6ae038fe.tar.bz2
ice-7b735386b10c464a39d4e0298c99a33f6ae038fe.tar.xz
ice-7b735386b10c464a39d4e0298c99a33f6ae038fe.zip
added first cut at JDBC demo.
Diffstat (limited to 'java/demo/Database/library/Parser.java')
-rw-r--r--java/demo/Database/library/Parser.java354
1 files changed, 354 insertions, 0 deletions
diff --git a/java/demo/Database/library/Parser.java b/java/demo/Database/library/Parser.java
new file mode 100644
index 00000000000..be4f19ec6fe
--- /dev/null
+++ b/java/demo/Database/library/Parser.java
@@ -0,0 +1,354 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2008 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+
+import Demo.*;
+
+class Parser
+{
+ Parser(Ice.Communicator communicator, LibraryPrx library)
+ {
+ _library = library;
+ }
+
+ void
+ usage()
+ {
+ System.err.print(
+ "help Print this message.\n" +
+ "exit, quit Exit this program.\n" +
+ "add isbn title authors Create new book.\n" +
+ "isbn NUMBER Find the book with given ISBN number.\n" +
+ "authors NAME Find all books by the given authors.\n" +
+ "next Set the current book to the next one that was found.\n" +
+ "current Display the current book.\n" +
+ "rent NAME Rent the current book for customer NAME.\n" +
+ "return Return the currently rented book.\n" +
+ "remove Permanently remove the current book from the library.\n");
+ }
+
+ void
+ addBook(java.util.List args)
+ {
+ if(args.size() != 3)
+ {
+ error("`add' requires at exactly three arguments (type `help' for more info)");
+ return;
+ }
+
+ try
+ {
+ String isbn = (String)args.get(0);
+ String title = (String)args.get(1);
+
+ java.util.List<String> authors = new java.util.LinkedList<String>();
+ java.util.StringTokenizer st = new java.util.StringTokenizer((String)args.get(2), ",");
+ while(st.hasMoreTokens())
+ {
+ authors.add(st.nextToken().trim());
+ }
+
+ BookPrx book = _library.createBook(isbn, title, authors);
+ System.out.println("added new book with isbn " + isbn);
+ }
+ catch(BookExistsException ex)
+ {
+ error("the book already exists.");
+ }
+ catch(Ice.LocalException ex)
+ {
+ error(ex.toString());
+ }
+ }
+
+ void
+ findIsbn(java.util.List args)
+ {
+ if(args.size() != 1)
+ {
+ error("`isbn' requires exactly one argument (type `help' for more info)");
+ return;
+ }
+
+ try
+ {
+ if(_query != null)
+ {
+ try
+ {
+ _query.destroy();
+ }
+ catch(Exception e)
+ {
+ // Ignore
+ }
+ }
+ _query = null;
+ _current = null;
+
+ BookDescriptionHolder first = new BookDescriptionHolder();
+ BookQueryResultPrxHolder result = new BookQueryResultPrxHolder();
+
+ _library.queryByIsbn((String)args.get(0), first, result);
+ _current = first.value;
+ _query = result.value;
+ printCurrent();
+ }
+ catch(QueryActiveException ex)
+ {
+ error(ex.toString());
+ }
+ catch(NoResultsException ex)
+ {
+ error(ex.toString());
+ }
+ catch(Ice.LocalException ex)
+ {
+ error(ex.toString());
+ }
+ }
+
+ void
+ findAuthors(java.util.List args)
+ {
+ if(args.size() != 1)
+ {
+ error("`authors' requires exactly one argument (type `help' for more info)");
+ return;
+ }
+
+ try
+ {
+ if(_query != null)
+ {
+ try
+ {
+ _query.destroy();
+ }
+ catch(Exception e)
+ {
+ // Ignore
+ }
+ }
+ _query = null;
+ _current = null;
+
+ BookDescriptionHolder first = new BookDescriptionHolder();
+ BookQueryResultPrxHolder result = new BookQueryResultPrxHolder();
+
+ _library.queryByAuthor((String)args.get(0), first, result);
+ _current = first.value;
+ _query = result.value;
+ printCurrent();
+ }
+ catch(QueryActiveException ex)
+ {
+ error(ex.toString());
+ }
+ catch(NoResultsException ex)
+ {
+ error(ex.toString());
+ }
+ catch(Ice.LocalException ex)
+ {
+ error(ex.toString());
+ }
+ }
+
+ void
+ nextFoundBook()
+ {
+ if(_query != null)
+ {
+ Ice.IntHolder remaining = new Ice.IntHolder();
+ Ice.BooleanHolder destroyed = new Ice.BooleanHolder();
+ java.util.List<BookDescription> next = _query.next(1, destroyed);
+ if(destroyed.value)
+ {
+ _query = null;
+ _current = null;
+ }
+ else
+ {
+ _current = next.get(0);
+ }
+ }
+ printCurrent();
+ }
+
+ void
+ printCurrent()
+ {
+ try
+ {
+ if(_current != null)
+ {
+ System.out.println("current book is:" );
+ System.out.println("isbn: " + _current.isbn);
+ System.out.println("title: " + _current.title);
+ System.out.println("authors: " + _current.authors);
+ if(_current.rentedBy.length() > 0)
+ {
+ System.out.println("rented: " + _current.rentedBy);
+ }
+ }
+ else
+ {
+ System.out.println("no current book");
+ }
+ }
+ catch(Ice.ObjectNotExistException ex)
+ {
+ System.out.println("current book no longer exists");
+ }
+ catch(Ice.LocalException ex)
+ {
+ error(ex.toString());
+ }
+ }
+
+ void
+ rentCurrent(java.util.List args)
+ {
+ if(args.size() != 1)
+ {
+ error("`rent' requires exactly one argument (type `help' for more info)");
+ return;
+ }
+
+ try
+ {
+ if(_current != null)
+ {
+ _current.proxy.rentBook((String)args.get(0));
+ System.out.println("the book is now rented by `" + (String)args.get(0) + "'");
+ }
+ else
+ {
+ System.out.println("no current book");
+ }
+ }
+ catch(BookRentedException ex)
+ {
+ System.out.println("the book has already been rented.");
+ }
+ catch(Ice.ObjectNotExistException ex)
+ {
+ System.out.println("current book no longer exists");
+ }
+ catch(Ice.LocalException ex)
+ {
+ error(ex.toString());
+ }
+ }
+
+ void
+ returnCurrent()
+ {
+ try
+ {
+ if(_current != null)
+ {
+ _current.proxy.returnBook();
+ System.out.println( "the book has been returned.");
+ }
+ else
+ {
+ System.out.println("no current book");
+ }
+ }
+ catch(BookNotRentedException ex)
+ {
+ System.out.println("the book is not currently rented.");
+ }
+ catch(Ice.ObjectNotExistException ex)
+ {
+ System.out.println("current book no longer exists");
+ }
+ catch(Ice.LocalException ex)
+ {
+ error(ex.toString());
+ }
+ }
+
+ void
+ removeCurrent()
+ {
+ try
+ {
+ if(_current != null)
+ {
+ _current.proxy.destroy();
+ _current = null;
+ System.out.println("removed current book" );
+ }
+ else
+ {
+ System.out.println("no current book" );
+ }
+ }
+ catch(Ice.ObjectNotExistException ex)
+ {
+ System.out.println("current book no longer exists");
+ }
+ catch(Ice.LocalException ex)
+ {
+ error(ex.toString());
+ }
+ }
+
+ void
+ error(String s)
+ {
+ System.err.println("error: " + s);
+ }
+
+ void
+ warning(String s)
+ {
+ System.err.println("warning: " + s);
+ }
+
+ String
+ getInput()
+ {
+ System.out.print(">>> ");
+ System.out.flush();
+
+ try
+ {
+ return _in.readLine();
+ }
+ catch(java.io.IOException e)
+ {
+ return null;
+ }
+ }
+
+ int
+ parse()
+ {
+ _query = null;
+ _current = null;
+
+ _in = new java.io.BufferedReader(new java.io.InputStreamReader(System.in));
+
+ Grammar g = new Grammar(this);
+ g.parse();
+
+ return 0;
+ }
+
+ private BookQueryResultPrx _query;
+ private BookDescription _current;
+
+ private LibraryPrx _library;
+
+ private java.io.BufferedReader _in;
+ private boolean _interactive;
+}