package org.multibit.mbm.core.model;
import com.google.common.collect.Sets;
import javax.persistence.*;
import java.util.Set;
/**
* <p>DTO to provide the following to {@link UserField}:<br>
* <ul>
* <li>Placeholder for a set of localised text fields</li>
* </ul>
* </p>
*/
@Entity
@Table(name = "user_field_details")
public class UserFieldDetail {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false)
private Long id = null;
@Embedded
private LocalisedText primaryDetail;
// This mirroring of the map key is essential to make the queries work
@Column(name = "user_detail", nullable = false)
@Enumerated(EnumType.ORDINAL)
private UserField userField;
@ElementCollection
@CollectionTable(
name = "user_field_secondary_details",
joinColumns = @JoinColumn(name = "user_field_id"
))
@Column(name = "user_field")
private Set<LocalisedText> secondaryDetails = Sets.newLinkedHashSet();
/**
* @return The internal ID
*/
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
/**
* @return The {@link UserField} used as the key
*/
public UserField getUserField() {
return userField;
}
public void setUserField(UserField userField) {
this.userField = userField;
}
/**
* @return The primary user field localised text (default locale)
*/
public LocalisedText getPrimaryDetail() {
return primaryDetail;
}
public void setPrimaryDetail(LocalisedText primaryDetail) {
this.primaryDetail = primaryDetail;
}
/**
* @return The secondary user fields' localised text (additional locales)
*/
public Set<LocalisedText> getSecondaryDetails() {
return secondaryDetails;
}
public void setSecondaryDetails(Set<LocalisedText> secondaryDetails) {
this.secondaryDetails = secondaryDetails;
}
}