package org.liberty.android.fantastischmemo.entity;
import com.google.common.base.Strings;
import com.j256.ormlite.field.DataType;
import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;
import org.liberty.android.fantastischmemo.dao.SettingDaoImpl;
import org.liberty.android.fantastischmemo.utils.AMStringUtils;
import java.io.Serializable;
import java.util.Date;
import java.util.EnumSet;
@DatabaseTable(tableName = "settings", daoClass = SettingDaoImpl.class)
public class Setting implements Serializable, VersionableDomainObject {
private static final long serialVersionUID = 9204749417247448509L;
public static final String AUDIO_USER_DEFINED = "User Audio";
public static final Integer DEFAULT_SEPARATOR_COLOR = 0xFF909090;
public static final Integer DEFAULT_QA_RATIO = 50;
@DatabaseField(generatedId = true)
private Integer id = 1;
@DatabaseField(defaultValue = "default", width = 8192)
private String name = "default";
@DatabaseField(defaultValue = "default description.", width = 8192)
private String description = "default description.";
@DatabaseField(defaultValue = "24")
private Integer questionFontSize = 24;
@DatabaseField(defaultValue = "24")
private Integer answerFontSize = 24;
@DatabaseField(defaultValue = "CENTER")
private Align questionTextAlign = Align.CENTER;
@DatabaseField(defaultValue = "CENTER")
private Align answerTextAlign = Align.CENTER;
@DatabaseField(defaultValue = "SINGLE_SIDED")
private CardStyle cardStyle = CardStyle.SINGLE_SIDED;
@DatabaseField(defaultValue = "50")
private Integer qaRatio = DEFAULT_QA_RATIO;
@DatabaseField(defaultValue = "US")
private String questionAudio = "US";
@DatabaseField(defaultValue = "US")
private String answerAudio = "US";
@DatabaseField
private Integer questionTextColor = null;
@DatabaseField
private Integer answerTextColor = null;
@DatabaseField
private Integer questionBackgroundColor = null;
@DatabaseField
private Integer answerBackgroundColor = null;
@DatabaseField(defaultValue = "-7303024")
private Integer separatorColor = DEFAULT_SEPARATOR_COLOR;
/* 1 = question, 2 = answer, 4 = note */
@DatabaseField(defaultValue = "QUESTION,ANSWER,NOTE")
private String displayInHTML = "QUESTION,ANSWER,NOTE";
@DatabaseField(defaultValue = "false")
private Boolean htmlLineBreakConversion = false;
/* 1 = question, 2 = answer, 4 = note */
@DatabaseField(defaultValue = "QUESTION")
private String questionField = CardField.QUESTION.toString();
/* 1 = question, 2 = answer, 4 = note */
@DatabaseField(defaultValue = "ANSWER")
private String answerField = CardField.ANSWER.toString();
/* Empty = no font*/
@DatabaseField(defaultValue = "")
private String questionFont = "";
/* Empty = no font*/
@DatabaseField(defaultValue = "")
private String answerFont = "";
@DatabaseField(defaultValue = "")
private String questionAudioLocation = "";
@DatabaseField(defaultValue = "")
private String answerAudioLocation = "";
@DatabaseField(format="yyyy-MM-dd HH:mm:ss.SSSSSS", dataType=DataType.DATE_STRING)
private Date creationDate = new Date();
@DatabaseField(format="yyyy-MM-dd HH:mm:ss.SSSSSS", dataType=DataType.DATE_STRING)
private Date updateDate = new Date();
public Setting() {}
public static enum Align {
LEFT,
CENTER,
RIGHT,
CENTER_LEFT,
CENTER_RIGHT,
}
public static enum CardStyle {
SINGLE_SIDED,
DOUBLE_SIDED
}
public static enum CardField {
QUESTION,
ANSWER,
NOTE
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public Integer getQuestionFontSize() {
return questionFontSize;
}
public void setQuestionFontSize(Integer questionFontSize) {
this.questionFontSize = questionFontSize;
}
public Integer getAnswerFontSize() {
return answerFontSize;
}
public void setAnswerFontSize(Integer answerFontSize) {
this.answerFontSize = answerFontSize;
}
public Align getQuestionTextAlign() {
return questionTextAlign;
}
public void setQuestionTextAlign(Align questionTextAlign) {
this.questionTextAlign = questionTextAlign;
}
public Align getAnswerTextAlign() {
return answerTextAlign;
}
public void setAnswerTextAlign(Align answerTextAlign) {
this.answerTextAlign = answerTextAlign;
}
public CardStyle getCardStyle() {
return cardStyle;
}
public void setCardStyle(CardStyle cardStyle) {
this.cardStyle = cardStyle;
}
public Integer getQaRatio() {
return qaRatio;
}
public void setQaRatio(Integer qaRatio) {
this.qaRatio = qaRatio;
}
public String getQuestionAudio() {
return questionAudio;
}
public void setQuestionAudio(String questionAudio) {
this.questionAudio = questionAudio;
}
public boolean isQuestionAudioEnabled(){
return !Strings.isNullOrEmpty(getQuestionAudio());
}
public String getAnswerAudio() {
return answerAudio;
}
public void setAnswerAudio(String answerAudio) {
this.answerAudio = answerAudio;
}
public boolean isAnswerAudioEnabled(){
return !Strings.isNullOrEmpty(getAnswerAudio());
}
public Integer getQuestionTextColor() {
return this.questionTextColor;
}
public void setQuestionTextColor(Integer questionTextColor) {
this.questionTextColor = questionTextColor;
}
public Integer getAnswerTextColor() {
return answerTextColor;
}
public void setAnswerTextColor(Integer answerTextColor) {
this.answerTextColor = answerTextColor;
}
public Integer getQuestionBackgroundColor() {
return questionBackgroundColor;
}
public void setQuestionBackgroundColor(Integer questionBackgroundColor) {
this.questionBackgroundColor = questionBackgroundColor;
}
public Integer getAnswerBackgroundColor() {
return answerBackgroundColor;
}
public void setAnswerBackgroundColor(Integer answerBackgroundColor) {
this.answerBackgroundColor = answerBackgroundColor;
}
public Integer getSeparatorColor() {
return separatorColor;
}
public void setSeparatorColor(Integer separatorColor) {
this.separatorColor = separatorColor;
}
public String getDisplayInHTML() {
return displayInHTML;
}
public void setDisplayInHTML(String displayInHTML) {
this.displayInHTML = displayInHTML;
}
public EnumSet<CardField> getDisplayInHTMLEnum() {
return AMStringUtils.getEnumSetFromString(CardField.class, displayInHTML);
}
public void setDisplayInHTMLEnum(EnumSet<CardField> displayInHTMLEnum) {
displayInHTML = AMStringUtils.getStringFromEnumSet(displayInHTMLEnum);
}
public Boolean getHtmlLineBreakConversion() {
return htmlLineBreakConversion;
}
public void setHtmlLineBreakConversion(Boolean htmlLineBreakConversion) {
this.htmlLineBreakConversion = htmlLineBreakConversion;
}
public String getQuestionField() {
return questionField;
}
public void setQuestionField(String questionField) {
this.questionField = questionField;
}
public EnumSet<CardField> getQuestionFieldEnum() {
return AMStringUtils.getEnumSetFromString(CardField.class, questionField);
}
public void setQuestionFieldEnum(EnumSet<CardField> questionFieldEnum) {
questionField = AMStringUtils.getStringFromEnumSet(questionFieldEnum);
}
public String getAnswerField() {
return answerField;
}
public void setAnswerField(String answerField) {
this.answerField = answerField;
}
public void setAnswerFieldEnum(EnumSet<CardField> answerFieldEnum) {
answerField = AMStringUtils.getStringFromEnumSet(answerFieldEnum);
}
public EnumSet<CardField> getAnswerFieldEnum() {
return AMStringUtils.getEnumSetFromString(CardField.class, answerField);
}
public void setAnswerEnum(EnumSet<CardField> answerFieldEnum) {
answerField = AMStringUtils.getStringFromEnumSet(answerFieldEnum);
}
public String getQuestionFont() {
return questionFont;
}
public void setQuestionFont(String questionFont) {
this.questionFont = questionFont;
}
public String getAnswerFont() {
return answerFont;
}
public void setAnswerFont(String answerFont) {
this.answerFont = answerFont;
}
public Date getCreationDate() {
return creationDate;
}
public void setCreationDate(Date creationDate) {
this.creationDate = creationDate;
}
public Date getUpdateDate() {
return updateDate;
}
public void setUpdateDate(Date updateDate) {
this.updateDate = updateDate;
}
public String getQuestionAudioLocation() {
return questionAudioLocation;
}
public void setQuestionAudioLocation(String questionAudioLocation) {
this.questionAudioLocation = questionAudioLocation;
}
public String getAnswerAudioLocation() {
return answerAudioLocation;
}
public void setAnswerAudioLocation(String answerAudioLocation) {
this.answerAudioLocation = answerAudioLocation;
}
public boolean isDefaultColor() {
return questionTextColor == null &&
answerTextColor == null &&
questionBackgroundColor == null &&
answerBackgroundColor == null &&
separatorColor.equals(DEFAULT_SEPARATOR_COLOR);
}
}