package com.ora.jsp.beans.userinfo;
import java.io.*;
import java.util.*;
import com.ora.jsp.util.*;
/**
* This class contains information about a user. It's used to show
* how a bean can be used to validate user input and format output
* so it's suitable for HTML.
*
* @author Hans Bergsten, Gefion software <hans@gefionsoftware.com>
* @version 1.0
*/
public class UserInfoBean implements Serializable {
// Validation constants
private static String DATE_FORMAT_PATTERN = "yyyy-MM-dd";
private static String[] SEX_LIST = {"male", "female"};
private static int MIN_LUCKY_NUMBER = 0;
private static int MAX_LUCKY_NUMBER = 100;
// Properties
private String birthDate;
private String birthDateInput;
private String emailAddr;
private String emailAddrInput;
private String[] interests;
private String luckyNumber;
private String luckyNumberInput;
private String sex;
private String sexInput;
private String userName;
private boolean isInitialized;
/**
* Returns the birthDate property value
*/
public String getBirthDate() {
return (birthDate == null ? "" : birthDate);
}
/**
* Returns the birthDate property value,
* with all HTML special characters converted
* to HTML character entities
*/
public String getBirthDateFormatted() {
return
StringFormat.toHTMLString(getBirthDate());
}
/**
* Sets the birthDate property value, if it's
* valid
*/
public void setBirthDate(String birthDate) {
isInitialized = true;
birthDateInput = birthDate;
if (StringFormat.isValidDate(birthDate,
DATE_FORMAT_PATTERN)) {
this.birthDate =
birthDate;
}
}
/**
* Returns the emailAddr property value
*/
public String getEmailAddr() {
return (emailAddr == null ? "" : emailAddr);
}
/**
* Returns the emailAddr property value,
* with all HTML special characters converted
* to HTML character entities
*/
public String getEmailAddrFormatted() {
return
StringFormat.toHTMLString(getEmailAddr());
}
/**
* Sets the emailAddr property value, if it's
* valid
*/
public void setEmailAddr(String emailAddr) {
isInitialized = true;
emailAddrInput = emailAddr;
if (StringFormat.isValidEmailAddr(emailAddr))
{
this.emailAddr =
emailAddr;
}
}
/**
* Returns the interests property value
*/
public String[] getInterests() {
return interests;
}
/**
* Returns the interests property value,
* with all HTML special characters converted
* to HTML character entities
*/
public String[] getInterestsFormatted() {
String[] formatted = null;
String[] interests = getInterests();
if (interests != null) {
formatted = new
String[interests.length];
for (int i = 0; i <
interests.length; i++) {
formatted[i] = StringFormat.toHTMLString(interests[i]);
}
}
return formatted;
}
/**
* Sets the interests property value
*/
public void setInterests(String[] interests) {
this.interests = interests;
}
/**
* Returns the luckyNumber property value
*/
public String getLuckyNumber() {
return (luckyNumber == null ? "" :
luckyNumber);
}
/**
* Returns the luckyNumber property value,
* with all HTML special characters converted
* to HTML character entities
*/
public String getLuckyNumberFormatted() {
return
StringFormat.toHTMLString(getLuckyNumber());
}
/**
* Sets the luckyNumber property value, if it's
* valid
*/
public void setLuckyNumber(String luckyNumber) {
isInitialized = true;
luckyNumberInput = luckyNumber;
if (StringFormat.isValidInteger(luckyNumber,
MIN_LUCKY_NUMBER,
MAX_LUCKY_NUMBER)) {
this.luckyNumber =
luckyNumber;
}
}
/**
* Returns the sex property value
*/
public String getSex() {
return (sex == null ? "" : sex);
}
/**
* Returns the sex property value,
* with all HTML special characters converted
* to HTML character entities
*/
public String getSexFormatted() {
return StringFormat.toHTMLString(getSex());
}
/**
* Sets the sex property value, if it's
* valid
*/
public void setSex(String sex) {
isInitialized = true;
sexInput = sex;
if (StringFormat.isValidString(sex, SEX_LIST,
true)) {
this.sex = sex;
}
}
/**
* Returns the userName property value
*/
public String getUserName() {
return (userName == null ? "" : userName);
}
/**
* Returns the userName property value,
* with all HTML special characters converted
* to HTML character entities
*/
public String getUserNameFormatted() {
return
StringFormat.toHTMLString(getUserName());
}
/**
* Sets the userName property value
*/
public void setUserName(String userName) {
isInitialized = true;
this.userName = userName;
}
/**
* Returns an HTML fragment with information about
* all invalid property values, or an empty String
* if all properties are valid.
*/
public String getPropertyStatusMsg() {
StringBuffer msg = new StringBuffer();
if (!isInitialized()) {
msg.append("Please enter
values in all fields");
}
else if (!isValid()) {
msg.append("The
following values are missing or invalid: ");
msg.append("<ul>");
if (birthDate == null)
{
if (birthDateInput == null) {
msg.append("<li>Birth date is missing");
}
else {
msg.append("<li>Birth date value is invalid: " + birthDateInput);
}
}
if (emailAddr == null)
{
if (emailAddrInput == null) {
msg.append("<li>Email address is missing");
}
else {
msg.append("<li>Email address value is invalid: " + emailAddrInput);
}
}
if (luckyNumber == null)
{
if (luckyNumberInput == null) {
msg.append("<li>Lucky number is missing");
}
else {
msg.append("<li>Lucky number value is invalid: " + luckyNumberInput);
}
}
if (sex == null) {
if (sexInput == null) {
msg.append("<li>Sex is missing");
}
else {
msg.append("<li>Sex value is invalid: " + sexInput);
}
}
if (userName == null)
{
msg.append("<li>User name is missing");
}
msg.append("</ul>");
msg.append("Please enter
new valid values");
}
else {
msg.append("Thanks for
telling us about yourself!");
}
return msg.toString();
}
/**
* Returns true if all property values have valid values
* (they are only set if the value is valid).
*/
public boolean isValid() {
return isInitialized() &&
birthDate != null
&&
emailAddr != null
&&
luckyNumber != null
&&
sex != null
&&
userName != null;
}
/**
* Returns true if at least one property has been set
*/
private boolean isInitialized() {
return isInitialized;
}
}
|