This is an example of a Template Method Pattern. This example demonstrates a behavioral pattern that executes an algorithm by calling methods in a base class that are defined by subclasses.


public abstract class BaseObject
{
    public void commitTransaction(Connection pConn)
    {
        Statement stmt = pConn.createStatement();
        String query = getInsertSQLStatement(); // only defined in subclasses
        stmt.executeQuery(query);
    }

    private Connection getDBConnection()
    {
        // get DB connection
    }

    public abstract String getInsertSQLStatement();
    public abstract String getDeleteSQLStatement();
    public abstract String getUpdateSQLStatement();
}

public class MySessionBeanEJB implements SessionBean { public void commitTransaction(BaseObject pObject) { Connection conn = getDBConnection(); pObject.commitTransaction(conn); } private Connection getDBConnection() { // get DB connection }

public class Transaction extends BaseObject { private String name; private String address; private String city; public Transaction() { } public setName(String pName) { name = pName; } public setAddress(String pAddress) { address = pAddress; } public setCity(String pCity) { city = pCity; } public String getInsertSQLStatement() { return "INSERT INTO Company (" + name + "," + address + "," + city + ") VALUES(?,?,?)"; } public String getInsertSQLStatement() { return "UPDATE Company SET name = ? SET address = ? SET city = ? WHERE companyID = ?"; } public String getInsertSQLStatement() { return "DELETE FROM Company WHERE CompanyID = ? "; } }

public class JavaBean { public void processData(HttpRequest request, HttpResponse response) { String name = request.getParameter("name"); String address = request.getParameter("address"); String city = request.getParameter("city"); Transaction newTransaction = new Transaction(); newTransaction.setName(name); newTransaction.setAddress(address); newTransaction.setCity(city); Context myContext = getInitialContext(getContextFlag()); MySessionBeanHome home = myContext.lookup(pJNDIName); MySessionBeanRemote remoteEJB = home.create(); remoteEJB.commitTransaction(newTransaction); } } public class ControllerServlet { public void doPost(request, response) { String command = request.getParameter("command"); if (command != null) { // Get helper class name to process the page String className = request.getParameter("action"); Class c = Class.forName(className); Object instance = c.newInstance(); instance.processData(request, response); } } } Transaction.jsp { form method="post" name="ControllerServlet" action="JavaBean" }

Site hosted by Angelfire.com: Build your free website today!