Verified Owner
Top Description Fields Constructors Methods
org.jabref.logic.xmp

public Class DublinCoreExtractor

extends Object
Class Inheritance
Imports
java.util.Arrays, .Comparator, .List, .Optional, .SortedSet, .TreeSet, java.util.function.Consumer, .Predicate, org.jabref.logic.bibtex.TypedBibEntry, org.jabref.logic.formatter.casechanger.UnprotectTermsFormatter, org.jabref.logic.util.strings.StringUtil, org.jabref.model.database.BibDatabaseMode, org.jabref.model.entry.Author, .AuthorList, .BibEntry, .Date, .Month, org.jabref.model.entry.field.Field, .FieldFactory, .StandardField, .UnknownField, org.jabref.model.entry.types.EntryTypeFactory, org.apache.xmpbox.schema.DublinCoreSchema, org.apache.xmpbox.type.BadFieldValueException, org.slf4j.Logger, .LoggerFactory

This class is used for both conversion from Dublin Core to BibTeX and conversion form BibTeX to Dublin Core

Related class: org.jabref.logic.xmp.DocumentInformationExtractor

Field Summary

Modifier and TypeField and Description
private final BibEntry
public static final String
public static final String
public static final String
private final DublinCoreSchema
private static final Logger
private final UnprotectTermsFormatter
private final XmpPreferences

Constructor Summary

AccessConstructor and Description
public
DublinCoreExtractor(DublinCoreSchema
Metadata in DublinCore format.
dcSchema
,
XmpPreferences xmpPreferences, BibEntry
The BibEntry object, which is filled during metadata extraction.
resolvedEntry
)

Method Summary

Modifier and TypeMethod and Description
private void
extractAbstract()

Abstract in BibTeX - Description in DublinCore

private void
extractAuthor()

Author in BibTeX - Creator in DublinCore

public Optional<BibEntry>

Returns:

The bibEntry extracted from the document information.
extractBibtexEntry
()

Helper function for retrieving a BibEntry from the DublinCore metadata in a PDF file.

private void
extractBibTexFields()

This method sets all fields, which are custom in BibTeX and therefore supported by JabRef, but which are not included in the DublinCore format.

private void
extractCoverage()

No equivalent in BibTeX.

private void
extractDate()

BibTeX-Fields : year, month, day - 'dc:date' in DublinCore

private void
extractDOI()

DOI in BibTeX - Identifier in DublinCore

private void
extractEditor()

Editor in BibTeX - Contributor in DublinCore

private void
extractLanguages()

Language is equivalent in both formats (BibTeX and DublinCore)

private void
extractPublisher()

Publisher are equivalent in both formats (BibTeX and DublinCore)

private void
extractRights()

Rights are equivalent in both formats (BibTeX and DublinCore)

private void
extractSource()

Source is equivalent in both formats (BibTeX and DublinCore)

private void
extractSubject()

Keywords in BibTeX - Subjects in DublinCore

private void
extractTitle()

Title is equivalent in both formats (BibTeX and DublinCore)

private void
extractType()

Type is equivalent in both formats (BibTeX and DublinCore) Opposite method: DublinCoreExtractor#fillType()

private void
fillContributor(String authors)

BibTeX: editor; DC: 'dc:contributor'

private void
fillCoverage(String coverage)

BibTeX: Coverage (Custom Field); DC Field : Coverage

private void
fillCreator(String creators)

BibTeX: author; DC: 'dc:creator'

private void
fillCustomField(Field field)

All others (+ citation key) get packaged in the dc:relation attribute with bibtex/ prefix in the content.

private void
fillDate()

BibTeX: year, month; DC: 'dc:date'

private void
fillDescription(String description)

BibTeX: abstract; DC: 'dc:description'

public void
fillDublinCoreSchema()

Converts the content of the bibEntry to dublin core.

private void
fillIdentifier(String identifier)

BibTeX:doi; DC: 'dc:identifier'

private void
fillKeywords(String value)

BibTeX: keywords; DC: 'dc:subject'

private void
fillLanguages(String languages)

BibTeX: language; DC: dc:language

private void
fillPublisher(String publisher)

BibTeX: publisher, DC: dc:publisher

private void
fillRights(String rights)

BibTeX: Rights (Custom Field); DC: dc:rights

private void
fillSource(String source)

BibTeX: Source (Custom Field); DC: Source

private void
fillTitle(String title)

BibTeX: title; DC: 'dc:title'

private void
Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

bibEntryback to summary
private final BibEntry bibEntry
DC_COVERAGEback to summary
public static final String DC_COVERAGE
DC_RIGHTSback to summary
public static final String DC_RIGHTS
DC_SOURCEback to summary
public static final String DC_SOURCE
dcSchemaback to summary
private final DublinCoreSchema dcSchema
LOGGERback to summary
private static final Logger LOGGER
unprotectTermsFormatterback to summary
private final UnprotectTermsFormatter unprotectTermsFormatter
xmpPreferencesback to summary
private final XmpPreferences xmpPreferences

