package org.jabref.gui.mergeentries;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import org.jabref.JabRefGUI;
import org.jabref.gui.BasePanel;
import org.jabref.logic.l10n.Localization;
import org.jabref.model.entry.BibEntry;
import org.jabref.model.entry.FieldName;
/**
* Class for fetching and merging information based on a specific field
*
*/
public class FetchAndMergeEntry {
// A list of all field which are supported
public static List<String> SUPPORTED_FIELDS = Arrays.asList(FieldName.DOI, FieldName.EPRINT, FieldName.ISBN);
/**
* Convenience constructor for a single field
*
* @param entry - BibEntry to fetch information for
* @param panel - current BasePanel
* @param field - field to get information from
*/
public FetchAndMergeEntry(BibEntry entry, BasePanel panel, String field) {
this(entry, panel, Arrays.asList(field));
}
public FetchAndMergeEntry(BibEntry entry, String field) {
this(entry, JabRefGUI.getMainFrame().getCurrentBasePanel(), field);
}
/**
* Default constructor
*
* @param entry - BibEntry to fetch information for
* @param panel - current BasePanel
* @param fields - List of fields to get information from, one at a time in given order
*/
public FetchAndMergeEntry(BibEntry entry, BasePanel panel, List<String> fields) {
for (String field : fields) {
if (entry.hasField(field)) {
new FetchAndMergeWorker(panel, entry, field).execute();
} else {
panel.frame().setStatus(Localization.lang("No %0 found", FieldName.getDisplayName(field)));
}
}
}
public static String getDisplayNameOfSupportedFields() {
return FieldName.orFields(SUPPORTED_FIELDS.stream()
.map(FieldName::getDisplayName)
.collect(Collectors.toList()));
}
}