public String forgotPassword() {
    System.out.println("in forgot password...." + email);
    int flag = CheckValidEmail.validity(email);
    if (email.equals("")) {
      addActionError("Please fill email ID");
      return ERROR;
    }
    if (flag == 1) {
      addActionError("Please enter a valid email ID, entered Email is not registered with us");
      return ERROR;
    } else {
      StringBuffer sb = new StringBuffer();
      for (int x = 0; x < 5; x++) {
        sb.append((char) ((int) (Math.random() * 26) + 97));
      }
      System.out.println(sb.toString());
      setFrom("*****@*****.**");
      setSenderPassword("dipRituSuv");
      setBody(
          "Your password is reset to " + sb.toString() + " \nPlease sign in with it the next time");
      try {
        Session session =
            Session.getDefaultInstance(
                properties,
                new javax.mail.Authenticator() {
                  protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(from, getSenderPassword());
                  }
                });

        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress(from));
        message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(email));
        message.setSubject("Forgot Password");
        message.setText(body);
        Transport.send(message);
      } catch (Exception e) {
        e.printStackTrace();
      }
      String encryptedPassword = PasswordEncryption.EncryptPassword(sb.toString());
      try {
        java.sql.Connection con = DBManager.getConnection();
        DBManager.useDataBase(con);
        sqlQuery = "update customer set password =? where userName=?;";
        statement = con.prepareStatement(sqlQuery);
        statement.setString(1, encryptedPassword);
        statement.setString(2, CheckValidEmail.getUserName());
        res = statement.executeUpdate();
      } catch (Exception e) {
        e.printStackTrace();
      }
      return SUCCESS;
    }
  }
  public String forgotUserName() {
    System.out.println("in forgot user name...." + email);
    int flag = CheckValidEmail.validity(email);
    if (email.equals("")) {
      addActionError("Please fill email ID");
      return ERROR;
    }
    if (flag == 1) {
      addActionError("Please enter a valid email ID, entered Email is not registered with us");
      return ERROR;
    } else {
      System.out.println(CheckValidEmail.getUserName());
      setFrom("*****@*****.**");
      setSenderPassword("dipRituSuv");
      setBody(
          "Your user name is "
              + CheckValidEmail.getUserName()
              + " \nPlease sign in with it the next time");
      try {
        Session session =
            Session.getDefaultInstance(
                properties,
                new javax.mail.Authenticator() {
                  protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(from, getSenderPassword());
                  }
                });

        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress(from));
        message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(email));
        message.setSubject("Forgot User Name");
        message.setText(body);
        Transport.send(message);
      } catch (Exception e) {
        e.printStackTrace();
      }
      return SUCCESS;
    }
  }
  public String successful() {
    if (ActionContext.getContext().getSession().get("userSession") == null) {
      checkExistingEmail = CheckValidEmail.validity(email);
      if (userName.equals("")) {
        addActionError("User name cannot be empty");
        return ERROR;
      } else if (password.equals("")) {
        addActionError("Password cannot be empty");
        return ERROR;
      } else if (firstName.equals("")) {
        addActionError("First Name cannot be empty");
        return ERROR;
      } else if (lastName.equals("")) {
        addActionError("Last Name cannot be empty");
        return ERROR;
      } else if (email.equals("")) {
        addActionError("Email cannot be empty");
        return ERROR;
      } else if (phone.equals("")) {
        addActionError("Phone Number cannot be empty");
        return ERROR;
      } else if (phone.length() < 10) {
        addActionError("Phone Number should be of 10 digits !!!");
        return ERROR;
      }
      /*else if(email.isEmpty()==false){
      	Pattern p = Pattern.compile(".+@.+\\.[a-z]+");
      	 Matcher m = p.matcher(email);
      	 boolean matchFound = m.matches();
      	 if(matchFound==false){
      		 addActionError("Email is invalid !!!");
      		 flag=false;
      	 }

      }
       */

      else if (checkExistingEmail == 0) {
        addActionError("Email address already in use. Please use different email address");
        return ERROR;
      } else {

        if (email.isEmpty() == false) {
          Pattern p = Pattern.compile(".+@.+\\.[a-z]+");
          Matcher m = p.matcher(email);
          boolean matchFound = m.matches();
          if (matchFound == false) {
            addActionError("Email is invalid !!!");
            return ERROR;
          }
        }
        try {
          java.sql.Connection con = DBManager.getConnection();
          DBManager.useDataBase(con);

          sqlQuery = "select userName from customer;";
          statement = con.prepareStatement(sqlQuery);
          rs = statement.executeQuery();
          while (rs.next()) {
            if (rs.getString(1).equals(userName)) {
              addActionError("User Name already exists, Please choose some other user name");
              return ERROR;
            }
          }

          // encryption
          String encryptedPassword = EncryptPassword(password);

          sqlQuery =
              "insert into customer(userName,password,emailId,firstName,middleName,lastName,phone,balance) values(?,?,?,?,?,?,?,?);";
          statement = con.prepareStatement(sqlQuery);
          statement.setString(1, userName);
          statement.setString(2, encryptedPassword);
          statement.setString(3, email);
          statement.setString(4, firstName);
          statement.setString(5, middleName);
          statement.setString(6, lastName);
          statement.setString(7, phone);
          statement.setInt(8, 2000);
          res = statement.executeUpdate();

          try {
            // code to get customerID after the latest insert (above)
            sqlQuery = "SELECT MAX(customerID) FROM customer;";
            statement = con.prepareStatement(sqlQuery);
            rs = statement.executeQuery();
            while (rs.next()) {
              if (rs.getInt(1) > 0) session.put("customerID", rs.getInt(1));
            }
          } catch (Exception e) {
            e.printStackTrace();
          }

        } catch (Exception e) {
          e.printStackTrace();
        }
        session.put("userSession", userName);
        setFrom("*****@*****.**");
        setSenderPassword("dipRituSuv");
        body =
            "Welcome "
                + firstName
                + " to Book My Movie. Now enjoy booking movie tickets online. You are now successfully registerd to our website. ";
        try {
          Session session =
              Session.getDefaultInstance(
                  properties,
                  new javax.mail.Authenticator() {
                    protected PasswordAuthentication getPasswordAuthentication() {
                      return new PasswordAuthentication(from, senderPassword);
                    }
                  });

          Message message = new MimeMessage(session);
          message.setFrom(new InternetAddress(from));
          message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(email));
          message.setSubject("Registration Successul");
          message.setText(body);

          Transport.send(message);
        } catch (Exception e) {

          e.printStackTrace();
        }

        return SUCCESS;
      }
    } else {
      addActionError(
          "You are already signed in as  "
              + ActionContext.getContext().getSession().get("userSession").toString()
              + " Please logout to sign in or register as different user");
      return ERROR;
    }
  }