Constructor Detail

DublinCoreExtractorback to summary
public DublinCoreExtractor(DublinCoreSchema dcSchema, XmpPreferences xmpPreferences, BibEntry resolvedEntry)
Parameters
dcSchema:DublinCoreSchema

Metadata in DublinCore format.

resolvedEntry:BibEntry

The BibEntry object, which is filled during metadata extraction.

Method Detail

extractAbstractback to summary
private void extractAbstract()

Abstract in BibTeX - Description in DublinCore

extractAuthorback to summary
private void extractAuthor()

Author in BibTeX - Creator in DublinCore

extractBibtexEntryback to summary
public Optional<BibEntry> extractBibtexEntry()

Helper function for retrieving a BibEntry from the DublinCore metadata in a PDF file.

To understand how to get hold of a DublinCore have a look in the test cases for XMPUtil.

The BibEntry is build by mapping individual fields in the dublin core (like creator, title, subject) to fields in a bibtex bibEntry. In case special "bibtex/" entries are contained, the normal dublin core fields take precedence. For instance, the dublin core date takes precedence over bibtex/month.

The opposite method is DublinCoreExtractor#fillDublinCoreSchema()

Returns:Optional<BibEntry>

The bibEntry extracted from the document information.

extractBibTexFieldsback to summary
private void extractBibTexFields()

This method sets all fields, which are custom in BibTeX and therefore supported by JabRef, but which are not included in the DublinCore format.

The relation attribute of DublinCore is abused to store these custom fields. The prefix bibtex is used.

extractCoverageback to summary
private void extractCoverage()

No equivalent in BibTeX. Will create an unknown "Coverage" field.

extractDateback to summary
private void extractDate()

BibTeX-Fields : year, month, day - 'dc:date' in DublinCore

extractDOIback to summary
private void extractDOI()

DOI in BibTeX - Identifier in DublinCore

extractEditorback to summary
private void extractEditor()

Editor in BibTeX - Contributor in DublinCore

extractLanguagesback to summary
private void extractLanguages()

Language is equivalent in both formats (BibTeX and DublinCore)

extractPublisherback to summary
private void extractPublisher()

Publisher are equivalent in both formats (BibTeX and DublinCore)

extractRightsback to summary
private void extractRights()

Rights are equivalent in both formats (BibTeX and DublinCore)

extractSourceback to summary
private void extractSource()

Source is equivalent in both formats (BibTeX and DublinCore)

extractSubjectback to summary
private void extractSubject()

Keywords in BibTeX - Subjects in DublinCore

extractTitleback to summary
private void extractTitle()

Title is equivalent in both formats (BibTeX and DublinCore)

extractTypeback to summary
private void extractType()

Type is equivalent in both formats (BibTeX and DublinCore) Opposite method: DublinCoreExtractor#fillType()

fillContributorback to summary
private void fillContributor(String authors)

BibTeX: editor; DC: 'dc:contributor'

fillCoverageback to summary
private void fillCoverage(String coverage)

BibTeX: Coverage (Custom Field); DC Field : Coverage

fillCreatorback to summary
private void fillCreator(String creators)

BibTeX: author; DC: 'dc:creator'

fillCustomFieldback to summary
private void fillCustomField(Field field)

All others (+ citation key) get packaged in the dc:relation attribute with bibtex/ prefix in the content. The value of the given field is fetched from the class variable DublinCoreExtractor#bibEntry.

fillDateback to summary
private void fillDate()

BibTeX: year, month; DC: 'dc:date'

fillDescriptionback to summary
private void fillDescription(String description)

BibTeX: abstract; DC: 'dc:description'

fillDublinCoreSchemaback to summary
public void fillDublinCoreSchema()

Converts the content of the bibEntry to dublin core.

The opposite method is extractBibtexEntry().

A similar method for writing the DocumentInformationItem (DII) is #writeDocumentInformation(PDDocument,BibEntry,BibDatabase,XmpPreferences)

fillIdentifierback to summary
private void fillIdentifier(String identifier)

BibTeX:doi; DC: 'dc:identifier'

fillKeywordsback to summary
private void fillKeywords(String value)

BibTeX: keywords; DC: 'dc:subject'

fillLanguagesback to summary
private void fillLanguages(String languages)

BibTeX: language; DC: dc:language

fillPublisherback to summary
private void fillPublisher(String publisher)

BibTeX: publisher, DC: dc:publisher

fillRightsback to summary
private void fillRights(String rights)

BibTeX: Rights (Custom Field); DC: dc:rights

fillSourceback to summary
private void fillSource(String source)

BibTeX: Source (Custom Field); DC: Source

fillTitleback to summary
private void fillTitle(String title)

BibTeX: title; DC: 'dc:title'

fillTypeback to summary
private void fillType()

Opposite method: DublinCoreExtractor#extractType()