package be.msyben.vinylManager.tools.internalEntities;

import be.msyben.vinylManager.properties.Language;

/**
 * Enumeration des possibilité de tri pour l'album.
 * @author Mathieu Syben
 */
public enum TreeSortColumnEnum {

    vide(0, "", ""),
    artiste(1, "name.artiste", "artiste"),
    annee(2, "name.annee", "annee"),
    cote(3, "name.cote", "cote"),
    editeur(4, "name.editeur", "editeur"),
    genre(5, "name.genre", "genre"),
    anneeParution(6,"name.annee.parution","anneeParution"),
    vitesse(7, "name.vitesse", "vitesseForTree"),
    taille(8, "name.taille", "tailleForTree"),
    compositeur(9, "name.compositeur.full", "compositeur"),
    chef(10, "name.chef", "chef"),
    orchestre(11, "name.orchestre", "orchestre"),
    support(12, "name.support", "supportForSorting"),
    anneeAchat(13, "name.annee.achat", "achatAnnee"),
    moisAchat(14, "name.mois.achat", "achatMois"),
    canaux(15, "name.canaux", "canauxForTree"),
    parolier(16, "name.parolier", "parolier"),
    location(17, "name.location", "location");
    private String name;
    private String field;
    private int id;

    /**
     * Constructeur.
     * @param id identifiant
     * @param name nom de la propriété pour la langue.
     * @param field le champs à récupérer dans l'objet album.
     */
    private TreeSortColumnEnum(int id, String name, String field) {
        this.name = name;
        this.field = field;
        this.id = id;
    }

    /**
     * Getter pour field
     * @return field
     */
    public String getField() {
        return field;
    }

    /**
     * Getter pour id
     * @return id
     */
    public int getId() {
        return id;
    }

    /**
     * Getter pour name
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * Récupère l'objet associé à l'id.
     * @param id l'id.
     * @return l'objet associé. vide par défaut.
     */
    public static TreeSortColumnEnum getTreeSortColumnEnum(Integer id) {
        if (id == null) {
            return vide;
        }
        for (TreeSortColumnEnum s : TreeSortColumnEnum.values()) {
            if (s.getId() == id.intValue()) {
                return s;
            }
        }
        return vide;
    }

    @Override
    public String toString() {
        return Language.getInstance().get(name);
    }
}
