/**
* Copyright (c) 2001, Keith Wong
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software
* and associated documentation files (the "Software"), to deal in the Software without restriction,
* including without limitation the rights to use, copy, modify, merge, publish, distribute,
* sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
* is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all copies or
* substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
* BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package mypackage;
import objectivehtml.common.*;
import objectivehtml.htmlwidget.*;
import objectivehtml.htmlwidget.exception.*;
import objectivehtml.oms.exception.*;
import objectivehtml.oms.*;
import java.util.*;
import java.text.*;
import javax.servlet.http.*;
/**
* CustomerListForm
* This is an example of how to use the objective html toolkit. Please read all the comments
* in the code as they give handy tips in how to be use this toolkit.
* The example was written by Keith Wong, email: keithwong@optushome.com.au
*/
public class CustomerListForm extends CustomerListFormDesign
{
/** Indicates whether the form was successfully processed or an error occurred */
private Throwable m_objThrowable = null;
/**
* Constructor
*/
public CustomerListForm()
{
super();
} // end constructor
/**
* Lets populate the form with all the customers.
*/
public void getAllCustomers()
{
Collection clCustomers = CustomerDomain.retrieveAllCustomers();
boolean bFirstRow = true;
for (Iterator it = clCustomers.iterator(); it.hasNext(); )
{
Customer objCustomer = (Customer)it.next();
HtmlTableRow objTableRow = null;
HtmlRadioButton objRadioButton = null;
if (bFirstRow == true)
{
bFirstRow = false;
// no need to create new row
objTableRow = m_tblLayout.getTableRow(m_tblLayout.getRows()-1);
// lets set the control box
objRadioButton = new HtmlRadioButton(objTableRow.getTableCell(0), "customerid");
connect(slot("processCustomerSelection(String)"), objRadioButton.signal("dataSubmitted(String)"));
} // end if first row
else
{
// lets create a new row with the same properties as the previous
objTableRow = m_tblLayout.appendTableRow(true);
// lets set the control box
objRadioButton = new HtmlRadioButton(objTableRow.getTableCell(0), "customerid");
} // end else not first row
objRadioButton.setValue(objCustomer.getCustomerId().toString());
// lets set the first name
objTableRow.getTableCell(1).setText(objCustomer.getFirstName());
// lets set the last name
objTableRow.getTableCell(2).setText(objCustomer.getLastName());
// lets set the birth date
SimpleDateFormat objFormatter = new SimpleDateFormat("yyyy-MM-dd");
objTableRow.getTableCell(3).setText(objFormatter.format(objCustomer.getBirthDate()));
} // end for more customers
} // end getAllCustomers
/**
* This method is called when a customer is selected on the form.
*/
public void processCustomerSelection(String sCustomerId)
{
try
{
long lCustomerId = Long.parseLong(sCustomerId);
emit(customerSelected(lCustomerId));
} // end try to parse
catch (NumberFormatException nfe)
{
} // end catch nfe
} // end processCustomerSelection
/**
* This signal is emitted when a new customer is selected.
*/
public Signal customerSelected(long lCustomerId)
{
ParameterList objParamList = new ParameterList();
objParamList.addParam(lCustomerId);
Signal objSignal = null;
try
{
objSignal = new Signal(signal("customerSelected(long)"), objParamList);
}
catch (Exception e)
{
e.printStackTrace(); // shouldn't happen
}
return objSignal;
} // end customerSelected
/**
* This method clears any stored exceptions.
*/
public void clearException()
{
m_objThrowable = null;
} // end clearException
/**
* This method should be called after a business method (or slot method)
* is called to check whether an exception occurred.
*/
public void checkException(HttpServletRequest objRequest)
{
if (objRequest.getAttribute("ohtml.result") != null)
{
EventResult objResult = (EventResult)objRequest.getAttribute("ohtml.result");
if (objResult.getResult() == null
|| objResult.getResult().equals("success"))
{
if (m_objThrowable != null)
{
objResult.setResult("failure");
objResult.setAttribute("error", m_objThrowable);
} // end if something failed
else
{
objResult.setResult("success");
} // end else everything ok
} // end if not failure
// lets clear the exception as we've processed this exception
clearException();
} // end if result exists
} // end checkException
} // end class