package com.springone.myrestaurants.domain;
import java.util.Date;
import java.util.List;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Version;
import org.codehaus.jackson.annotate.JsonIgnore;
import org.codehaus.jackson.annotate.JsonProperty;
import org.springframework.format.annotation.DateTimeFormat;
//@Entity
///@Table(name = "user_account")
public class UserAccount {
private String userName;
private String firstName;
private String lastName;
private String revision;
private String type;
@Temporal(TemporalType.TIMESTAMP)
@DateTimeFormat(style = "S-")
private Date birthDate;
//@ManyToMany(cascade = CascadeType.ALL)
//private Set<Restaurant> favorites = new java.util.HashSet<Restaurant>();
private List<String> favorites;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private Long id;
@Version
@Column(name = "version")
private Integer version;
@JsonIgnore
public Long getId() {
return this.id;
}
@JsonIgnore
public void setId(Long id) {
this.id = id;
}
@JsonProperty("_rev")
public String getRevision() {
return revision;
}
@JsonProperty("_rev")
public void setRevision(String s) {
// no empty strings thanks
if (s != null && s.isEmpty()) {
return;
}
this.revision = s;
}
@JsonProperty("Version")
public Integer getVersion() {
return this.version;
}
@JsonProperty("Version")
public void setVersion(Integer version) {
this.version = version;
}
@JsonProperty("_id")
public String getUserName() {
return this.userName;
}
@JsonProperty("_id")
public void setUserName(String userName) {
this.userName = userName;
}
@JsonProperty("FirstName")
public String getFirstName() {
return this.firstName;
}
@JsonProperty("FirstName")
public void setFirstName(String firstName) {
this.firstName = firstName;
}
@JsonProperty("LastName")
public String getLastName() {
return this.lastName;
}
@JsonProperty("LastName")
public void setLastName(String lastName) {
this.lastName = lastName;
}
@JsonProperty("BirthDate")
public Date getBirthDate() {
return this.birthDate;
}
@JsonProperty("BirthDate")
public void setBirthDate(Date birthDate) {
this.birthDate = birthDate;
}
@JsonProperty("Favorites")
public List<String> getFavorites() {
return favorites;
}
@JsonProperty("Favorites")
public void setFavorites(List<String> favorites) {
this.favorites = favorites;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("Id: ").append(getUserName()).append(", ");
sb.append("Revision: ").append(getRevision()).append(", ");
sb.append("UserName: ").append(getUserName()).append(", ");
sb.append("FirstName: ").append(getFirstName()).append(", ");
sb.append("LastName: ").append(getLastName()).append(", ");
sb.append("BirthDate: ").append(getBirthDate()).append(", ");
sb.append("Favorites: ").append(getFavorites() == null ? "null" : getFavorites().size());
return sb.toString();
}
}