package org.jabref.model.entry.identifier;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Objects;
import java.util.Optional;
import org.jabref.model.entry.FieldName;
import org.jabref.model.strings.StringUtil;
/**
* Article identifier for MathSciNet (also sometimes called "MRNumber")
*/
public class MathSciNetId implements Identifier {
private String identifier;
public MathSciNetId(String identifier) {
this.identifier = Objects.requireNonNull(identifier);
}
public static Optional<MathSciNetId> parse(String mrNumberRaw) {
// Take everything before whitespace or open bracket, so something like `619693 (82j:58046)` gets parsed correctly
return Optional.of(new MathSciNetId(StringUtil.tokenizeToList(mrNumberRaw, " (").get(0)));
}
@Override
public String toString() {
return identifier;
}
/**
* Get URL in online database.
*/
@Override
public Optional<URI> getExternalURI() {
try {
return Optional.of(new URI("http://www.ams.org/mathscinet-getitem?mr=" + identifier));
} catch (URISyntaxException e) {
return Optional.empty();
}
}
@Override
public String getDefaultField() {
return FieldName.MR_NUMBER;
}
@Override
public String getNormalized() {
return identifier;
}
}