Package hirondelle.predict.pub.register

Source Code of hirondelle.predict.pub.register.RegisterAction

package hirondelle.predict.pub.register;

import java.util.logging.Logger;

import hirondelle.web4j.action.ActionTemplateShowAndApply;
import hirondelle.web4j.action.ResponsePage;
import hirondelle.web4j.database.DAOException;
import hirondelle.web4j.database.SqlId;
import hirondelle.web4j.model.AppException;
import hirondelle.web4j.model.ModelCtorException;
import hirondelle.web4j.model.ModelFromRequest;
import hirondelle.web4j.request.RequestParameter;
import hirondelle.web4j.request.RequestParser;
import hirondelle.web4j.util.Util;
import hirondelle.predict.util.TemplatedPage;
import hirondelle.web4j.database.DuplicateException;
import hirondelle.web4j.model.Id;

/**
Allow the user to create an account on the site.
A user can only log in after successfully creating an account.
  @view view.jsp
  @sql statements.sql
*/
public final class RegisterAction extends ActionTemplateShowAndApply {

  /** Constructor. */
  public RegisterAction(RequestParser aRequestParser){
    super(FORWARD, REDIRECT, aRequestParser);
    createSessionAndCsrfToken();
  }
 
  public static final SqlId ADD_NEW_USER = new SqlId("ADD_NEW_USER");
  public static final SqlId ADD_NEW_USER_ROLE = new SqlId("ADD_NEW_USER_ROLE");
 
  public static final RequestParameter LOGINNAME = RequestParameter.withLengthCheck("LoginName");
  public static final RequestParameter SCREENNAME = RequestParameter.withLengthCheck("ScreenName");
  public static final RequestParameter PASSWORD = RequestParameter.withLengthCheck("Password");
  public static final RequestParameter PASSWORDCONFIRM = RequestParameter.withLengthCheck("PasswordConfirm");
  public static final RequestParameter EMAIL = RequestParameter.withLengthCheck("Email");
  public static final RequestParameter CAPTCHA_CHALLENGE = RequestParameter.withLengthCheck("recaptcha_challenge_field");
  public static final RequestParameter CAPTCHA_RESPONSE = RequestParameter.withLengthCheck("recaptcha_response_field");
 
  /** Show the empty form, with no prepopulation. */
  protected void show() throws DAOException {
    fLogger.fine("Forwarding to JSP");
  }
 
  /** Check user input can build a {@link Register} object. */
  protected void validateUserInput() {
    try {
      ModelFromRequest builder = new ModelFromRequest(getRequestParser());
      String ipAddress = getRequestParser().getRequest().getRemoteAddr();
      fRegister = builder.build(
        Register.class,
        LOGINNAME, SCREENNAME, PASSWORD, PASSWORDCONFIRM,
        EMAIL, CAPTCHA_CHALLENGE, CAPTCHA_RESPONSE, Id.from(ipAddress)
      );
    }
    catch (ModelCtorException ex){
      addError(ex);
    }   
  }
 
  /**
  Add a new user to the database.
  If the user name or email address is already taken, then the operation fails,
  and the user is asked to try a different user name.
*/
protected void apply() throws AppException {
   RegisterDAO dao = new RegisterDAO();
   try {
     dao.add(fRegister);
     addMessage("Thank you! Please login with your user name and password.");
   }
   catch (DuplicateException ex){
     addError("Please try again. That user name (or email address) is already taken.");
   }
}
 
  // PRIVATE //
  private Register fRegister;
  private static final ResponsePage FORWARD = TemplatedPage.get("Register", "view.jsp", RegisterAction.class);
  private static final ResponsePage REDIRECT = new ResponsePage("../../main/lists/PredictionListAction.do?Operation=List");
  private static final Logger fLogger = Util.getLogger(RegisterAction.class);
}
TOP

Related Classes of hirondelle.predict.pub.register.RegisterAction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.