/******************************************************************************* * Copyright (c) 2014 antoniomariasanchez at gmail.com. All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 which accompanies this distribution, and is * available at http://www.gnu.org/licenses/gpl.html * * Contributors: antoniomaria - initial API and implementation ******************************************************************************/ package net.sf.gazpachoquest.dto; import java.util.HashMap; import java.util.Map; import net.sf.gazpachoquest.dto.support.AbstractAuditableDTO; import net.sf.gazpachoquest.types.Gender; import net.sf.gazpachoquest.types.Language; @SuppressWarnings("serial") public class UserDTO extends AbstractAuditableDTO { private String email; private String givenNames; private String surname; private Language preferredLanguage; private Gender gender; private String username; private String apiKey; private String password; private final Map<String, String> attributes = new HashMap<String, String>(); public UserDTO() { super(); } public String getEmail() { return email; } public String getGivenNames() { return givenNames; } public String getSurname() { return surname; } public void setEmail(final String email) { this.email = email; } public void setGivenNames(final String givenNames) { this.givenNames = givenNames; } public void setSurname(final String surname) { this.surname = surname; } public Language getPreferredLanguage() { return preferredLanguage; } public void setPreferredLanguage(Language preferredLanguage) { this.preferredLanguage = preferredLanguage; } public Gender getGender() { return gender; } public void setGender(Gender gender) { this.gender = gender; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public Map<String, String> getAttributes() { return attributes; } public void setAttribute(String name, String value) { attributes.put(name, value); } public String getApiKey() { return apiKey; } public void setApiKey(String apiKey) { this.apiKey = apiKey; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public static Builder with() { return new Builder(); } public static class Builder { private Integer id; private String email; private String givenNames; private String surname; private String apiKey; private Language preferredLanguage; private Gender gender; private String username; private String password = ""; public Builder email(String email) { this.email = email; return this; } public Builder id(Integer id) { this.id = id; return this; } public Builder givenNames(String givenNames) { this.givenNames = givenNames; return this; } public Builder surname(String surname) { this.surname = surname; return this; } public Builder password(String password) { this.password = password; return this; } public Builder apiKey(String apiKey) { this.apiKey = apiKey; return this; } public Builder preferredLanguage(Language preferredLanguage) { this.preferredLanguage = preferredLanguage; return this; } public Builder gender(Gender gender) { this.gender = gender; return this; } public Builder username(String username) { this.username = username; return this; } public UserDTO build() { UserDTO userDTO = new UserDTO(); userDTO.setId(id); userDTO.email = email; userDTO.givenNames = givenNames; userDTO.password = password; userDTO.preferredLanguage = preferredLanguage; userDTO.gender = gender; userDTO.username = username; userDTO.surname = surname; userDTO.apiKey = apiKey; return userDTO; } } }