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("&nbsp;");
            writer.begin("span");
            writer.attribute("class", "required-marker");
            writer.print("*");
            writer.end();
        }

        if (isInError())
        {
            writer.printRaw("&nbsp;");
            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