Vat.java

package com.tradecloud.domain;

import com.tradecloud.common.base.PersistenceBase;
import com.tradecloud.domain.base.utils.MathUtils;

import javax.persistence.*;
import java.math.BigDecimal;
import java.util.Date;
import java.util.Objects;

/**
 * Created by ds on 2017/06/07.
 */
@Entity
@Table(name = "vat", uniqueConstraints = {
        @UniqueConstraint(columnNames = {"effectiveDate"})})
public class Vat extends PersistenceBase implements Comparable<Vat> {

    private BigDecimal vatRate;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(unique = true, name = "effectiveDate")
    private Date effectiveDate;

    public Vat() {
    }

    public Vat(BigDecimal vatRate, Date effectiveDate) {
        this.vatRate = vatRate;
        this.effectiveDate = effectiveDate;
    }

    public Date getEffectiveDate() {
        return effectiveDate;
    }

    public void setEffectiveDate(Date effectiveDate) {
        this.effectiveDate = effectiveDate;
    }

    public BigDecimal getVatRate() {
        return vatRate != null ? vatRate : BigDecimal.ZERO.setScale(MathUtils.SCALE_DISPLAY,
                MathUtils.ROUNDING_MODE);
    }

    public void setVatRate(BigDecimal vatRate) {
        this.vatRate = vatRate;
    }

    @Override
    public int compareTo(Vat o) {
        return effectiveDate.compareTo(o.effectiveDate);
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        if (!super.equals(o)) return false;
        Vat vat = (Vat) o;
        return effectiveDate.equals(vat.effectiveDate);
    }

    @Override
    public int hashCode() {
        return Objects.hash(super.hashCode(), effectiveDate);
    }
}