package org.jabref.logic.autocompleter;
import java.util.Objects;
import org.jabref.logic.journals.JournalAbbreviationLoader;
import org.jabref.model.entry.FieldName;
import org.jabref.model.entry.FieldProperty;
import org.jabref.model.entry.InternalBibtexFields;
/**
* Returns an autocompleter to a given fieldname.
*
* @author kahlert, cordes
*/
public class AutoCompleterFactory {
private final AutoCompletePreferences preferences;
private final JournalAbbreviationLoader abbreviationLoader;
public AutoCompleterFactory(AutoCompletePreferences preferences, JournalAbbreviationLoader abbreviationLoader) {
this.preferences = Objects.requireNonNull(preferences);
this.abbreviationLoader = Objects.requireNonNull(abbreviationLoader);
}
public AutoCompleter<String> getFor(String fieldName) {
Objects.requireNonNull(fieldName);
if (InternalBibtexFields.getFieldProperties(fieldName).contains(FieldProperty.PERSON_NAMES)) {
return new NameFieldAutoCompleter(fieldName, preferences);
} else if (InternalBibtexFields.getFieldProperties(fieldName).contains(FieldProperty.SINGLE_ENTRY_LINK)) {
return new BibtexKeyAutoCompleter(preferences);
} else if (InternalBibtexFields.getFieldProperties(fieldName).contains(FieldProperty.JOURNAL_NAME)
|| FieldName.PUBLISHER.equals(fieldName)) {
return new JournalAutoCompleter(fieldName, preferences, abbreviationLoader);
} else {
return new DefaultAutoCompleter(fieldName, preferences);
}
}
public AutoCompleter<String> getPersonAutoCompleter() {
return new NameFieldAutoCompleter(InternalBibtexFields.getPersonNameFields(), true, preferences);
}
}