import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.Properties;
import javax.naming.*;
import com.ejbhome.examples.*;

public class BonusServlet extends HttpServlet {

  BonusHome homebonus;
  Bonus theBonus, rec1;

  CalcHome homecalc;
  Calc theCalculation;

  int socsec = 0, retsocsec = 0;
  int bonus = 0, retbonus = 0;

  public void init(ServletConfig config) throws ServletException{
    try{
    	Properties env = new Properties();
    	env.put("java.naming.factory.initial", "com.ejbhome.naming.spi.rmi.RMIInitCtxFactory");
    	Context ctx = new InitialContext(env);
    	homebonus = (BonusHome)ctx.lookup("bonuses");
	homecalc = (CalcHome)ctx.lookup("calcs");	

   } catch (Exception NamingException) {
	NamingException.printStackTrace();
   }
  }

  public void doGet (HttpServletRequest request, HttpServletResponse response
		    ) throws ServletException, IOException
  {
	PrintWriter out;
	response.setContentType("text/html");
	String title = "EJB Example";
	out = response.getWriter();
          out.println("<HTML><HEAD><TITLE>");
          out.println(title);
          out.println("</TITLE></HEAD><BODY>");

//Create two records
   try{
	socsec = 555220000;
	bonus = 200;
	for(int i = 1; i < 3; i++){
    	  theBonus = homebonus.create(socsec, bonus);
          retbonus = theBonus.getBonus();
          retsocsec = theBonus.getSocSec();
          out.println("<H1> Record " + i + "</H1>");
          out.println("<P>Soc Sec: " + retsocsec + "<P>");
          out.println("<P>Bonus Total: " + retbonus + "<P>");
	  socsec += 1;
	}
   } catch (Exception CreateException) {
	CreateException.printStackTrace();
   }

//Retrieve a record
   try{
	BonusPK PK = new BonusPK(555220000); 
	out.println("<H1>Calculate Bonus for " + PK + "</H1>");
        rec1 = homebonus.findByPrimaryKey(PK);
	retbonus = rec1.getBonus();
        out.println("<P>Bonus Before: " + retbonus + "<P>");

//Calculate bonus
	int base = 100; 
	int perf=5, company=2;
	theCalculation = homecalc.create();
 	int calc = theCalculation.calcBonus(base, perf, company);	
	System.out.println(calc);
        rec1.addBonus(calc);
        retbonus = rec1.getBonus();
        out.println("<P>Bonus After: " + retbonus + "<P>");
   } catch (Exception FinderException) {
	FinderException.printStackTrace();
   }

   out.println("</BODY></HTML>");
   out.close();

   }
   public void destroy() {
	System.out.println("Destroy");
   }
}
