RateSourceConfig.java

package com.tradecloud.domain.configuration;

import com.tradecloud.common.base.PersistenceBase;
import com.tradecloud.domain.costing.CostGroup;
import com.tradecloud.domain.rate.RateSourceType;

import javax.persistence.*;
import javax.validation.constraints.NotNull;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;

@Entity
@Table(name = "RateSourceConfig", uniqueConstraints = {@UniqueConstraint(columnNames = {"costGroup"})})
@Access(AccessType.FIELD)
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "RateSourceConfig")
public class RateSourceConfig extends PersistenceBase implements Comparable<RateSourceConfig> {

    @Enumerated(value = EnumType.STRING)
    @XmlAttribute
    @NotNull
    private CostGroup costGroup;

    @Enumerated(value = EnumType.STRING)
    @XmlAttribute
    @NotNull
    private RateSourceType clcRateSource;

    /**
     * The source of the ALC rate. Defaults to
     * {@link RateSourceType#TREASURY_LINKED_RATE}.
     */
    @Enumerated(value = EnumType.STRING)
    @XmlAttribute
    @NotNull
    private RateSourceType alcRateSource;

    public CostGroup getCostGroup() {
        return costGroup;
    }

    public void setCostGroup(CostGroup costGroup) {
        this.costGroup = costGroup;
    }

    public RateSourceType getClcRateSource() {
        return clcRateSource;
    }

    public void setClcRateSource(RateSourceType clcRateSource) {
        this.clcRateSource = clcRateSource;
    }

    public RateSourceType getAlcRateSource() {
        return alcRateSource;
    }

    public void setAlcRateSource(RateSourceType alcRateSource) {
        this.alcRateSource = alcRateSource;
    }

    @Override
    public int compareTo(RateSourceConfig o) {
        return costGroup.compareTo(o.getCostGroup());
    }
}