SortBy.java

package com.tradecloud.domain.model.fec;

import java.util.HashMap;
import java.util.Map;

public enum SortBy {

    CURRENCY("amount.currency", "amount_currency", "Currency"), MATURITY_DATE("maturityDate", "maturity_date", "Maturity Date"), DEAL_DATE(
            "dealDate", "deal_date", "Deal Date"), BANK_REFERENCE("bankReference", "bank_reference", "Bank Reference"), BANK_DEALER(
            "bankDetails.dealer", "bank_details_dealer", "Bank Dealer");

    private String propertyName;
    private String dbFieldName;
    private String description;
    private static final Map<String, SortBy> lookup = new HashMap<String, SortBy>();

    static {
        for (SortBy sortBy : SortBy.values())
            lookup.put(sortBy.propertyName, sortBy);
    }

    public static String toXML() {
        StringBuilder sortByXML = new StringBuilder();
        sortByXML.append("<sortbys>");
        for (SortBy sortBy : lookup.values()) {
            sortByXML.append("<sortby>");
            sortByXML.append("<code>").append(sortBy.getPropertyName()).append("</code>");
            sortByXML.append("<name>").append(sortBy.getDescription()).append("</name>");
            sortByXML.append("</sortby>");

        }
        sortByXML.append("</sortbys>");
        return sortByXML.toString();
    }

    SortBy(String propertyName, String dbFieldName, String description) {
        this.propertyName = propertyName;
        this.dbFieldName = dbFieldName;
        this.description = description;
    }

    public static SortBy get(String propertyName) {
        return lookup.get(propertyName);
    }

    public String getPropertyName() {
        return propertyName;
    }

    public String getDbFieldName() {
        return dbFieldName;
    }

    public String getDescription() {
        return description;
    }
}