package org.jabref.model.entry;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import org.jabref.model.strings.StringUtil;
/**
* String constants for BibTeX entry field names
*
*/
public class FieldName {
// Character separating field names that are to be used in sequence as
// fallbacks for a single column (e.g. "author/editor" to use editor where
// author is not set):
public static final String FIELD_SEPARATOR = "/";
public static final String INTERNAL_ALL_FIELD = "all";
public static final String INTERNAL_ALL_TEXT_FIELDS_FIELD = "all-text-fields";
// Field name constants
public static final String ABSTRACT = "abstract";
public static final String ADDENDUM = "addendum";
public static final String ADDRESS = "address";
public static final String AFTERWORD = "afterword";
public static final String ANNOTE = "annote";
public static final String ANNOTATION = "annotation";
public static final String ANNOTATOR = "annotator";
public static final String ASSIGNEE = "assignee";
public static final String AUTHOR = "author";
public static final String BOOKAUTHOR = "bookauthor";
public static final String BOOKPAGINATION = "bookpagination";
public static final String BOOKSUBTITLE = "booksubtitle";
public static final String BOOKTITLE = "booktitle";
public static final String BOOKTITLEADDON = "booktitleaddon";
public static final String CHAPTER = "chapter";
public static final String COMMENTATOR = "commentator";
public static final String COMMENT = "comment";
public static final String CROSSREF = "crossref";
public static final String DATE = "date";
public static final String DAY = "day";
public static final String DAYFILED = "dayfiled";
public static final String DOI = "doi";
public static final String EDITION = "edition";
public static final String EDITOR = "editor";
public static final String EDITORA = "editora";
public static final String EDITORB = "editorb";
public static final String EDITORC = "editorc";
public static final String EDITORTYPE = "editortype";
public static final String EDITORATYPE = "editoratype";
public static final String EDITORBTYPE = "editorbtype";
public static final String EDITORCTYPE = "editorctype";
public static final String EID = "eid";
public static final String ENTRYSET = "entryset";
public static final String EPRINT = "eprint";
public static final String EPRINTCLASS = "eprintclass";
public static final String EPRINTTYPE = "eprinttype";
public static final String EVENTDATE = "eventdate";
public static final String EVENTTITLE = "eventtitle";
public static final String EVENTTITLEADDON = "eventtitleaddon";
public static final String FILE = "file";
public static final String FOREWORD = "foreword";
public static final String FOLDER = "folder";
public static final String GENDER = "gender";
public static final String HOLDER = "holder";
public static final String HOWPUBLISHED = "howpublished";
public static final String INSTITUTION = "institution";
public static final String INTRODUCTION = "introduction";
public static final String ISBN = "isbn";
public static final String ISRN = "isrn";
public static final String ISSN = "issn";
public static final String ISSUE = "issue";
public static final String ISSUETITLE = "issuetitle";
public static final String ISSUESUBTITLE = "issuesubtitle";
public static final String JOURNAL = "journal";
public static final String JOURNALSUBTITLE = "journalsubtitle";
public static final String JOURNALTITLE = "journaltitle";
public static final String KEY = "key";
public static final String KEYWORDS = "keywords";
public static final String LANGUAGE = "language";
public static final String LOCATION = "location";
public static final String MAINSUBTITLE = "mainsubtitle";
public static final String MAINTITLE = "maintitle";
public static final String MAINTITLEADDON = "maintitleaddon";
public static final String MONTH = "month";
public static final String MONTHFILED = "monthfiled";
public static final String NAMEADDON = "nameaddon";
public static final String NATIONALITY = "nationality";
public static final String NOTE = "note";
public static final String NUMBER = "number";
public static final String ORGANIZATION = "organization";
public static final String ORIGDATE = "origdate";
public static final String ORIGLANGUAGE = "origlanguage";
public static final String PAGES = "pages";
public static final String PAGETOTAL = "pagetotal";
public static final String PAGINATION = "pagination";
public static final String PART = "part";
public static final String PDF = "pdf";
public static final String PMID = "pmid";
public static final String PS = "ps";
public static final String PUBLISHER = "publisher";
public static final String PUBSTATE = "pubstate";
public static final String RELATED = "related";
public static final String REPORTNO = "reportno";
public static final String REVIEW = "review";
public static final String REVISION = "revision";
public static final String SCHOOL = "school";
public static final String SERIES = "series";
public static final String SHORTAUTHOR = "shortauthor";
public static final String SHORTEDITOR = "shorteditor";
public static final String SORTNAME = "sortname";
public static final String SUBTITLE = "subtitle";
public static final String TITLE = "title";
public static final String TITLEADDON = "titleaddon";
public static final String TRANSLATOR = "translator";
public static final String TYPE = "type";
public static final String URI = "uri";
public static final String URL = "url";
public static final String URLDATE = "urldate";
public static final String VENUE = "venue";
public static final String VERSION = "version";
public static final String VOLUME = "volume";
public static final String VOLUMES = "volumes";
public static final String YEAR = "year";
public static final String YEARFILED = "yearfiled";
public static final String MR_NUMBER = "mrnumber";
// IEEE BSTctl fields
public static final String CTLALT_STRETCH_FACTOR = "ctlalt_stretch_factor";
public static final String CTLDASH_REPEATED_NAMES = "ctldash_repeated_names";
public static final String CTLMAX_NAMES_FORCED_ETAL = "ctlmax_names_forced_etal";
public static final String CTLNAME_FORMAT_STRING = "ctlname_format_string";
public static final String CTLNAME_LATEX_CMD = "ctlname_latex_cmd";
public static final String CTLNAME_URL_PREFIX = "ctlname_url_prefix";
public static final String CTLNAMES_SHOW_ETAL = "ctlnames_show_etal";
public static final String CTLUSE_ALT_SPACING = "ctluse_alt_spacing";
public static final String CTLUSE_ARTICLE_NUMBER = "ctluse_article_number";
public static final String CTLUSE_FORCED_ETAL = "ctluse_forced_etal";
public static final String CTLUSE_PAPER = "ctluse_paper";
public static final String CTLUSE_URL = "ctluse_url";
// JabRef internal field names
public static final String OWNER = "owner";
public static final String TIMESTAMP = "timestamp"; // Not the actual field name, but the default value
public static final String NUMBER_COL = "#";
public static final String GROUPS = "groups";
public static final String SEARCH_INTERNAL = "__search";
public static final String GROUPSEARCH_INTERNAL = "__groupsearch";
public static final String MARKED_INTERNAL = "__markedentry";
// Map to hold alternative display names
private static final Map<String, String> displayNames = new HashMap<>();
private FieldName() {
}
public static String orFields(String... fields) {
return String.join(FieldName.FIELD_SEPARATOR, fields);
}
public static String orFields(List<String> fields) {
return String.join(FieldName.FIELD_SEPARATOR, fields);
}
static {
displayNames.put(FieldName.DOI, "DOI");
displayNames.put(FieldName.ISBN, "ISBN");
displayNames.put(FieldName.ISRN, "ISRN");
displayNames.put(FieldName.ISSN, "ISSN");
displayNames.put(FieldName.PMID, "PMID");
displayNames.put(FieldName.PS, "PS");
displayNames.put(FieldName.PDF, "PDF");
displayNames.put(FieldName.URI, "URI");
displayNames.put(FieldName.URL, "URL");
}
/**
* @param field - field to get the display version for
* @return A version of the field name more suitable for display
*/
public static String getDisplayName(String field) {
String lowercaseField = field.toLowerCase(Locale.ROOT);
if (displayNames.containsKey(lowercaseField)) {
return displayNames.get(lowercaseField);
}
return StringUtil.capitalizeFirst(field);
}
public static List<String> getNotTextFieldNames() {
return Arrays.asList(FieldName.DOI, FieldName.FILE, FieldName.URL, FieldName.URI, FieldName.ISBN, FieldName.ISSN, FieldName.MONTH, FieldName.DATE, FieldName.YEAR);
}
public static List<String> getIdentifierFieldNames() {
return Arrays.asList(FieldName.DOI, FieldName.EPRINT, FieldName.PMID);
}
}