package org.jabref.logic.importer.util;
import java.util.Optional;
import java.util.function.Function;
import org.jabref.model.entry.FieldName;
import org.jabref.model.entry.identifier.DOI;
import org.jabref.model.entry.identifier.Eprint;
import org.jabref.model.entry.identifier.ISBN;
import org.jabref.model.entry.identifier.Identifier;
import org.jabref.model.entry.identifier.MathSciNetId;
import org.jabref.model.strings.StringUtil;
public class IdentifierParser {
public static Optional<? extends Identifier> parse(String fieldName, String input) {
if (StringUtil.isBlank(input)) {
return Optional.empty();
}
Function<String, Optional<? extends Identifier>> parser = getParserForField(fieldName);
return parser.apply(input);
}
private static Function<String, Optional<? extends Identifier>> getParserForField(String fieldName) {
switch (fieldName) {
case FieldName.DOI:
return DOI::parse;
case FieldName.ISBN:
return ISBN::parse;
case FieldName.EPRINT:
return Eprint::build;
case FieldName.MR_NUMBER:
return MathSciNetId::parse;
}
// By default, just return empty optional
return input -> Optional.empty();
}
}