package com.salesmanager.core.model.merchant; import java.util.ArrayList; import java.util.Date; import java.util.List; 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.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; import javax.persistence.ManyToOne; import javax.persistence.Table; import javax.persistence.TableGenerator; import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.persistence.Transient; import javax.validation.constraints.Pattern; import org.hibernate.validator.constraints.Email; import org.hibernate.validator.constraints.NotEmpty; import com.salesmanager.core.constants.MeasureUnit; import com.salesmanager.core.constants.SchemaConstant; import com.salesmanager.core.model.generic.SalesManagerEntity; import com.salesmanager.core.model.reference.country.Country; import com.salesmanager.core.model.reference.currency.Currency; import com.salesmanager.core.model.reference.language.Language; import com.salesmanager.core.model.reference.zone.Zone; import com.salesmanager.core.utils.CloneUtils; @Entity @Table(name = "MERCHANT_STORE", schema=SchemaConstant.SALESMANAGER_SCHEMA) public class MerchantStore extends SalesManagerEntity<Integer, MerchantStore> { private static final long serialVersionUID = 7671103335743647655L; public final static String DEFAULT_STORE = "DEFAULT"; @Id @Column(name = "MERCHANT_ID", unique=true, nullable=false) @TableGenerator(name = "TABLE_GEN", table = "SM_SEQUENCER", pkColumnName = "SEQ_NAME", valueColumnName = "SEQ_COUNT", pkColumnValue = "STORE_SEQ_NEXT_VAL") @GeneratedValue(strategy = GenerationType.TABLE, generator = "TABLE_GEN") private Integer id; @NotEmpty @Column(name = "STORE_NAME", nullable=false, length=100) private String storename; @NotEmpty @Pattern(regexp="^[a-zA-Z0-9_]*$") @Column(name = "STORE_CODE", nullable=false, unique=true, length=100) private String code; @NotEmpty @Column(name = "STORE_PHONE", length=50) private String storephone; @Column(name = "STORE_ADDRESS") private String storeaddress; @NotEmpty @Column(name = "STORE_CITY", length=100) private String storecity; @NotEmpty @Column(name = "STORE_POSTAL_CODE", length=15) private String storepostalcode; @ManyToOne(fetch = FetchType.LAZY, targetEntity = Country.class) @JoinColumn(name="COUNTRY_ID", nullable=false, updatable=true) private Country country; @ManyToOne(fetch = FetchType.LAZY, targetEntity = Zone.class) @JoinColumn(name="ZONE_ID", nullable=true, updatable=true) private Zone zone; @Column(name = "STORE_STATE_PROV", length=100) private String storestateprovince; @Column(name = "WEIGHTUNITCODE", length=5) private String weightunitcode = MeasureUnit.LB.name(); @Column(name = "SEIZEUNITCODE", length=5) private String seizeunitcode = MeasureUnit.IN.name(); @Temporal(TemporalType.DATE) @Column(name = "IN_BUSINESS_SINCE") private Date inBusinessSince = new Date(); @Transient private String dateBusinessSince; @ManyToOne(fetch = FetchType.LAZY, targetEntity = Language.class) @JoinColumn(name = "LANGUAGE_ID", nullable=false) private Language defaultLanguage; @NotEmpty @ManyToMany(fetch = FetchType.LAZY) @JoinTable(name = "MERCHANT_LANGUAGE") private List<Language> languages = new ArrayList<Language>(); @Column(name = "USE_CACHE") private boolean useCache = false; @Column(name="STORE_TEMPLATE", length=25) private String storeTemplate; @Column(name="INVOICE_TEMPLATE", length=25) private String invoiceTemplate; @Column(name="DOMAIN_NAME", length=80) private String domainName; @Column(name="CONTINUESHOPPINGURL", length=150) private String continueshoppingurl; @Email @NotEmpty @Column(name = "STORE_EMAIL", length=60, nullable=false) private String storeEmailAddress; @Column(name="STORE_LOGO", length=100) private String storeLogo; @ManyToOne(fetch = FetchType.LAZY, targetEntity = Currency.class) @JoinColumn(name = "CURRENCY_ID", nullable=false) private Currency currency; @Column(name = "CURRENCY_FORMAT_NATIONAL") private boolean currencyFormatNational; public MerchantStore() { } public boolean isUseCache() { return useCache; } public void setUseCache(boolean useCache) { this.useCache = useCache; } @Override public void setId(Integer id) { this.id = id; } @Override public Integer getId() { return this.id; } public String getStorename() { return storename; } public void setStorename(String storename) { this.storename = storename; } public String getStorephone() { return storephone; } public void setStorephone(String storephone) { this.storephone = storephone; } public String getStoreaddress() { return storeaddress; } public void setStoreaddress(String storeaddress) { this.storeaddress = storeaddress; } public String getStorecity() { return storecity; } public void setStorecity(String storecity) { this.storecity = storecity; } public String getStorepostalcode() { return storepostalcode; } public void setStorepostalcode(String storepostalcode) { this.storepostalcode = storepostalcode; } public Country getCountry() { return country; } public void setCountry(Country country) { this.country = country; } public Zone getZone() { return zone; } public void setZone(Zone zone) { this.zone = zone; } public String getStorestateprovince() { return storestateprovince; } public void setStorestateprovince(String storestateprovince) { this.storestateprovince = storestateprovince; } public Currency getCurrency() { return currency; } public void setCurrency(Currency currency) { this.currency = currency; } public String getWeightunitcode() { return weightunitcode; } public void setWeightunitcode(String weightunitcode) { this.weightunitcode = weightunitcode; } public String getSeizeunitcode() { return seizeunitcode; } public void setSeizeunitcode(String seizeunitcode) { this.seizeunitcode = seizeunitcode; } public Date getInBusinessSince() { return CloneUtils.clone(inBusinessSince); } public void setInBusinessSince(Date inBusinessSince) { this.inBusinessSince = CloneUtils.clone(inBusinessSince); } public Language getDefaultLanguage() { return defaultLanguage; } public void setDefaultLanguage(Language defaultLanguage) { this.defaultLanguage = defaultLanguage; } public List<Language> getLanguages() { return languages; } public void setLanguages(List<Language> languages) { this.languages = languages; } public String getStoreLogo() { return storeLogo; } public void setStoreLogo(String storeLogo) { this.storeLogo = storeLogo; } public String getStoreTemplate() { return storeTemplate; } public void setStoreTemplate(String storeTemplate) { this.storeTemplate = storeTemplate; } public String getInvoiceTemplate() { return invoiceTemplate; } public void setInvoiceTemplate(String invoiceTemplate) { this.invoiceTemplate = invoiceTemplate; } public String getDomainName() { return domainName; } public void setDomainName(String domainName) { this.domainName = domainName; } public String getContinueshoppingurl() { return continueshoppingurl; } public void setContinueshoppingurl(String continueshoppingurl) { this.continueshoppingurl = continueshoppingurl; } public String getStoreEmailAddress() { return storeEmailAddress; } public void setStoreEmailAddress(String storeEmailAddress) { this.storeEmailAddress = storeEmailAddress; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public void setDateBusinessSince(String dateBusinessSince) { this.dateBusinessSince = dateBusinessSince; } public String getDateBusinessSince() { return dateBusinessSince; } public void setCurrencyFormatNational(boolean currencyFormatNational) { this.currencyFormatNational = currencyFormatNational; } public boolean isCurrencyFormatNational() { return currencyFormatNational; } }