CostGroup.java

package com.tradecloud.domain.costing;

import org.apache.commons.lang.WordUtils;

import javax.xml.bind.annotation.XmlEnum;
import javax.xml.bind.annotation.XmlType;

/**
 *
 */
@XmlType(name = "CostGroup")
@XmlEnum
public enum CostGroup implements Comparable<CostGroup> {

    BASE_SUPPLY("BASE_SUPPLY", true), SUPPLY("SUPPLY", true), EXWORKS("SUPPLY ADDITIONAL COSTS", true), AGENT("AGENT", false),
    FORWARDING("FORWARDING", true), FREIGHT("FREIGHT", false),
    CLEARING("CLEARING", false), CUSTOMS("CUSTOMS", false), FINANCE("FINANCE", false), INTERNAL_PROVISIONS("INTERNAL PROVISIONS", false),
    MARGIN("MARGIN", false), REVENUE("REVENUE", false), TRADE_FINANCE("TRADE FINANCE", false), EXPORT("EXPORT", false);

    private final String value;
    /**
     * Indicate whether this is a direct or indirect cost group.
     */
    private final boolean directCost;

    CostGroup(String v, boolean d) {
        value = v;
        directCost = d;
    }

    public String value() {
        return value;
    }

    public String getHumanValue() {
        return WordUtils.capitalize(value);
    }

    //changes e.g. INTERNAL PROVISIONS to Internal Provisions
    public String getDisplayValue() {
        String[] split = value.split(" ");
        String toReturn = "";
        for (int i = 0; i < split.length; i++) {
            if (i != 0)
                toReturn += " ";
            String current = split[i];
            toReturn = toReturn + current.charAt(0) + current.substring(1).toLowerCase();
        }
        return toReturn;
    }

    // This should be worked out from the costline.payerType
    @Deprecated
    public boolean isDirectCost() {
        return directCost;
    }
}