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); } }