1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288
|
// **********************************************************************
//
// Copyright (c) 2003-2009 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.
//
// **********************************************************************
#ifndef LIBRARY_ICE
#define LIBRARY_ICE
#include <Ice/BuiltinSequences.ice>
module Demo
{
/**
*
* This local exception is used internally if a java.sql.SQLException
* is raised.
*
**/
local exception JDBCException
{
};
/**
*
* This exception is raised if the book already exists.
*
**/
exception BookExistsException
{
};
/**
*
* This exception is raised if a book has already been rented.
*
**/
exception BookRentedException
{
string renter;
};
/**
*
* This exception is raised if a customer name is invalid.
*
**/
exception InvalidCustomerException
{
};
/**
*
* This exception is raised if the book has not been rented.
*
**/
exception BookNotRentedException
{
};
/** Forward declaration for the interface Book. */
interface Book;
/**
*
* A description of a book.
*
**/
struct BookDescription
{
/** The ISBN number of the book. */
string isbn;
/** The title of the book. */
string title;
/** The authors of the book. */
["java:type:java.util.LinkedList<String>:java.util.List<String>"] Ice::StringSeq authors;
/** The customer name of the renter. */
string rentedBy;
/** A proxy to the associated book. */
Book* proxy;
};
/** A sequence of book descriptions. */
["java:type:java.util.LinkedList<BookDescription>:java.util.List<BookDescription>"]
sequence<BookDescription> BookDescriptionSeq;
/**
*
* This interface represents a book.
*
**/
interface Book
{
/**
*
* Get a description of the book.
*
* @return The book description.
*
**/
idempotent BookDescription describe();
/**
*
* Set the title of a book.
*
* @param title The book title.
*
**/
void setTitle(string title);
/**
*
* Set the book authors.
*
* @param authors The book authors.
*
**/
void setAuthors(["java:type:java.util.LinkedList<String>:java.util.List<String>"] Ice::StringSeq authors);
/**
*
* Rent the book to the specified customer.
*
* @param customer The customer.
*
* @throws BookRentedException Raised if the book has already been
* rented.
*
* @throws InvalidCustomerException Raised if the customer is invalid.
*
**/
void rentBook(string name)
throws InvalidCustomerException, BookRentedException;
/**
*
* Get the renter.
*
* @return The current rental customer.
*
* @throws BookNotRentedException Raised if the book is not
* currently rented.
*
**/
idempotent string getRenter()
throws BookNotRentedException;
/**
*
* Return the book.
*
* @throws BookNotRentedException Raised if the book is not
* currently rented.
*
**/
void returnBook()
throws BookNotRentedException;
/**
*
* Destroy the book.
*
**/
void destroy();
};
/**
*
* Interface to get query results.
*
**/
interface BookQueryResult
{
/**
*
* Get more query results.
*
* @param n The maximum number of results to return.
*
* @param destroyed There are no more results, and the query has
* been destroyed.
*
* @returns A sequence of up to n results.
*
**/
BookDescriptionSeq next(int n, out bool destroyed);
/**
*
* Destroy the query result.
*
**/
void destroy();
};
/**
*
* An interface to the library.
*
**/
interface Library
{
/**
*
* Query based on isbn number. The query is a partial match at the
* start of the isbn number.
*
* @param isbn The ISBN number.
*
* @param n The number of rows to retrieve in the initial request.
* @param first The first set of results, up to n results.
*
* @param nrows The total number of rows.
*
* @param result The remainder of the results. If there are no
* further results, a null proxy is returned.
*
**/
void queryByIsbn(string isbn, int n, out BookDescriptionSeq first, out int nrows, out BookQueryResult* result);
/**
*
* Query based on the author name. The query is a partial match of
* the author's name.
*
* @param author The authors name.
*
* @param n The number of rows to retrieve in the initial request.
* @param first The first set of results, up to n results.
*
* @param nrows The total number of rows.
*
* @param result The remainder of the results. If there are no
* further results, a null proxy is returned.
*
**/
void queryByAuthor(string author, int n, out BookDescriptionSeq first, out int nrows, out BookQueryResult* result);
/**
*
* Query based on the book title. The query is a partial match of
* the book title.
*
* @param author The authors name.
*
* @param n The number of rows to retrieve in the initial request.
* @param first The first set of results, up to n results.
*
* @param nrows The total number of rows.
*
* @param result The remainder of the results. If there are no
* further results, a null proxy is returned.
*
**/
void queryByTitle(string title, int n, out BookDescriptionSeq first, out int nrows, out BookQueryResult* result);
/**
*
* Create a book with the given description.
*
* @param description The book description.
*
* @return A proxy for the new book.
*
* @throws BookExistsException Raised if a book with the same ISBN
* number already exists.
*
**/
Book* createBook(string isbn, string title,
["java:type:java.util.LinkedList<String>:java.util.List<String>"] Ice::StringSeq authors)
throws BookExistsException;
};
};
#endif
|