package business;
import data.DBDriver;
import data.SchemaBuilder;
import java.io.Serializable;
import java.lang.reflect.Field;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;
public class User extends DBObject implements Serializable {
private int userId;
private String email;
private String password;
private String firstName;
private String lastName;
private String address;
private String city;
private String state;
private String country;
private String postalCode;
private Date joinDate;
private Date birthDate;
private boolean superUser;
private boolean validated;
private String phone;
private String validationCode;
public User() {
this.userId = 0;
}
/**
* Initialize the object. This must be called prior to any database-related methods.
* @param driver The database driver instance.
*/
@Override
public void init( DBDriver driver ) {
super.init( driver );
String className = this.getClass().getName();
Field[] fields = this.getClass().getDeclaredFields();
SchemaBuilder builder = new SchemaBuilder( driver );
schema = builder.getSchema( className, fields );
}
/**
* Populates the object with the ResultSet cursor content.
* @param row The ResultSet cursor to populate the object with.
* @return True on success, false otherwise.
* @throws SQLException
*/
@Override
public boolean populate( ResultSet row ) throws SQLException {
return super.populate( row );
}
/**
* Saves the object to the database.
* @return True if the object has been saved successfully, false otherwise.
*/
@Override
public boolean save() {
return super.save();
}
/**
* Removes the database record matching this object's primary key content fields.
* @return True if the record has been removed successfully, false otherwise.
*/
public boolean remove() {
return driver.delete( schema.getTableName(), formatPKWhere( schema.getPrimaryKeys() ) ) > 0;
}
/**
* Inserts a record into the database containing the content of this object.
* @return True if the record has been inserted successfully, false otherwise.
*/
protected boolean insert() {
int affectedRows;
if( ( affectedRows = driver.insert( schema.getTableName(), getDatabaseFields() ) ) > 0 ) {
newObject = false;
}
return affectedRows > 0;
}
/**
* Updates the database record matching this object's primary key content fields.
* @return True if the record has been updated successfully, false otherwise.
*/
protected boolean update() {
int affectedRows;
if( ( affectedRows = driver.update( schema.getTableName(), getDatabaseFields(), formatPKWhere( schema.getPrimaryKeys() ) ) ) > 0 ) {
dirty = false;
}
return affectedRows > 0;
}
/**
* @return the userId
*/
public int getUserId() {
return userId;
}
/**
* @param userId the userId to set
*/
public void setUserId( int userId ) {
this.userId = userId;
this.dirty = true;
}
/**
* @return the isAdmin
*/
public boolean isSuperUser() {
return superUser;
}
/**
* @param isAdmin the isAdmin to set
*/
public void setSuperUser( boolean isSuperUser ) {
this.superUser = isSuperUser;
this.dirty = true;
}
/**
* @return the email
*/
public String getEmail() {
return email;
}
/**
* @param email the email to set
*/
public void setEmail( String email ) {
this.email = email;
this.dirty = true;
}
/**
* @return the password
*/
public String getPassword() {
return password;
}
/**
* @param password the password to set
*/
public void setPassword( String password ) {
this.password = password;
this.dirty = true;
}
/**
* @return the firstName
*/
public String getFirstName() {
return firstName;
}
/**
* @param firstName the firstName to set
*/
public void setFirstName( String firstName ) {
this.firstName = firstName;
this.dirty = true;
}
/**
* @return the lastName
*/
public String getLastName() {
return lastName;
}
/**
* @param lastName the lastName to set
*/
public void setLastName( String lastName ) {
this.lastName = lastName;
this.dirty = true;
}
/**
* @return the address
*/
public String getAddress() {
return address;
}
/**
* @param address the address to set
*/
public void setAddress( String address ) {
this.address = address;
this.dirty = true;
}
/**
* @return the state
*/
public String getState() {
return state;
}
/**
* @param state the state to set
*/
public void setState( String state ) {
this.state = state;
this.dirty = true;
}
/**
* @return the country
*/
public String getCountry() {
return country;
}
/**
* @param country the country to set
*/
public void setCountry( String country ) {
this.country = country;
this.dirty = true;
}
/**
* @return the postalCode
*/
public String getPostalCode() {
return postalCode;
}
/**
* @param postalCode the postalCode to set
*/
public void setPostalCode( String postalCode ) {
this.postalCode = postalCode;
this.dirty = true;
}
/**
* @return the joinDate
*/
public Date getJoinDate() {
return joinDate;
}
/**
* @param joinDate the joinDate to set
*/
public void setJoinDate( Date joinDate ) {
this.joinDate = joinDate;
this.dirty = true;
}
/**
* @return the birthDate
*/
public Date getBirthDate() {
return birthDate;
}
/**
* @param birthDate the birthDate to set
*/
public void setBirthDate(Date birthDate) {
this.birthDate = birthDate;
this.dirty = true;
}
/**
* @return the isValidated
*/
public boolean isValidated() {
return validated;
}
/**
* @param isValidated the isValidated to set
*/
public void setValidated( boolean isValidated ) {
this.validated = isValidated;
this.dirty = true;
}
/**
* @return the phone
*/
public String getPhone() {
return phone;
}
/**
* @param phone the phone to set
*/
public void setPhone( String phone ) {
this.phone = phone;
this.dirty = true;
}
/**
* @return the city
*/
public String getCity() {
return city;
}
/**
* @param city the city to set
*/
public void setCity( String city ) {
this.city = city;
this.dirty = true;
}
/**
* @return the validationCode
*/
public String getValidationCode() {
return validationCode;
}
/**
* @param validationCode the validationCode to set
*/
public void setValidationCode(String validationCode) {
this.validationCode = validationCode;
}
}