Discount.java 4.56 KB
package fi.insomnia.bortal.model;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.Lob;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
 * 
 */
@Entity
@Table(name = "discounts")
public class Discount extends GenericEntity {
    private static final long serialVersionUID = 1L;

    private static final String EVENT_ID = "event_id";

    @ManyToOne()
    @JoinColumn(name = EVENT_ID, nullable = false)
    private LanEvent event;

    @Column(name = "percentage", nullable = false, precision = 9, scale = 6)
    private BigDecimal percentage = BigDecimal.ZERO;

    @Column(name = "code")
    private String code;

    @Lob
    @Column(name = "details")
    private String details;

    @Column(name = "shortdesc")
    private String shortdesc;

    @Column(name = "amount_min", nullable = false, precision = 24, scale = 4)
    private BigDecimal amountMin = BigDecimal.ZERO;

    @Column(name = "amount_max", nullable = false, precision = 24, scale = 4)
    private BigDecimal amountMax = BigDecimal.ZERO;

    @Column(name = "active", nullable = false)
    private boolean active = false;

    @Column(name = "max_num", nullable = false, precision = 24, scale = 4)
    private BigDecimal maxNum = BigDecimal.ZERO;

    @Column(name = "per_user", nullable = false, precision = 24, scale = 4)
    private BigDecimal perUser = BigDecimal.ZERO;

    @Column(name = "total_count", nullable = false, precision = 24, scale = 4)
    private BigDecimal totalCount = BigDecimal.ZERO;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "discount")
    private List<DiscountInstance> discountInstances;

    @JoinColumn(name = "role_id", referencedColumnName = "id")
    @ManyToOne()
    private Role role;

    @JoinColumn(name = "product_id", referencedColumnName = "id", nullable = false, updatable = false)
    @ManyToMany(mappedBy = "discounts")
    private List<Product> products;

    public Discount() {
        super();
    }

    public Discount(Product product) {
        super();
        this.event = product.getEvent();
        this.products = new ArrayList<Product>();
        products.add(product);
    }

    public BigDecimal getAmountMin() {
        return amountMin;
    }

    public void setAmountMin(BigDecimal amountMin) {
        this.amountMin = amountMin;
    }

    public BigDecimal getAmountMax() {
        return amountMax;
    }

    public void setAmountMax(BigDecimal amountMax) {
        this.amountMax = amountMax;
    }

    public BigDecimal getMaxNum() {
        return maxNum;
    }

    public void setMaxNum(BigDecimal maxNum) {
        this.maxNum = maxNum;
    }

    public BigDecimal getPerUser() {
        return perUser;
    }

    public void setPerUser(BigDecimal perUser) {
        this.perUser = perUser;
    }

    public boolean isActive() {
        return active;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getDetails() {
        return details;
    }

    public void setDetails(String details) {
        this.details = details;
    }

    public void setActive(boolean active) {
        this.active = active;
    }

    public List<DiscountInstance> getDiscountInstances() {
        return discountInstances;
    }

    public void setDiscountInstances(List<DiscountInstance> discountInstanceList) {
        this.discountInstances = discountInstanceList;
    }

    public void setRole(Role role) {
        this.role = role;
    }

    public Role getRole() {
        return role;
    }

    public void setPercentage(BigDecimal percentage) {
        this.percentage = percentage;
    }

    public BigDecimal getPercentage() {
        return percentage;
    }

    public void setShortdesc(String shortdesc) {
        this.shortdesc = shortdesc;
    }

    public String getShortdesc() {
        return shortdesc;
    }

    public void setTotalCount(BigDecimal totalCount) {
        this.totalCount = totalCount;
    }

    public BigDecimal getTotalCount() {
        return totalCount;
    }

    public void setProducts(List<Product> products) {
        this.products = products;
    }

    public List<Product> getProducts() {
        return products;
    }

    public LanEvent getEvent() {
        return event;
    }

    public void setEvent(LanEvent event) {
        this.event = event;
    }

}