package org.jabref.model.entry;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
/**
* This class defines entry types for biblatex support.
* @see <a href="http://mirrors.concertpass.com/tex-archive/macros/latex/contrib/biblatex/doc/biblatex.pdf">biblatex documentation</a>
*/
public class BiblatexEntryTypes {
public static final BiblatexEntryType ARTICLE = new BiblatexEntryType() {
private final List<String> primaryOptionalFields = Collections.unmodifiableList(Arrays.asList(
FieldName.SUBTITLE, FieldName.EDITOR, FieldName.SERIES, FieldName.VOLUME, FieldName.NUMBER,
FieldName.EID, FieldName.ISSUE, FieldName.PAGES, FieldName.NOTE, FieldName.ISSN, FieldName.DOI,
FieldName.EPRINT, FieldName.EPRINTCLASS, FieldName.EPRINTTYPE, FieldName.URL, FieldName.URLDATE));
{
addAllRequired(FieldName.AUTHOR, FieldName.TITLE,
FieldName.orFields(FieldName.JOURNAL, FieldName.JOURNALTITLE),
FieldName.orFields(FieldName.YEAR, FieldName.DATE));
addAllOptional(FieldName.TRANSLATOR, FieldName.ANNOTATOR, FieldName.COMMENTATOR, FieldName.SUBTITLE,
FieldName.TITLEADDON, FieldName.EDITOR, FieldName.EDITORA, FieldName.EDITORB, FieldName.EDITORC,
FieldName.JOURNALSUBTITLE, FieldName.ISSUETITLE, FieldName.ISSUESUBTITLE, FieldName.LANGUAGE,
FieldName.ORIGLANGUAGE, FieldName.SERIES, FieldName.VOLUME, FieldName.NUMBER, FieldName.EID,
FieldName.ISSUE, FieldName.MONTH, FieldName.PAGES, FieldName.VERSION, FieldName.NOTE,
FieldName.ISSN, FieldName.ADDENDUM, FieldName.PUBSTATE, FieldName.DOI, FieldName.EPRINT,
FieldName.EPRINTCLASS, FieldName.EPRINTTYPE, FieldName.URL, FieldName.URLDATE);
}
@Override
public String getName() {
return "Article";
}
@Override
public List<String> getPrimaryOptionalFields() {
return primaryOptionalFields;
}
};
public static final BiblatexEntryType BOOK = new BiblatexEntryType() {
private final List<String> primaryOptionalFields = Collections.unmodifiableList(Arrays.asList(FieldName.EDITOR,
FieldName.SUBTITLE, FieldName.TITLEADDON, FieldName.MAINTITLE, FieldName.MAINSUBTITLE,
FieldName.MAINTITLEADDON, FieldName.VOLUME, FieldName.EDITION, FieldName.PUBLISHER, FieldName.ISBN,
FieldName.CHAPTER, FieldName.PAGES, FieldName.PAGETOTAL, FieldName.DOI, FieldName.EPRINT,
FieldName.EPRINTCLASS, FieldName.EPRINTTYPE, FieldName.URL, FieldName.URLDATE));
{
addAllRequired(FieldName.AUTHOR, FieldName.TITLE, FieldName.orFields(FieldName.YEAR, FieldName.DATE));
addAllOptional(FieldName.EDITOR, FieldName.EDITORA, FieldName.EDITORB, FieldName.EDITORC,
FieldName.TRANSLATOR, FieldName.ANNOTATOR, FieldName.COMMENTATOR, FieldName.INTRODUCTION,
FieldName.FOREWORD, FieldName.AFTERWORD, FieldName.SUBTITLE, FieldName.TITLEADDON,
FieldName.MAINTITLE, FieldName.MAINSUBTITLE, FieldName.MAINTITLEADDON, FieldName.LANGUAGE,
FieldName.ORIGLANGUAGE, FieldName.VOLUME, FieldName.PART, FieldName.EDITION, FieldName.VOLUMES,
FieldName.SERIES, FieldName.NUMBER, FieldName.NOTE, FieldName.PUBLISHER, FieldName.LOCATION,
FieldName.ISBN, FieldName.CHAPTER, FieldName.PAGES, FieldName.PAGETOTAL, FieldName.ADDENDUM,
FieldName.PUBSTATE, FieldName.DOI, FieldName.EPRINT, FieldName.EPRINTCLASS, FieldName.EPRINTTYPE,
FieldName.URL, FieldName.URLDATE);
}
@Override
public String getName() {
return "Book";
}
@Override
public List<String> getPrimaryOptionalFields() {
return primaryOptionalFields;
}
};
public static final BiblatexEntryType MVBOOK = new BiblatexEntryType() {
private final List<String> primaryOptionalFields = Collections.unmodifiableList(
Arrays.asList(FieldName.EDITOR, FieldName.SUBTITLE, FieldName.TITLEADDON, FieldName.EDITION,
FieldName.PUBLISHER, FieldName.ISBN, FieldName.PAGETOTAL, FieldName.DOI, FieldName.EPRINT,
FieldName.EPRINTCLASS, FieldName.EPRINTTYPE, FieldName.URL, FieldName.URLDATE));
{
addAllRequired(FieldName.AUTHOR, FieldName.TITLE, FieldName.orFields(FieldName.YEAR, FieldName.DATE));
addAllOptional(FieldName.EDITOR, FieldName.EDITORA, FieldName.EDITORB, FieldName.EDITORC,
FieldName.TRANSLATOR, FieldName.ANNOTATOR, FieldName.COMMENTATOR, FieldName.INTRODUCTION,
FieldName.FOREWORD, FieldName.AFTERWORD, FieldName.SUBTITLE, FieldName.TITLEADDON,
FieldName.LANGUAGE, FieldName.ORIGLANGUAGE, FieldName.EDITION, FieldName.VOLUMES, FieldName.SERIES,
FieldName.NUMBER, FieldName.NOTE, FieldName.PUBLISHER, FieldName.LOCATION, FieldName.ISBN,
FieldName.PAGETOTAL, FieldName.ADDENDUM, FieldName.PUBSTATE, FieldName.DOI, FieldName.EPRINT,
FieldName.EPRINTCLASS, FieldName.EPRINTTYPE, FieldName.URL, FieldName.URLDATE);
}
@Override
public String getName() {
return "MvBook";
}
@Override
public List<String> getPrimaryOptionalFields() {
return primaryOptionalFields;
}
};
public static final BiblatexEntryType INBOOK = new BiblatexEntryType() {
private final List<String> primaryOptionalFields = Collections.unmodifiableList(
Arrays.asList(FieldName.BOOKAUTHOR, FieldName.EDITOR, FieldName.SUBTITLE, FieldName.TITLEADDON,
FieldName.MAINTITLE, FieldName.MAINSUBTITLE, FieldName.MAINTITLEADDON, FieldName.BOOKSUBTITLE,
FieldName.BOOKTITLEADDON, FieldName.VOLUME, FieldName.EDITION, FieldName.PUBLISHER,
FieldName.ISBN, FieldName.CHAPTER, FieldName.PAGES, FieldName.DOI, FieldName.EPRINT,
FieldName.EPRINTCLASS, FieldName.EPRINTTYPE, FieldName.URL, FieldName.URLDATE));
{
addAllRequired(FieldName.AUTHOR, FieldName.TITLE, FieldName.BOOKTITLE,
FieldName.orFields(FieldName.YEAR, FieldName.DATE));
addAllOptional(FieldName.BOOKAUTHOR, FieldName.EDITOR, FieldName.EDITORA, FieldName.EDITORB,
FieldName.EDITORC, FieldName.TRANSLATOR, FieldName.ANNOTATOR, FieldName.COMMENTATOR,
FieldName.INTRODUCTION, FieldName.FOREWORD, FieldName.AFTERWORD, FieldName.SUBTITLE,
FieldName.TITLEADDON, FieldName.MAINTITLE, FieldName.MAINSUBTITLE, FieldName.MAINTITLEADDON,
FieldName.BOOKSUBTITLE, FieldName.BOOKTITLEADDON, FieldName.LANGUAGE, FieldName.ORIGLANGUAGE,
FieldName.VOLUME, FieldName.PART, FieldName.EDITION, FieldName.VOLUMES, FieldName.SERIES,
FieldName.NUMBER, FieldName.NOTE, FieldName.PUBLISHER, FieldName.LOCATION, FieldName.ISBN,
FieldName.CHAPTER, FieldName.PAGES, FieldName.ADDENDUM, FieldName.PUBSTATE, FieldName.DOI,
FieldName.EPRINT, FieldName.EPRINTCLASS, FieldName.EPRINTTYPE, FieldName.URL, FieldName.URLDATE);
}
@Override
public String getName() {
return "InBook";
}
@Override
public List<String> getPrimaryOptionalFields() {
return primaryOptionalFields;
}
};
public static final BiblatexEntryType BOOKINBOOK = new BiblatexEntryType() {
@Override
public String getName() {
return "BookInBook";
}
// Same fields as "INBOOK" according to Biblatex 1.0:
@Override
public List<String> getRequiredFields() {
return BiblatexEntryTypes.INBOOK.getRequiredFields();
}
@Override
public List<String> getOptionalFields() {
return BiblatexEntryTypes.INBOOK.getOptionalFields();
}
@Override
public List<String> getPrimaryOptionalFields() {
return BiblatexEntryTypes.INBOOK.getPrimaryOptionalFields();
}
};
public static final BiblatexEntryType SUPPBOOK = new BiblatexEntryType() {
@Override
public String getName() {
return "SuppBook";
}
// Same fields as "INBOOK" according to Biblatex 1.0:
@Override
public List<String> getRequiredFields() {
return BiblatexEntryTypes.INBOOK.getRequiredFields();
}
@Override
public List<String> getOptionalFields() {
return BiblatexEntryTypes.INBOOK.getOptionalFields();
}
@Override
public List<String> getPrimaryOptionalFields() {
return BiblatexEntryTypes.INBOOK.getPrimaryOptionalFields();
}
};
public static final BiblatexEntryType BOOKLET = new BiblatexEntryType() {
private final List<String> primaryOptionalFields = Collections
.unmodifiableList(Arrays.asList(FieldName.SUBTITLE, FieldName.TITLEADDON, FieldName.HOWPUBLISHED,
FieldName.CHAPTER, FieldName.PAGES, FieldName.DOI, FieldName.EPRINT, FieldName.EPRINTCLASS,
FieldName.EPRINTTYPE, FieldName.URL, FieldName.URLDATE));
{
addAllRequired(FieldName.orFields(FieldName.AUTHOR, FieldName.EDITOR), FieldName.TITLE,
FieldName.orFields(FieldName.YEAR, FieldName.DATE));
addAllOptional(FieldName.SUBTITLE, FieldName.TITLEADDON, FieldName.LANGUAGE, FieldName.HOWPUBLISHED,
FieldName.TYPE, FieldName.NOTE, FieldName.LOCATION, FieldName.CHAPTER, FieldName.PAGES,
FieldName.PAGETOTAL, FieldName.ADDENDUM, FieldName.PUBSTATE, FieldName.DOI, FieldName.EPRINT,
FieldName.EPRINTCLASS, FieldName.EPRINTTYPE, FieldName.URL, FieldName.URLDATE);
}
@Override
public String getName() {
return "Booklet";
}
@Override
public List<String> getPrimaryOptionalFields() {
return primaryOptionalFields;
}
};
public static final BiblatexEntryType COLLECTION = new BiblatexEntryType() {
private final List<String> primaryOptionalFields = Collections.unmodifiableList(Arrays.asList(
FieldName.TRANSLATOR, FieldName.SUBTITLE, FieldName.TITLEADDON, FieldName.MAINTITLE,
FieldName.MAINSUBTITLE, FieldName.MAINTITLEADDON, FieldName.VOLUME, FieldName.EDITION,
FieldName.PUBLISHER, FieldName.ISBN, FieldName.CHAPTER, FieldName.PAGES, FieldName.DOI,
FieldName.EPRINT, FieldName.EPRINTCLASS, FieldName.EPRINTTYPE, FieldName.URL, FieldName.URLDATE));
{
addAllRequired(FieldName.EDITOR, FieldName.TITLE, FieldName.orFields(FieldName.YEAR, FieldName.DATE));
addAllOptional(FieldName.EDITORA, FieldName.EDITORB, FieldName.EDITORC, FieldName.TRANSLATOR,
FieldName.ANNOTATOR, FieldName.COMMENTATOR, FieldName.INTRODUCTION, FieldName.FOREWORD,
FieldName.AFTERWORD, FieldName.SUBTITLE, FieldName.TITLEADDON, FieldName.MAINTITLE,
FieldName.MAINSUBTITLE, FieldName.MAINTITLEADDON, FieldName.LANGUAGE, FieldName.ORIGLANGUAGE,
FieldName.VOLUME, FieldName.PART, FieldName.EDITION, FieldName.VOLUMES, FieldName.SERIES,
FieldName.NUMBER, FieldName.NOTE, FieldName.PUBLISHER, FieldName.LOCATION, FieldName.ISBN,
FieldName.CHAPTER, FieldName.PAGES, FieldName.PAGETOTAL, FieldName.ADDENDUM, FieldName.PUBSTATE,
FieldName.DOI, FieldName.EPRINT, FieldName.EPRINTCLASS, FieldName.EPRINTTYPE, FieldName.URL,
FieldName.URLDATE);
}
@Override
public String getName() {
return "Collection";
}
@Override
public List<String> getPrimaryOptionalFields() {
return primaryOptionalFields;
}
};
public static final BiblatexEntryType MVCOLLECTION = new BiblatexEntryType() {
private final List<String> primaryOptionalFields = Collections
.unmodifiableList(Arrays.asList(FieldName.TRANSLATOR, FieldName.SUBTITLE, FieldName.TITLEADDON,
FieldName.EDITION, FieldName.PUBLISHER, FieldName.ISBN, FieldName.DOI, FieldName.EPRINT,
FieldName.EPRINTCLASS, FieldName.EPRINTTYPE, FieldName.URL, FieldName.URLDATE));
{
addAllRequired(FieldName.EDITOR, FieldName.TITLE, FieldName.orFields(FieldName.YEAR, FieldName.DATE));
addAllOptional(FieldName.EDITORA, FieldName.EDITORB, FieldName.EDITORC, FieldName.TRANSLATOR,
FieldName.ANNOTATOR, FieldName.COMMENTATOR, FieldName.INTRODUCTION, FieldName.FOREWORD,
FieldName.AFTERWORD, FieldName.SUBTITLE, FieldName.TITLEADDON, FieldName.LANGUAGE,
FieldName.ORIGLANGUAGE, FieldName.EDITION, FieldName.VOLUMES, FieldName.SERIES, FieldName.NUMBER,
FieldName.NOTE, FieldName.PUBLISHER, FieldName.LOCATION, FieldName.ISBN, FieldName.PAGETOTAL,
FieldName.ADDENDUM, FieldName.PUBSTATE, FieldName.DOI, FieldName.EPRINT, FieldName.EPRINTCLASS,
FieldName.EPRINTTYPE, FieldName.URL, FieldName.URLDATE);
}
@Override
public String getName() {
return "MvCollection";
}
@Override
public List<String> getPrimaryOptionalFields() {
return primaryOptionalFields;
}
};
public static final BiblatexEntryType INCOLLECTION = new BiblatexEntryType() {
private final List<String> primaryOptionalFields = Collections
.unmodifiableList(Arrays.asList(FieldName.TRANSLATOR, FieldName.SUBTITLE, FieldName.TITLEADDON,
FieldName.MAINTITLE, FieldName.MAINSUBTITLE, FieldName.MAINTITLEADDON, FieldName.BOOKSUBTITLE,
FieldName.BOOKTITLEADDON, FieldName.VOLUME, FieldName.EDITION, FieldName.PUBLISHER,
FieldName.ISBN, FieldName.CHAPTER, FieldName.PAGES, FieldName.DOI, FieldName.EPRINT,
FieldName.EPRINTCLASS, FieldName.EPRINTTYPE, FieldName.URL, FieldName.URLDATE));
{
addAllRequired(FieldName.AUTHOR, FieldName.TITLE, FieldName.BOOKTITLE,
FieldName.orFields(FieldName.YEAR, FieldName.DATE));
addAllOptional(FieldName.EDITOR, FieldName.EDITORA, FieldName.EDITORB, FieldName.EDITORC,
FieldName.TRANSLATOR, FieldName.ANNOTATOR, FieldName.COMMENTATOR, FieldName.INTRODUCTION,
FieldName.FOREWORD, FieldName.AFTERWORD, FieldName.SUBTITLE, FieldName.TITLEADDON,
FieldName.MAINTITLE, FieldName.MAINSUBTITLE, FieldName.MAINTITLEADDON, FieldName.BOOKSUBTITLE,
FieldName.BOOKTITLEADDON, FieldName.LANGUAGE, FieldName.ORIGLANGUAGE, FieldName.VOLUME,
FieldName.PART, FieldName.EDITION, FieldName.VOLUMES, FieldName.SERIES, FieldName.NUMBER,
FieldName.NOTE, FieldName.PUBLISHER, FieldName.LOCATION, FieldName.ISBN, FieldName.CHAPTER,
FieldName.PAGES, FieldName.ADDENDUM, FieldName.PUBSTATE, FieldName.DOI, FieldName.EPRINT,
FieldName.EPRINTCLASS, FieldName.EPRINTTYPE, FieldName.URL, FieldName.URLDATE);
}
@Override
public String getName() {
return "InCollection";
}
@Override
public List<String> getPrimaryOptionalFields() {
return primaryOptionalFields;
}
};
public static final BiblatexEntryType SUPPCOLLECTION = new BiblatexEntryType() {
@Override
public String getName() {
return "SuppCollection";
}
// Treated as alias of "INCOLLECTION" according to Biblatex 1.0:
@Override
public List<String> getRequiredFields() {
return BiblatexEntryTypes.INCOLLECTION.getRequiredFields();
}
@Override
public List<String> getOptionalFields() {
return BiblatexEntryTypes.INCOLLECTION.getOptionalFields();
}
@Override
public List<String> getPrimaryOptionalFields() {
return BiblatexEntryTypes.INCOLLECTION.getPrimaryOptionalFields();
}
};
public static final BiblatexEntryType MANUAL = new BiblatexEntryType() {
private final List<String> primaryOptionalFields = Collections.unmodifiableList(
Arrays.asList(FieldName.SUBTITLE, FieldName.TITLEADDON, FieldName.EDITION, FieldName.PUBLISHER,
FieldName.ISBN, FieldName.CHAPTER, FieldName.PAGES, FieldName.DOI, FieldName.EPRINT,
FieldName.EPRINTCLASS, FieldName.EPRINTTYPE, FieldName.URL, FieldName.URLDATE));
{
addAllRequired(FieldName.orFields(FieldName.AUTHOR, FieldName.EDITOR), FieldName.TITLE,
FieldName.orFields(FieldName.YEAR, FieldName.DATE));
addAllOptional(FieldName.SUBTITLE, FieldName.TITLEADDON, FieldName.LANGUAGE, FieldName.EDITION,
FieldName.TYPE, FieldName.SERIES, FieldName.NUMBER, FieldName.VERSION, FieldName.NOTE,
FieldName.ORGANIZATION, FieldName.PUBLISHER, FieldName.LOCATION, FieldName.ISBN, FieldName.CHAPTER,
FieldName.PAGES, FieldName.PAGETOTAL, FieldName.ADDENDUM, FieldName.PUBSTATE, FieldName.DOI,
FieldName.EPRINT, FieldName.EPRINTCLASS, FieldName.EPRINTTYPE, FieldName.URL, FieldName.URLDATE);
}
@Override
public String getName() {
return "Manual";
}
@Override
public List<String> getPrimaryOptionalFields() {
return primaryOptionalFields;
}
};
public static final BiblatexEntryType MISC = new BiblatexEntryType() {
private final List<String> primaryOptionalFields = Collections.unmodifiableList(Arrays.asList(
FieldName.SUBTITLE, FieldName.TITLEADDON, FieldName.HOWPUBLISHED, FieldName.LOCATION, FieldName.DOI,
FieldName.EPRINT, FieldName.EPRINTCLASS, FieldName.EPRINTTYPE, FieldName.URL, FieldName.URLDATE));
{
addAllRequired(FieldName.orFields(FieldName.AUTHOR, FieldName.EDITOR), FieldName.TITLE,
FieldName.orFields(FieldName.YEAR, FieldName.DATE));
addAllOptional(FieldName.SUBTITLE, FieldName.TITLEADDON, FieldName.LANGUAGE, FieldName.HOWPUBLISHED,
FieldName.TYPE, FieldName.VERSION, FieldName.NOTE, FieldName.ORGANIZATION, FieldName.LOCATION,
FieldName.MONTH, FieldName.ADDENDUM, FieldName.PUBSTATE, FieldName.DOI, FieldName.EPRINT,
FieldName.EPRINTCLASS, FieldName.EPRINTTYPE, FieldName.URL, FieldName.URLDATE);
}
@Override
public String getName() {
return "Misc";
}
@Override
public List<String> getPrimaryOptionalFields() {
return primaryOptionalFields;
}
};
public static final BiblatexEntryType ONLINE = new BiblatexEntryType() {
private final List<String> primaryOptionalFields = Collections.unmodifiableList(Arrays.asList(
FieldName.SUBTITLE, FieldName.TITLEADDON, FieldName.NOTE, FieldName.ORGANIZATION, FieldName.URLDATE));
{
addAllRequired(FieldName.orFields(FieldName.AUTHOR, FieldName.EDITOR), FieldName.TITLE,
FieldName.orFields(FieldName.YEAR, FieldName.DATE), FieldName.URL);
addAllOptional(FieldName.SUBTITLE, FieldName.TITLEADDON, FieldName.LANGUAGE, FieldName.VERSION,
FieldName.NOTE, FieldName.ORGANIZATION, FieldName.MONTH, FieldName.ADDENDUM, FieldName.PUBSTATE,
FieldName.URLDATE);
}
@Override
public String getName() {
return "Online";
}
@Override
public List<String> getPrimaryOptionalFields() {
return primaryOptionalFields;
}
};
public static final BiblatexEntryType PATENT = new BiblatexEntryType() {
private final List<String> primaryOptionalFields = Collections.unmodifiableList(Arrays.asList(FieldName.HOLDER,
FieldName.SUBTITLE, FieldName.TITLEADDON, FieldName.DOI, FieldName.EPRINT, FieldName.EPRINTCLASS,
FieldName.EPRINTTYPE, FieldName.URL, FieldName.URLDATE));
{
addAllRequired(FieldName.AUTHOR, FieldName.TITLE, FieldName.NUMBER,
FieldName.orFields(FieldName.YEAR, FieldName.DATE));
addAllOptional(FieldName.HOLDER, FieldName.SUBTITLE, FieldName.TITLEADDON, FieldName.TYPE,
FieldName.VERSION, FieldName.LOCATION, FieldName.NOTE, FieldName.MONTH, FieldName.ADDENDUM,
FieldName.PUBSTATE, FieldName.DOI, FieldName.EPRINT, FieldName.EPRINTCLASS, FieldName.EPRINTTYPE,
FieldName.URL, FieldName.URLDATE);
}
@Override
public String getName() {
return "Patent";
}
@Override
public List<String> getPrimaryOptionalFields() {
return primaryOptionalFields;
}
};
public static final BiblatexEntryType PERIODICAL = new BiblatexEntryType() {
private final List<String> primaryOptionalFields = Collections.unmodifiableList(Arrays.asList(
FieldName.SUBTITLE, FieldName.ISSUETITLE, FieldName.ISSUESUBTITLE, FieldName.ISSN, FieldName.DOI,
FieldName.EPRINT, FieldName.EPRINTCLASS, FieldName.EPRINTTYPE, FieldName.URL, FieldName.URLDATE));
{
addAllRequired(FieldName.EDITOR, FieldName.TITLE, FieldName.orFields(FieldName.YEAR, FieldName.DATE));
addAllOptional(FieldName.EDITORA, FieldName.EDITORB, FieldName.EDITORC, FieldName.SUBTITLE,
FieldName.ISSUETITLE, FieldName.ISSUESUBTITLE, FieldName.LANGUAGE, FieldName.SERIES,
FieldName.VOLUME, FieldName.NUMBER, FieldName.ISSUE, FieldName.MONTH, FieldName.NOTE,
FieldName.ISSN, FieldName.ADDENDUM, FieldName.PUBSTATE, FieldName.DOI, FieldName.EPRINT,
FieldName.EPRINTCLASS, FieldName.EPRINTTYPE, FieldName.URL, FieldName.URLDATE);
}
@Override
public String getName() {
return "Periodical";
}
@Override
public List<String> getPrimaryOptionalFields() {
return primaryOptionalFields;
}
};
public static final BiblatexEntryType SUPPPERIODICAL = new BiblatexEntryType() {
@Override
public String getName() {
return "SuppPeriodical";
}
// Treated as alias of "ARTICLE" according to Biblatex 1.0:
@Override
public List<String> getRequiredFields() {
return BiblatexEntryTypes.ARTICLE.getRequiredFields();
}
@Override
public List<String> getOptionalFields() {
return BiblatexEntryTypes.ARTICLE.getOptionalFields();
}
@Override
public List<String> getPrimaryOptionalFields() {
return BiblatexEntryTypes.ARTICLE.getPrimaryOptionalFields();
}
};
public static final BiblatexEntryType PROCEEDINGS = new BiblatexEntryType() {
private final List<String> primaryOptionalFields = Collections.unmodifiableList(Arrays.asList(
FieldName.SUBTITLE, FieldName.TITLEADDON, FieldName.MAINTITLE, FieldName.MAINSUBTITLE,
FieldName.MAINTITLEADDON, FieldName.EVENTTITLE, FieldName.VOLUME, FieldName.PUBLISHER, FieldName.ISBN,
FieldName.CHAPTER, FieldName.PAGES, FieldName.PAGETOTAL, FieldName.DOI, FieldName.EPRINT,
FieldName.EPRINTCLASS, FieldName.EPRINTTYPE, FieldName.URL, FieldName.URLDATE));
{
addAllRequired(FieldName.TITLE, FieldName.orFields(FieldName.YEAR, FieldName.DATE));
addAllOptional(FieldName.EDITOR, FieldName.SUBTITLE, FieldName.TITLEADDON, FieldName.MAINTITLE,
FieldName.MAINSUBTITLE, FieldName.MAINTITLEADDON, FieldName.EVENTTITLE, FieldName.EVENTTITLEADDON,
FieldName.EVENTDATE, FieldName.VENUE, FieldName.LANGUAGE, FieldName.VOLUME, FieldName.PART,
FieldName.VOLUMES, FieldName.SERIES, FieldName.NUMBER, FieldName.NOTE, FieldName.ORGANIZATION,
FieldName.PUBLISHER, FieldName.LOCATION, FieldName.MONTH, FieldName.YEAR, FieldName.ISBN,
FieldName.CHAPTER, FieldName.PAGES, FieldName.PAGETOTAL, FieldName.ADDENDUM, FieldName.PUBSTATE,
FieldName.DOI, FieldName.EPRINT, FieldName.EPRINTCLASS, FieldName.EPRINTTYPE, FieldName.URL,
FieldName.URLDATE);
}
@Override
public String getName() {
return "Proceedings";
}
@Override
public List<String> getPrimaryOptionalFields() {
return primaryOptionalFields;
}
};
public static final BiblatexEntryType MVPROCEEDINGS = new BiblatexEntryType() {
private final List<String> primaryOptionalFields = Collections.unmodifiableList(Arrays.asList(
FieldName.SUBTITLE, FieldName.TITLEADDON, FieldName.MAINTITLE, FieldName.MAINSUBTITLE,
FieldName.MAINTITLEADDON, FieldName.EVENTTITLE, FieldName.VOLUME, FieldName.PUBLISHER, FieldName.ISBN,
FieldName.CHAPTER, FieldName.PAGES, FieldName.PAGETOTAL, FieldName.DOI, FieldName.EPRINT,
FieldName.EPRINTCLASS, FieldName.EPRINTTYPE, FieldName.URL, FieldName.URLDATE));
{
addAllRequired(FieldName.TITLE, FieldName.orFields(FieldName.YEAR, FieldName.DATE));
addAllOptional(FieldName.EDITOR, FieldName.SUBTITLE, FieldName.TITLEADDON, FieldName.EVENTTITLE,
FieldName.EVENTTITLEADDON, FieldName.EVENTDATE, FieldName.VENUE, FieldName.LANGUAGE,
FieldName.VOLUMES, FieldName.SERIES, FieldName.NUMBER, FieldName.NOTE, FieldName.ORGANIZATION,
FieldName.PUBLISHER, FieldName.LOCATION, FieldName.MONTH, FieldName.ISBN, FieldName.PAGETOTAL,
FieldName.ADDENDUM, FieldName.PUBSTATE, FieldName.DOI, FieldName.EPRINT, FieldName.EPRINTCLASS,
FieldName.EPRINTTYPE, FieldName.URL,
FieldName.URLDATE);
}
@Override
public String getName() {
return "MvProceedings";
}
@Override
public List<String> getPrimaryOptionalFields() {
return primaryOptionalFields;
}
};
public static final BiblatexEntryType INPROCEEDINGS = new BiblatexEntryType() {
private final List<String> primaryOptionalFields = Collections
.unmodifiableList(Arrays.asList(FieldName.SUBTITLE, FieldName.TITLEADDON, FieldName.MAINTITLE,
FieldName.MAINSUBTITLE, FieldName.MAINTITLEADDON, FieldName.BOOKSUBTITLE,
FieldName.BOOKTITLEADDON, FieldName.EVENTTITLE, FieldName.VOLUME, FieldName.PUBLISHER,
FieldName.ISBN, FieldName.CHAPTER, FieldName.PAGES, FieldName.DOI, FieldName.EPRINT,
FieldName.EPRINTCLASS, FieldName.EPRINTTYPE, FieldName.URL, FieldName.URLDATE));
{
addAllRequired(FieldName.AUTHOR, FieldName.TITLE, FieldName.BOOKTITLE,
FieldName.orFields(FieldName.YEAR, FieldName.DATE));
addAllOptional(FieldName.EDITOR, FieldName.SUBTITLE, FieldName.TITLEADDON, FieldName.MAINTITLE,
FieldName.MAINSUBTITLE, FieldName.MAINTITLEADDON, FieldName.BOOKSUBTITLE, FieldName.BOOKTITLEADDON,
FieldName.EVENTTITLE, FieldName.EVENTTITLEADDON, FieldName.EVENTDATE, FieldName.VENUE,
FieldName.LANGUAGE, FieldName.VOLUME, FieldName.PART, FieldName.VOLUMES, FieldName.SERIES,
FieldName.NUMBER, FieldName.NOTE, FieldName.ORGANIZATION, FieldName.PUBLISHER, FieldName.LOCATION,
FieldName.MONTH, FieldName.ISBN, FieldName.CHAPTER, FieldName.PAGES, FieldName.ADDENDUM,
FieldName.PUBSTATE, FieldName.DOI, FieldName.EPRINT, FieldName.EPRINTCLASS, FieldName.EPRINTTYPE,
FieldName.URL, FieldName.URLDATE);
}
@Override
public String getName() {
return "InProceedings";
}
@Override
public List<String> getPrimaryOptionalFields() {
return primaryOptionalFields;
}
};
public static final BiblatexEntryType REFERENCE = new BiblatexEntryType() {
@Override
public String getName() {
return "Reference";
}
// Treated as alias of "COLLECTION" according to Biblatex 1.0:
@Override
public List<String> getRequiredFields() {
return BiblatexEntryTypes.COLLECTION.getRequiredFields();
}
@Override
public List<String> getOptionalFields() {
return BiblatexEntryTypes.COLLECTION.getOptionalFields();
}
@Override
public List<String> getPrimaryOptionalFields() {
return BiblatexEntryTypes.COLLECTION.getPrimaryOptionalFields();
}
};
public static final BiblatexEntryType MVREFERENCE = new BiblatexEntryType() {
@Override
public String getName() {
return "MvReference";
}
// Treated as alias of "MVCOLLECTION" according to Biblatex 1.0:
@Override
public List<String> getRequiredFields() {
return BiblatexEntryTypes.MVCOLLECTION.getRequiredFields();
}
@Override
public List<String> getOptionalFields() {
return BiblatexEntryTypes.MVCOLLECTION.getOptionalFields();
}
@Override
public List<String> getPrimaryOptionalFields() {
return BiblatexEntryTypes.MVCOLLECTION.getPrimaryOptionalFields();
}
};
public static final BiblatexEntryType INREFERENCE = new BiblatexEntryType() {
@Override
public String getName() {
return "InReference";
}
// Treated as alias of "INCOLLECTION" according to Biblatex 1.0:
@Override
public List<String> getRequiredFields() {
return BiblatexEntryTypes.INCOLLECTION.getRequiredFields();
}
@Override
public List<String> getOptionalFields() {
return BiblatexEntryTypes.INCOLLECTION.getOptionalFields();
}
@Override
public List<String> getPrimaryOptionalFields() {
return BiblatexEntryTypes.INCOLLECTION.getPrimaryOptionalFields();
}
};
public static final BiblatexEntryType REPORT = new BiblatexEntryType() {
private final List<String> primaryOptionalFields = Collections.unmodifiableList(
Arrays.asList(FieldName.SUBTITLE, FieldName.TITLEADDON, FieldName.NUMBER, FieldName.ISRN,
FieldName.CHAPTER, FieldName.PAGES, FieldName.PAGETOTAL, FieldName.DOI, FieldName.EPRINT,
FieldName.EPRINTCLASS, FieldName.EPRINTTYPE, FieldName.URL, FieldName.URLDATE));
{
addAllRequired(FieldName.AUTHOR, FieldName.TITLE, FieldName.TYPE, FieldName.INSTITUTION,
FieldName.orFields(FieldName.YEAR, FieldName.DATE));
addAllOptional(FieldName.SUBTITLE, FieldName.TITLEADDON, FieldName.LANGUAGE, FieldName.NUMBER,
FieldName.VERSION, FieldName.NOTE, FieldName.LOCATION, FieldName.MONTH, FieldName.ISRN,
FieldName.CHAPTER, FieldName.PAGES, FieldName.PAGETOTAL, FieldName.ADDENDUM, FieldName.PUBSTATE,
FieldName.DOI, FieldName.EPRINT, FieldName.EPRINTCLASS, FieldName.EPRINTTYPE, FieldName.URL,
FieldName.URLDATE);
}
@Override
public String getName() {
return "Report";
}
@Override
public List<String> getPrimaryOptionalFields() {
return primaryOptionalFields;
}
};
public static final BiblatexEntryType SET = new BiblatexEntryType() {
{
addAllRequired(FieldName.ENTRYSET, FieldName.CROSSREF);
}
@Override
public String getName() {
return "Set";
}
};
public static final BiblatexEntryType THESIS = new BiblatexEntryType() {
private final List<String> primaryOptionalFields = Collections
.unmodifiableList(Arrays.asList(FieldName.SUBTITLE, FieldName.TITLEADDON, FieldName.CHAPTER,
FieldName.PAGES, FieldName.PAGETOTAL, FieldName.DOI, FieldName.EPRINT, FieldName.EPRINTCLASS,
FieldName.EPRINTTYPE, FieldName.URL, FieldName.URLDATE));
{
addAllRequired(FieldName.AUTHOR, FieldName.TITLE, FieldName.TYPE, FieldName.INSTITUTION,
FieldName.orFields(FieldName.YEAR, FieldName.DATE));
addAllOptional(FieldName.SUBTITLE, FieldName.TITLEADDON, FieldName.LANGUAGE, FieldName.NOTE,
FieldName.LOCATION, FieldName.MONTH, FieldName.ISBN, FieldName.CHAPTER, FieldName.PAGES,
FieldName.PAGETOTAL, FieldName.ADDENDUM, FieldName.PUBSTATE, FieldName.DOI, FieldName.EPRINT,
FieldName.EPRINTCLASS, FieldName.EPRINTTYPE, FieldName.URL, FieldName.URLDATE);
}
@Override
public String getName() {
return "Thesis";
}
@Override
public List<String> getPrimaryOptionalFields() {
return primaryOptionalFields;
}
};
public static final BiblatexEntryType UNPUBLISHED = new BiblatexEntryType() {
private final List<String> primaryOptionalFields = Collections
.unmodifiableList(Arrays.asList(FieldName.SUBTITLE, FieldName.TITLEADDON, FieldName.HOWPUBLISHED,
FieldName.PUBSTATE, FieldName.URL, FieldName.URLDATE));
{
addAllRequired(FieldName.AUTHOR, FieldName.TITLE, FieldName.orFields(FieldName.YEAR, FieldName.DATE));
addAllOptional(FieldName.SUBTITLE, FieldName.TITLEADDON, FieldName.LANGUAGE, FieldName.HOWPUBLISHED,
FieldName.NOTE, FieldName.LOCATION, FieldName.MONTH, FieldName.ADDENDUM, FieldName.PUBSTATE,
FieldName.URL, FieldName.URLDATE);
}
@Override
public String getName() {
return "Unpublished";
}
@Override
public List<String> getPrimaryOptionalFields() {
return primaryOptionalFields;
}
};
// === Type aliases: ===
public static final BiblatexEntryType CONFERENCE = new BiblatexEntryType() {
@Override
public String getName() {
return "Conference";
}
// Treated as alias of "INPROCEEDINGS" according to Biblatex 1.0:
@Override
public List<String> getRequiredFields() {
return BiblatexEntryTypes.INPROCEEDINGS.getRequiredFields();
}
@Override
public List<String> getOptionalFields() {
return BiblatexEntryTypes.INPROCEEDINGS.getOptionalFields();
}
@Override
public List<String> getPrimaryOptionalFields() {
return BiblatexEntryTypes.INPROCEEDINGS.getPrimaryOptionalFields();
}
};
public static final BiblatexEntryType ELECTRONIC = new BiblatexEntryType() {
@Override
public String getName() {
return "Electronic";
}
// Treated as alias of "ONLINE" according to Biblatex 1.0:
@Override
public List<String> getRequiredFields() {
return BiblatexEntryTypes.ONLINE.getRequiredFields();
}
@Override
public List<String> getOptionalFields() {
return BiblatexEntryTypes.ONLINE.getOptionalFields();
}
@Override
public List<String> getPrimaryOptionalFields() {
return BiblatexEntryTypes.ONLINE.getPrimaryOptionalFields();
}
};
public static final BiblatexEntryType MASTERSTHESIS = new BiblatexEntryType() {
private final List<String> primaryOptionalFields = Collections
.unmodifiableList(Arrays.asList(FieldName.SUBTITLE, FieldName.TITLEADDON, FieldName.TYPE,
FieldName.CHAPTER, FieldName.PAGES, FieldName.PAGETOTAL, FieldName.DOI, FieldName.EPRINT,
FieldName.EPRINTCLASS, FieldName.EPRINTTYPE, FieldName.URL, FieldName.URLDATE));
{
// Treated as alias of "THESIS", except FieldName.TYPE field is optional
addAllRequired(FieldName.AUTHOR, FieldName.TITLE, FieldName.INSTITUTION,
FieldName.orFields(FieldName.YEAR, FieldName.DATE));
addAllOptional(FieldName.TYPE, FieldName.SUBTITLE, FieldName.TITLEADDON, FieldName.LANGUAGE, FieldName.NOTE,
FieldName.LOCATION, FieldName.MONTH, FieldName.ISBN, FieldName.CHAPTER, FieldName.PAGES,
FieldName.PAGETOTAL, FieldName.ADDENDUM, FieldName.PUBSTATE, FieldName.DOI, FieldName.EPRINT,
FieldName.EPRINTCLASS, FieldName.EPRINTTYPE, FieldName.URL, FieldName.URLDATE);
}
@Override
public String getName() {
return "MastersThesis";
}
@Override
public List<String> getPrimaryOptionalFields() {
return primaryOptionalFields;
}
};
public static final BiblatexEntryType PHDTHESIS = new BiblatexEntryType() {
private final List<String> primaryOptionalFields = Collections
.unmodifiableList(Arrays.asList(FieldName.SUBTITLE, FieldName.TITLEADDON, FieldName.TYPE,
FieldName.CHAPTER, FieldName.PAGES, FieldName.PAGETOTAL, FieldName.DOI, FieldName.EPRINT,
FieldName.EPRINTCLASS, FieldName.EPRINTTYPE, FieldName.URL, FieldName.URLDATE));
{
// Treated as alias of "THESIS", except FieldName.TYPE field is optional
addAllRequired(FieldName.AUTHOR, FieldName.TITLE, FieldName.INSTITUTION,
FieldName.orFields(FieldName.YEAR, FieldName.DATE));
addAllOptional(FieldName.TYPE, FieldName.SUBTITLE, FieldName.TITLEADDON, FieldName.LANGUAGE, FieldName.NOTE,
FieldName.LOCATION, FieldName.MONTH, FieldName.ISBN, FieldName.CHAPTER, FieldName.PAGES,
FieldName.PAGETOTAL, FieldName.ADDENDUM, FieldName.PUBSTATE, FieldName.DOI, FieldName.EPRINT,
FieldName.EPRINTCLASS, FieldName.EPRINTTYPE, FieldName.URL, FieldName.URLDATE);
}
@Override
public String getName() {
return "PhdThesis";
}
@Override
public List<String> getPrimaryOptionalFields() {
return primaryOptionalFields;
}
};
public static final BiblatexEntryType TECHREPORT = new BiblatexEntryType() {
private final List<String> primaryOptionalFields = Collections.unmodifiableList(Arrays.asList(
FieldName.SUBTITLE, FieldName.TITLEADDON, FieldName.TYPE, FieldName.NUMBER, FieldName.ISRN,
FieldName.CHAPTER, FieldName.PAGES, FieldName.PAGETOTAL, FieldName.DOI, FieldName.EPRINT,
FieldName.EPRINTCLASS, FieldName.EPRINTTYPE, FieldName.URL, FieldName.URLDATE));
{
// Treated as alias of "REPORT", except FieldName.TYPE field is optional
addAllRequired(FieldName.AUTHOR, FieldName.TITLE, FieldName.INSTITUTION,
FieldName.orFields(FieldName.YEAR, FieldName.DATE));
addAllOptional(FieldName.TYPE, FieldName.SUBTITLE, FieldName.TITLEADDON, FieldName.LANGUAGE,
FieldName.NUMBER, FieldName.VERSION, FieldName.NOTE, FieldName.LOCATION, FieldName.MONTH,
FieldName.ISRN, FieldName.CHAPTER, FieldName.PAGES, FieldName.PAGETOTAL, FieldName.ADDENDUM,
FieldName.PUBSTATE, FieldName.DOI, FieldName.EPRINT, FieldName.EPRINTCLASS, FieldName.EPRINTTYPE,
FieldName.URL, FieldName.URLDATE);
}
@Override
public String getName() {
return "TechReport";
}
@Override
public List<String> getPrimaryOptionalFields() {
return primaryOptionalFields;
}
};
public static final BiblatexEntryType WWW = new BiblatexEntryType() {
@Override
public String getName() {
return "WWW";
}
// Treated as alias of "ONLINE" according to Biblatex 1.0:
@Override
public List<String> getRequiredFields() {
return BiblatexEntryTypes.ONLINE.getRequiredFields();
}
@Override
public List<String> getOptionalFields() {
return BiblatexEntryTypes.ONLINE.getOptionalFields();
}
@Override
public List<String> getPrimaryOptionalFields() {
return BiblatexEntryTypes.ONLINE.getPrimaryOptionalFields();
}
};
/**
* This type is used for IEEEtran.bst to control various
* be repeated or not. Not a very elegant solution, but it works...
*/
public static final BiblatexEntryType IEEETRANBSTCTL = new BiblatexEntryType() {
{
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";
}
};
public static final List<EntryType> ALL = Arrays.asList(ARTICLE, BOOK, MVBOOK, INBOOK, BOOKINBOOK, SUPPBOOK,
BOOKLET, COLLECTION, MVCOLLECTION, INCOLLECTION, SUPPCOLLECTION, MANUAL, MISC, ONLINE, PATENT, PERIODICAL,
SUPPPERIODICAL, PROCEEDINGS, MVPROCEEDINGS, INPROCEEDINGS, REFERENCE, MVREFERENCE, INREFERENCE, REPORT, SET,
THESIS, UNPUBLISHED, CONFERENCE, ELECTRONIC, MASTERSTHESIS, PHDTHESIS, TECHREPORT, WWW, IEEETRANBSTCTL);
private BiblatexEntryTypes() {
}
public static Optional<EntryType> getType(String name) {
return ALL.stream().filter(e -> e.getName().equalsIgnoreCase(name)).findFirst();
}
}