package fr.openwide.core.basicapp.core.business.common.model.embeddable; import java.util.Collection; import java.util.Locale; import javax.persistence.Column; import javax.persistence.MappedSuperclass; import org.bindgen.Bindable; import org.hibernate.search.annotations.Analyzer; import org.hibernate.search.annotations.Field; import org.hibernate.search.annotations.Fields; import org.hibernate.search.annotations.SortableField; import fr.openwide.core.basicapp.core.business.common.util.BasicApplicationLocale; import fr.openwide.core.jpa.more.business.localization.model.AbstractLocalizedText; import fr.openwide.core.jpa.search.util.HibernateSearchAnalyzer; @MappedSuperclass @Bindable public class LocalizedText extends AbstractLocalizedText { private static final long serialVersionUID = -1225434649910707113L; public static final String FR_AUTOCOMPLETE = "frAutocomplete"; public static final String EN_AUTOCOMPLETE = "enAutocomplete"; public static final String FR_SORT = "frSort"; public static final String EN_SORT = "enSort"; @Column @Fields({ @Field(analyzer = @Analyzer(definition = HibernateSearchAnalyzer.TEXT_STEMMING)), @Field(name = FR_SORT, analyzer = @Analyzer(definition = HibernateSearchAnalyzer.TEXT_SORT)), @Field(name = FR_AUTOCOMPLETE, analyzer = @Analyzer(definition = HibernateSearchAnalyzer.TEXT)) }) @SortableField(forField = FR_SORT) private String fr; @Column @Fields({ @Field(analyzer = @Analyzer(definition = HibernateSearchAnalyzer.TEXT_STEMMING)), @Field(name = EN_SORT, analyzer = @Analyzer(definition = HibernateSearchAnalyzer.TEXT_SORT)), @Field(name = EN_AUTOCOMPLETE, analyzer = @Analyzer(definition = HibernateSearchAnalyzer.TEXT)) }) @SortableField(forField = EN_SORT) private String en; public LocalizedText() { super(); } public LocalizedText(LocalizedText reference) { setFr(reference.getFr()); setEn(reference.getEn()); } @Override public Collection<Locale> getSupportedLocales() { return BasicApplicationLocale.ALL; } public String getFr() { return fr; } public void setFr(String fr) { this.fr = fr; } public String getEn() { return en; } public void setEn(String en) { this.en = en; } @Override public String get(Locale locale) { if (locale == null) { throw new IllegalArgumentException("Locale should not be null"); } if (BasicApplicationLocale.FRENCH.getLanguage().equals(locale.getLanguage())) { return getFr(); } else if (BasicApplicationLocale.ENGLISH.getLanguage().equals(locale.getLanguage())) { return getEn(); } else { throw new IllegalArgumentException(String.format("Unknown locale: %s", locale)); } } @Override public void set(Locale locale, String text) { if (locale == null) { throw new IllegalArgumentException("Locale should not be null"); } if (BasicApplicationLocale.FRENCH.getLanguage().equals(locale.getLanguage())) { setFr(text); } else if (BasicApplicationLocale.ENGLISH.getLanguage().equals(locale.getLanguage())) { setEn(text); } else { throw new IllegalArgumentException(String.format("Unknown locale: %s", locale)); } } }