package org.jabref.model.database;

import java.util.Locale;

/// An enum which contains the possible {@link BibDatabase} Modes.
/// Possible are BibTeX and biblatex.
public enum BibDatabaseMode {
    BIBTEX,
    BIBLATEX;

    /// @return the name of the current mode as String
    public String getFormattedName() {
        if (this == BIBTEX) {
            return "BibTeX";
        } else {
            return "biblatex";
        }
    }

    /// Returns the opposite mode of the current mode as {@link BibDatabaseMode}.
    ///
    /// @return biblatex if the current mode is BIBTEX, BibTeX else
    public BibDatabaseMode getOppositeMode() {
        if (this == BIBTEX) {
            return BIBLATEX;
        } else {
            return BIBTEX;
        }
    }

    /// Returns the {@link BibDatabaseMode} that equals the given string. The use of capital and small letters
    /// in the string doesn't matter.If neither "bibtex" nor "biblatex" is the given string, then an
    /// {@link IllegalArgumentException} will be thrown.
    ///
    /// @return BIBTEX, if the string is bibtex<br>
    /// BIBLATEX, if the string is biblatex<br>
    public static BibDatabaseMode parse(String data) {
        return BibDatabaseMode.valueOf(data.toUpperCase(Locale.ENGLISH));
    }

    /// @return The current mode as String in lowercase
    public String getAsString() {
        return getFormattedName().toLowerCase(Locale.ENGLISH);
    }
}
