/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package vn.edu.rmit.examples; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.Collection; import javax.ejb.CreateException; import javax.ejb.EntityBean; import javax.ejb.EntityContext; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.sql.DataSource; import vn.edu.rmit.examples.dto.ActorDTO; /** * * @author v10532 */ public abstract class Actor implements EntityBean { private EntityContext context; // <editor-fold defaultstate="collapsed" desc="EJB infrastructure methods. Click on the + sign on the left to edit the code."> // TODO Consider creating Transfer Object to encapsulate data // TODO Review finder methods /** * @see javax.ejb.EntityBean#setEntityContext(javax.ejb.EntityContext) */ public void setEntityContext(EntityContext aContext) { context = aContext; } /** * @see javax.ejb.EntityBean#ejbActivate() */ public void ejbActivate() { } /** * @see javax.ejb.EntityBean#ejbPassivate() */ public void ejbPassivate() { } /** * @see javax.ejb.EntityBean#ejbRemove() */ public void ejbRemove() { } /** * @see javax.ejb.EntityBean#unsetEntityContext() */ public void unsetEntityContext() { context = null; } /** * @see javax.ejb.EntityBean#ejbLoad() */ public void ejbLoad() { } /** * @see javax.ejb.EntityBean#ejbStore() */ public void ejbStore() { } // </editor-fold> public abstract java.lang.Long getId(); public abstract void setId(java.lang.Long key); public abstract String getName(); public abstract void setName(String n); public abstract Collection getMovies(); public abstract void setMovies(Collection m); public java.lang.Long ejbCreate(ActorDTO a) throws CreateException { // TODO add additional validation code, throw CreateException if data is not valid try { setId(getNewId()); setName(a.getName()); } catch (Exception e) { throw new CreateException(e.getMessage()); } return null; } public void ejbPostCreate(ActorDTO a) { // TODO populate relationships here if appropriate } private Long getNewId() throws Exception { Connection con = getMoviedb().getConnection(); PreparedStatement pstmt = con.prepareStatement("select max(id) from actor"); ResultSet rs = pstmt.executeQuery(); Long id = new Long(1); if(rs.next()) { id = new Long(rs.getLong(1) + 1); } return id; } private DataSource getMoviedb() throws NamingException { Context c = new InitialContext(); return (DataSource) c.lookup("java:comp/env/moviedb"); } }