package be.redtree.model;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Locale;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Transient;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import be.redtree.library.Library;
import com.google.gson.Gson;
@Entity(name = "webform_value")
@Table(name = "webform_value")
public class SingleValue implements Serializable {
private static Log sLog = LogFactory.getLog(SingleValue.class);
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(unique = true, nullable = false)
private Long id;
@Column
private String name;
@Column
private Integer weight;
@Column(columnDefinition = "TEXT")
private String content;
@Column
private Boolean enabled;
@ManyToOne(cascade = {}, fetch = FetchType.LAZY)
public Field field;
@Transient
private Locale locale;
public SingleValue() {
}
public SingleValue(String name, Integer weight, String content, Boolean enabled, Field field) {
this.name = name;
this.weight = weight;
this.content = content;
this.enabled = enabled;
this.field = field;
}
public String getName() {
return name;
}
public Boolean getEnabled() {
return enabled;
}
public void setEnabled(Boolean enabled) {
this.enabled = enabled;
}
public void setName(String name) {
this.name = name;
}
public Integer getWeight() {
return weight;
}
public void setWeight(Integer weight) {
this.weight = weight;
}
public Field getField() {
return field;
}
public void setField(Field field) {
this.field = field;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Transient
public Locale getLocale() {
this.locale = Library.getCurrentLocale(locale);
return locale;
}
@Transient
public void setLocale(Locale locale) {
this.locale = locale;
}
// Content
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
// Locale Content
public String getLocaleContent() {
return Library.getLocaleVersion(getLocale(), this.content);
}
public void setLocaleContent(String content) {
String json = this.content;
HashMap<String, String> values = Library.getJsonMapping(json);
values.put(getLocale().toString(), content);
this.content = new Gson().toJson(values);
}
}