package org.freezo.admin.domain;
import java.util.HashSet;
import java.util.Set;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.Length;
public class UserForm
{
@NotNull
@Length(min = 3, max = 50)
@Pattern(regexp = "[a-z][a-z0-9]+(\\.[a-z0-9]+)*")
private String username;
@NotNull
@Length(min = 5, max = 100)
private String password;
@NotNull
@Length(min = 5, max = 100)
private String confirm;
@NotNull
@Length(min = 2, max = 50)
private String firstName;
@Length(max = 100)
private String lastName;
@Email
@Length(max = 255)
private String email;
@Length(max = 255)
private String location;
@Length(max = 255)
private String website;
@Length(max = 255)
private String bio;
private final Set<Roles> roles = new HashSet<Roles>();
@Override
public String toString()
{
final ToStringBuilder builder = new ToStringBuilder(this);
final int passwordLength = StringUtils.length(password);
return builder.append("username", username)
.append("password", String.format("* (%d characters long)", passwordLength))
.append("firstName", firstName).append("lastName", lastName).append("email", email)
.append("location", location).append("website", website).append("bio", bio)
.append("roles", roles).toString();
}
public String getUsername()
{
return username;
}
public void setUsername(final String username)
{
this.username = username;
}
public String getPassword()
{
return password;
}
public void setPassword(final String password)
{
this.password = password;
}
public String getConfirm()
{
return confirm;
}
public void setConfirm(final String confirm)
{
this.confirm = confirm;
}
public String getFirstName()
{
return firstName;
}
public void setFirstName(final String firstName)
{
this.firstName = firstName;
}
public String getLastName()
{
return lastName;
}
public void setLastName(final String lastName)
{
this.lastName = lastName;
}
public String getEmail()
{
return email;
}
public void setEmail(final String email)
{
this.email = email;
}
public String getLocation()
{
return location;
}
public void setLocation(final String location)
{
this.location = location;
}
public String getWebsite()
{
return website;
}
public void setWebsite(final String website)
{
this.website = website;
}
public String[] getRolesAsString()
{
return roles.stream().map(role -> role.name()).toArray(String[]::new);
}
public Set<Roles> getRoles()
{
return roles;
}
public void setRoles(final Set<Roles> roles)
{
this.roles.clear();
this.roles.addAll(roles);
}
public String getBio()
{
return bio;
}
public void setBio(final String bio)
{
this.bio = bio;
}
}