package org.jabref.model.entry; import java.util.Arrays; import java.util.List; import java.util.Optional; /** * This class represents all supported IEEETran entry types. * * @see http://ctan.sharelatex.com/tex-archive/macros/latex/contrib/IEEEtran/bibtex/IEEEtran_bst_HOWTO.pdf * <p> * Electronic, IEEETranBSTCTL, Periodical, Patent, Standard */ public class IEEETranEntryTypes { /** * Electronic entry type for internet references * <p> * Required fields: * Optional fields: author, month, year, title, language, howpublished, organization, address, note, url */ public static final EntryType ELECTRONIC = new BibtexEntryType() { { addAllOptional(FieldName.AUTHOR, FieldName.MONTH, FieldName.YEAR, FieldName.TITLE, FieldName.LANGUAGE, FieldName.HOWPUBLISHED, FieldName.ORGANIZATION, FieldName.ADDRESS, FieldName.NOTE, FieldName.URL); } @Override public String getName() { return "Electronic"; } }; /** * Special entry type that can be used to externally control some aspects of the bibliography style. */ public static final EntryType IEEETRANBSTCTL = new BibtexEntryType() { { addAllOptional(FieldName.CTLUSE_ARTICLE_NUMBER, FieldName.CTLUSE_PAPER, FieldName.CTLUSE_FORCED_ETAL, FieldName.CTLUSE_URL, FieldName.CTLMAX_NAMES_FORCED_ETAL, FieldName.CTLNAMES_SHOW_ETAL, FieldName.CTLUSE_ALT_SPACING, FieldName.CTLALT_STRETCH_FACTOR, FieldName.CTLDASH_REPEATED_NAMES, FieldName.CTLNAME_FORMAT_STRING, FieldName.CTLNAME_LATEX_CMD, FieldName.CTLNAME_URL_PREFIX); } @Override public String getName() { return "IEEEtranBSTCTL"; } }; /** * The periodical entry type is used for journals and magazines. * <p> * Required fields: title, year * Optional fields: editor, language, series, volume, number, organization, month, note, url */ public static final EntryType PERIODICAL = new BibtexEntryType() { { addAllRequired(FieldName.TITLE, FieldName.YEAR); addAllOptional(FieldName.EDITOR, FieldName.LANGUAGE, FieldName.SERIES, FieldName.VOLUME, FieldName.NUMBER, FieldName.ORGANIZATION, FieldName.MONTH, FieldName.NOTE, FieldName.URL); } @Override public String getName() { return "Periodical"; } }; /** * Entry type for patents. * <p> * Required fields: nationality, number, year or yearfiled * Optional fields: author, title, language, assignee, address, type, number, day, dayfiled, month, monthfiled, note, url */ public static final EntryType PATENT = new BibtexEntryType() { { addAllRequired(FieldName.NATIONALITY, FieldName.NUMBER, FieldName.orFields(FieldName.YEAR, FieldName.YEARFILED)); addAllOptional(FieldName.AUTHOR, FieldName.TITLE, FieldName.LANGUAGE, FieldName.ASSIGNEE, FieldName.ADDRESS, FieldName.TYPE, FieldName.NUMBER, FieldName.DAY, FieldName.DAYFILED, FieldName.MONTH, FieldName.MONTHFILED, FieldName.NOTE, FieldName.URL); } @Override public String getName() { return "Patent"; } }; /** * The standard entry type is used for proposed or formally published standards. * <p> * Required fields: title, organization or institution * Optional fields: author, language, howpublished, type, number, revision, address, month, year, note, url */ public static final EntryType STANDARD = new BibtexEntryType() { { addAllRequired(FieldName.TITLE, FieldName.orFields(FieldName.ORGANIZATION, FieldName.INSTITUTION)); addAllOptional(FieldName.AUTHOR, FieldName.LANGUAGE, FieldName.HOWPUBLISHED, FieldName.TYPE, FieldName.NUMBER, FieldName.REVISION, FieldName.ADDRESS, FieldName.MONTH, FieldName.YEAR, FieldName.NOTE, FieldName.URL); } @Override public String getName() { return "Standard"; } }; public static final List<EntryType> ALL = Arrays.asList(ELECTRONIC, IEEETRANBSTCTL, PERIODICAL, PATENT, STANDARD); private IEEETranEntryTypes() { } public static Optional<EntryType> getType(String name) { return ALL.stream().filter(e -> e.getName().equalsIgnoreCase(name)).findFirst(); } }