/*
 *
 * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.
 * 
 * This software is the proprietary information of Sun Microsystems, Inc.  
 * Use is subject to license terms.
 * 
 */

package database;
import javax.ejb.*;
import javax.naming.*;
import javax.rmi.PortableRemoteObject;
import java.rmi.RemoteException;
import java.sql.*;
import java.util.*;
import exception.*;

public class BookDB {

      String bookId = "0";
    private BookDBEJB database = null;


    public BookDB () throws Exception {
               try {
                  InitialContext ic = new InitialContext();
                  Object objRef = ic.lookup("java:comp/env/ejb/BookDBEJB");
                  BookDBEJBHome home = (BookDBEJBHome)PortableRemoteObject.narrow(objRef, 
                     database.BookDBEJBHome.class);
                  database = home.create();
               } catch (RemoteException ex) {
                   throw new Exception("Couldn't create database bean."+ ex.getMessage());
               } catch (CreateException ex) {
                   throw new Exception("Couldn't create database bean."+ ex.getMessage());
               } catch (NamingException ex) {
                   throw new Exception("Unable to lookup home: "+ "java:comp/env/ejb/BookDBEJB."+ ex.getMessage());
               } 
    }
      
      public void remove () throws Exception {
      
         	try {
          		database.remove();
               database = null;
            } catch (RemoteException ex) {
               throw new Exception("Error while removing database bean."+ ex.getMessage());
            } catch (EJBException ex) {
               throw new Exception("Error while removing database bean."+ ex.getMessage());
            }
      }
      
      public void setBookId(String bookId) {
         this.bookId = bookId;
      }
      
    public BookDetails getBookDetails() throws Exception {
            try {
               return (BookDetails)database.getBookDetails(bookId);				
            } catch (BookNotFoundException ex) {
               throw ex;
            } 
    }

    public Collection getBooks() throws Exception {
            try {
               return database.getBooks();
            } catch (BooksNotFoundException ex) {
               throw ex;
            } 

    }

    public int getNumberOfBooks() throws Exception {
            try {
               return database.getNumberOfBooks();
            } catch (BooksNotFoundException ex) {
               throw ex;
            } 		
    }
}
