diff options
author | Matthew Newhook <matthew@zeroc.com> | 2008-08-15 14:47:14 -0230 |
---|---|---|
committer | Matthew Newhook <matthew@zeroc.com> | 2008-08-15 14:47:14 -0230 |
commit | 7b735386b10c464a39d4e0298c99a33f6ae038fe (patch) | |
tree | 7f2e9ee218038b3b3883e3827b82ec70533aff8f /java/demo/Database/library/Parser.java | |
parent | Fix more conflicts. (diff) | |
download | ice-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.java | 354 |
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; +} |