FileDocCategorySizeDatePackage
ShipBean.javaAPI DocExample7638Fri Oct 29 14:25:34 BST 1999com.titan.ship

ShipBean.java

package com.titan.ship;

import javax.ejb.EntityContext;
import javax.ejb.ObjectNotFoundException;
import java.rmi.RemoteException;
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.DriverManager;
import java.sql.ResultSet;
import javax.ejb.CreateException;
import javax.ejb.FinderException;
import java.util.Enumeration;
import java.util.Vector;
import java.util.Properties;

public class ShipBean implements javax.ejb.EntityBean{
    public int id;
    public String name;
    public int capacity;
    public double tonnage;

    public EntityContext context;
       
    public ShipPK ejbCreate(int id, String name,
        int capacity, double tonnage) throws CreateException{
        this.id = id;
        this.name = name;
        this.capacity = capacity;
        this.tonnage = tonnage;
        
        Connection con = null;
        PreparedStatement ps = null;
        try {
          con = getConnection();
          ps = con.prepareStatement(
           "insert into Ship (id, name, capacity, tonnage) " +
           "values (?,?,?,?)");
          ps.setInt(1, id);
          ps.setString(2, name);
          ps.setInt(3,capacity);
          ps.setDouble(4,tonnage);
          if (ps.executeUpdate() != 1) {
            throw new CreateException ("Failed to add Ship to database");
          }
          ShipPK primaryKey = new ShipPK();
          primaryKey.id = id;
          return primaryKey;
        }
        catch (SQLException se) {
          throw new CreateException (se.getMessage());
        }
        finally {
          try {         
            if (ps != null) ps.close(); 
            if (con!= null) con.close(); 
         }catch(SQLException se){
            se.printStackTrace();
          }
        }
    }
    public void ejbPostCreate(int id, String name,
        int capacity, double tonnage){
        // do something useful with the primary key
    }
    public ShipPK ejbCreate(int id, String name )
    throws CreateException{
        return ejbCreate(id,name,0,0);
    }
    public void ejbPostCreate(int id, String name ){
        // do something useful with the EJBObject reference
    }
    public ShipPK ejbFindByPrimaryKey(ShipPK primaryKey) 
    throws FinderException, RemoteException{
        loadUsingId(primaryKey.id);
        return primaryKey;
    }
    public Enumeration ejbFindByCapacity(int capacity) 
    throws FinderException, RemoteException{
        Connection con = null;
        PreparedStatement ps = null;
        ResultSet result = null;        
        try {
          con = getConnection();
          ps = con.prepareStatement(
              "select id from Ship where capacity = ?");
          ps.setInt(1,capacity);
          result = ps.executeQuery();
          Vector keys = new Vector();
          while(result.next()){
            ShipPK shipPk = new ShipPK();
            shipPk.id = result.getInt("id");
            keys.addElement(shipPk);
          }
          if(keys.size() > 0 )
            return keys.elements();
          else 
		 return null;
        }
        catch (SQLException se) {
          throw new FinderException (se.getMessage());
        }
        finally {
          try {
            if (result != null) result.close();
            if (ps != null) ps.close(); 
            if (con!= null) con.close(); 
          }catch(SQLException se){
            se.printStackTrace();
          }
        }      
    }
    public void setEntityContext(EntityContext ctx){
        context = ctx;
    }
    public void unsetEntityContext( ){
        context = null;
    }
    public void ejbActivate(){ }
    public void ejbPassivate(){ }
    public void ejbLoad() throws RemoteException{
        try{
            ShipPK pk = (ShipPK) context.getPrimaryKey();
            loadUsingId(pk.id);
        }catch(FinderException fe)
            {
                throw new RemoteException("Cannot load Ship (id = "+
                                           id+") state from database");
            }
    }
    private void loadUsingId(int id)
     throws RemoteException, FinderException{
        Connection con = null;
        PreparedStatement ps = null;
        ResultSet result = null;
        try {
          con = getConnection();
          ps = con.prepareStatement(
              "select name, capacity, tonnage from Ship where id = ?");
          ps.setInt(1,id);
          result = ps.executeQuery();
          if(result.next()){
            this.id = id;
            name = result.getString("name");
            capacity = result.getInt("capacity");
            tonnage = result.getDouble("tonnage");
          }else{
            throw new ObjectNotFoundException(
                "Cannot find Ship with id = "+id);
          }
        }
        catch (SQLException se) {
          throw new FinderException (se.getMessage());
        }
        finally {
          try {
            if (result != null) result.close();
            if (ps != null) ps.close(); 
            if (con!= null) con.close(); 
          }catch(SQLException se){
            se.printStackTrace();
          }
        }      
    }
    public void ejbStore()throws RemoteException{ 
        Connection con = null;
        PreparedStatement ps = null;
        try {
          con = getConnection();
          ps = con.prepareStatement(
              "update Ship set name = ?, capacity = ?, " +
              "tonnage = ? where id = ?");
          ps.setString(1,name);
          ps.setInt(2,capacity);
          ps.setDouble(3,tonnage);
          ps.setInt(4,id);
          if (ps.executeUpdate() != 1) {
            throw new RemoteException ("Failure occurred saving the Ship");
          }
        }
        catch (SQLException se) {
          throw new RemoteException (se.getMessage());
        }
        finally {
          try {
            if (ps != null) ps.close(); 
            if (con!= null) con.close(); 
          }catch(SQLException se){
            se.printStackTrace();
          }
        }
    }
    public void ejbRemove() throws RemoteException{

        Connection con = null;
        PreparedStatement ps = null;
        try {
          con = getConnection();
          ps = con.prepareStatement("delete from Ship where id = ?");
          ps.setInt(1, id);
          if (ps.executeUpdate() != 1) {
            throw new RemoteException (
                "Failed to remove Ship from database");
          }
        }
        catch (SQLException se) {
          throw new RemoteException (se.getMessage());
        }
        finally {
          try {
            if (ps != null) ps.close(); 
            if (con!= null) con.close(); 
          }catch(SQLException se){
            se.printStackTrace();
          }
        }
    }
    public String getName(){
        return name;
    }
    public void setName(String n){
        name = n;
    }
    public void setCapacity(int cap){
        capacity = cap;
    }
    public int getCapacity(){
        return capacity;
    }
    public double getTonnage(){
        return tonnage;
    }
    public void setTonnage(double tons){
        tonnage = tons;
    }
    private Connection getConnection() throws SQLException {
        Properties environmentProps = context.getEnvironment();
        String url = environmentProps.getProperty("jdbcURL");
        return DriverManager.getConnection(url);
   }
}