CostLineTemplateValue.java

package com.tradecloud.domain.costing.clean;

import com.tradecloud.domain.costing.CostLineTemplate;
import com.tradecloud.domain.model.Money;
import org.hibernate.annotations.ForeignKey;

import javax.persistence.Embeddable;
import javax.persistence.Embedded;
import javax.persistence.ManyToOne;
import javax.validation.constraints.NotNull;
import java.io.Serializable;

/**
 * This is a simple class to store a value for a costline.
 *
 * @author jon
 */
@Embeddable
public class CostLineTemplateValue implements Serializable, Comparable<CostLineTemplateValue> {

    @NotNull
    @ForeignKey(name = "fk_costlinetemplate")
    @ManyToOne(optional = false)
    private CostLineTemplate costLineTemplate;
    // Can be null. For example, if a rate is not found
    @Embedded
    private Money amount;

    public CostLineTemplate getCostLineTemplate() {
        return costLineTemplate;
    }

    public void setCostLineTemplate(CostLineTemplate costLineTemplate) {
        this.costLineTemplate = costLineTemplate;
    }

    public Money getAmount() {
        return amount;
    }

    public void setAmount(Money amount) {
        this.amount = amount;
    }

    @Override
    public int compareTo(CostLineTemplateValue o) {
        String orderOne = getCostLineTemplate().getCostGroup().getHumanValue() + "-" + getCostLineTemplate().getName();
        String orderTwo = o.getCostLineTemplate().getCostGroup().getHumanValue() + o.getCostLineTemplate().getName();
        return orderOne.compareTo(orderTwo);
    }

    public String getSortedName() {
        return getCostLineTemplate().getCostGroup().getHumanValue() + "-" + getCostLineTemplate().getName();
    }
}