CVS: TapestryBook/examples/src/java/examples/register Register.java,NONE,1.1 RegisterDelegate.java,NONE,1.1 RegisterConfirm.java,NONE,1.1 Address.java,NONE,1.1 PatternValidator.java,NONE,1.1
Howard Lewis Ship <[email protected]> Fri, 11 Jul 2003 21:16:47 -0700
| Newsgroups | gmane.comp.java.tapestry.cvs |
|---|---|
| Message-ID | <[email protected]> |
Update of /cvsroot/tapestry/TapestryBook/examples/src/java/examples/register
In directory sc8-pr-cvs1:/tmp/cvs-serv6871/examples/src/java/examples/register
Added Files:
Register.java RegisterDelegate.java RegisterConfirm.java
Address.java PatternValidator.java
Log Message:
Reorganize examples application to reflect standard organization
--- NEW FILE: Register.java ---
package examples.register;
import org.apache.tapestry.IRequestCycle;
import org.apache.tapestry.event.PageEvent;
import org.apache.tapestry.event.PageRenderListener;
import org.apache.tapestry.html.BasePage;
import org.apache.tapestry.valid.IValidationDelegate;
public abstract class Register extends BasePage implements PageRenderListener
{
public abstract Address getAddress();
public abstract void setAddress(Address address);
public void pageBeginRender(PageEvent event)
{
if (getAddress() == null)
setAddress(new Address());
}
public void formSubmit(IRequestCycle cycle)
{
IValidationDelegate delegate = (IValidationDelegate) getBeans().getBean("delegate");
if (delegate.getHasErrors())
return;
RegisterConfirm next = (RegisterConfirm) cycle.getPage("RegisterConfirm");
next.setAddress(getAddress());
cycle.activate(next);
}
}
--- NEW FILE: RegisterDelegate.java ---
package examples.register;
import org.apache.tapestry.IMarkupWriter;
import org.apache.tapestry.IRequestCycle;
import org.apache.tapestry.form.IFormComponent;
import org.apache.tapestry.valid.IValidator;
import org.apache.tapestry.valid.ValidationDelegate;
/**
* Customizes some presentation for the Register page (to reference
* stylesheets and images specific to the Register page).
*
* @author Howard Lewis Ship
* @version $Id: RegisterDelegate.java,v 1.1 2003/07/12 04:16:45 hship Exp $
* @since 2.4
*
**/
public class RegisterDelegate extends ValidationDelegate
{
public void writeLabelPrefix(
IFormComponent component,
IMarkupWriter writer,
IRequestCycle cycle)
{
if (isInError(component))
{
writer.begin("span");
writer.attribute("class", "label-error");
}
}
public void writeLabelSuffix(
IFormComponent component,
IMarkupWriter writer,
IRequestCycle cycle)
{
if (isInError(component))
{
writer.end(); // span
}
}
public void writeAttributes(
IMarkupWriter writer,
IRequestCycle cycle,
IFormComponent component,
IValidator validator)
{
if (isInError())
writer.attribute("class", "field-error");
}
public void writeSuffix(
IMarkupWriter writer,
IRequestCycle cycle,
IFormComponent component,
IValidator validator)
{
if (validator != null && validator.isRequired())
{
writer.printRaw(" ");
writer.begin("span");
writer.attribute("class", "required-marker");
writer.print("*");
writer.end();
}
if (isInError())
{
writer.printRaw(" ");
writer.beginEmpty("img");
writer.attribute("src", "images/field-error.png");
writer.attribute("width", 16);
writer.attribute("height", 16);
}
}
}
--- NEW FILE: RegisterConfirm.java ---
package examples.register;
import org.apache.tapestry.html.BasePage;
public abstract class RegisterConfirm extends BasePage
{
public abstract void setAddress(Address address);
}
--- NEW FILE: Address.java ---
package examples.register;
import java.io.Serializable;
public class Address implements Serializable
{
private String _firstName;
private String _lastName;
private String _address1;
private String _address2;
private String _city;
private String _state;
private String _zip;
public String getAddress1()
{
return _address1;
}
public String getAddress2()
{
return _address2;
}
public String getCity()
{
return _city;
}
public String getFirstName()
{
return _firstName;
}
public String getLastName()
{
return _lastName;
}
public String getState()
{
return _state;
}
public String getZip()
{
return _zip;
}
public void setAddress1(String address1)
{
_address1 = address1;
}
public void setAddress2(String address2)
{
_address2 = address2;
}
public void setCity(String city)
{
_city = city;
}
public void setFirstName(String firstName)
{
_firstName = firstName;
}
public void setLastName(String lastName)
{
_lastName = lastName;
}
public void setState(String state)
{
_state = state;
}
public void setZip(String zip)
{
_zip = zip;
}
}
--- NEW FILE: PatternValidator.java ---
package examples.register;
import org.apache.oro.text.regex.MalformedPatternException;
import org.apache.oro.text.regex.Pattern;
import org.apache.oro.text.regex.PatternCompiler;
import org.apache.oro.text.regex.Perl5Compiler;
import org.apache.oro.text.regex.Perl5Matcher;
import org.apache.tapestry.ApplicationRuntimeException;
import org.apache.tapestry.form.IFormComponent;
import org.apache.tapestry.valid.BaseValidator;
import org.apache.tapestry.valid.ValidatorException;
public class PatternValidator extends BaseValidator
{
private String _pattern;
private Pattern _compiledPattern;
private String _errorMessage;
private Perl5Matcher _matcher;
public String toString(IFormComponent field, Object value)
{
if (value == null)
return null;
return value.toString();
}
public Object toObject(IFormComponent field, String input) throws ValidatorException
{
if (checkRequired(field, input))
return null;
if (!match(input))
throw new ValidatorException(_errorMessage, null);
return input;
}
protected boolean match(String input)
{
if (_compiledPattern == null)
{
PatternCompiler compiler = new Perl5Compiler();
try
{
_compiledPattern = compiler.compile(_pattern);
}
catch (MalformedPatternException ex)
{
throw new ApplicationRuntimeException(ex);
}
}
if (_matcher == null)
_matcher = new Perl5Matcher();
return _matcher.matches(input, _compiledPattern);
}
public String getErrorMessage()
{
return _errorMessage;
}
public String getPattern()
{
return _pattern;
}
public void setErrorMessage(String errorMessage)
{
_errorMessage = errorMessage;
}
public void setPattern(String pattern)
{
_pattern = pattern;
_compiledPattern = null;
}
}
-------------------------------------------------------
This SF.Net email sponsored by: Parasoft
Error proof Web apps, automate testing & more.
Download & eval WebKing and get a free book.
www.parasoft.com/bulletproofapps1