From b22a6fff4bd837de61cace6e6e581a6162c130e7 Mon Sep 17 00:00:00 2001 From: subhramit Date: Wed, 20 Mar 2024 01:54:38 +0530 Subject: [PATCH 01/13] Fix MathSciNet parser --- CHANGELOG.md | 4 +- .../logic/importer/fetcher/MathSciNet.java | 138 +++++++++++++++--- .../importer/fetcher/MathSciNetTest.java | 34 ++++- 3 files changed, 153 insertions(+), 23 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fb50921e33d..56afd9b9e6b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -70,7 +70,7 @@ Note that this project **does not** adhere to [Semantic Versioning](https://semv - Clicking on the crossref and related tags in the entry editor jumps to the linked entry. [#5484](https://github.com/JabRef/jabref/issues/5484) [#9369](https://github.com/JabRef/jabref/issues/9369) - We fixed an issue where JabRef could not parse absolute file paths from Zotero exports. [#10959](https://github.com/JabRef/jabref/issues/10959) - We fixed an issue where an exception occured when toggling between "Live" or "Locked" in the internal Document Viewer. [#10935](https://github.com/JabRef/jabref/issues/10935) -- Fixed an issue on Windows where the browser extension reported failure to send an entry to JabRef even though it was sent properly. [JabRef-Browser-Extension#493](https://github.com/JabRef/JabRef-Browser-Extension/issues/493) +- We fixed an issue with where JabRef would throw an error when using MathSciNet search, as it was unable to parse the fetched JSON coreectly. [10996](https://github.com/JabRef/jabref/issues/10996) ### Removed @@ -1282,4 +1282,4 @@ The changelog of JabRef 2.11 and all previous versions is available as [text fil [5.0]: https://github.com/JabRef/jabref/compare/v5.0-beta...v5.0 [5.0-beta]: https://github.com/JabRef/jabref/compare/v5.0-alpha...v5.0-beta [5.0-alpha]: https://github.com/JabRef/jabref/compare/v4.3...v5.0-alpha - + \ No newline at end of file diff --git a/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java b/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java index c5c39d8136e..f3b41ecd1e8 100644 --- a/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java +++ b/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java @@ -5,11 +5,10 @@ import java.net.MalformedURLException; import java.net.URISyntaxException; import java.net.URL; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; -import java.util.Optional; +import java.nio.charset.StandardCharsets; +import java.util.*; import java.util.stream.Collectors; +import java.util.stream.IntStream; import org.jabref.logic.cleanup.DoiCleanup; import org.jabref.logic.cleanup.FieldFormatterCleanup; @@ -23,20 +22,19 @@ import org.jabref.logic.importer.Parser; import org.jabref.logic.importer.SearchBasedParserFetcher; import org.jabref.logic.importer.fetcher.transformers.DefaultQueryTransformer; -import org.jabref.logic.importer.fileformat.BibtexParser; import org.jabref.logic.util.OS; import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.field.AMSField; import org.jabref.model.entry.field.StandardField; import org.jabref.model.entry.field.UnknownField; -import org.jabref.model.util.DummyFileUpdateMonitor; +import org.jabref.model.entry.types.StandardEntryType; import kong.unirest.JsonNode; import kong.unirest.json.JSONArray; import kong.unirest.json.JSONException; +import kong.unirest.json.JSONObject; import org.apache.http.client.utils.URIBuilder; import org.apache.lucene.queryparser.flexible.core.nodes.QueryNode; -import org.jbibtex.TokenMgrException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -102,27 +100,39 @@ public URL getUrlForIdentifier(String identifier) throws URISyntaxException, Mal public Parser getParser() { return inputStream -> { String response = new BufferedReader(new InputStreamReader(inputStream)).lines().collect(Collectors.joining(OS.NEWLINE)); - BibtexParser bibtexParser = new BibtexParser(preferences, new DummyFileUpdateMonitor()); - List entries = new ArrayList<>(); + try { // Depending on the type of query we might get either a json object or directly a json array JsonNode node = new JsonNode(response); + if (node.isArray()) { JSONArray entriesArray = node.getArray(); for (int i = 0; i < entriesArray.length(); i++) { - String bibTexFormat = entriesArray.getJSONObject(i).getString("bib"); - entries.addAll(bibtexParser.parseEntries(bibTexFormat)); + JSONObject entryObject = entriesArray.getJSONObject(i); + BibEntry bibEntry = jsonItemToBibEntry(entryObject); + entries.add(bibEntry); } } else { var element = node.getObject(); - JSONArray entriesArray = element.getJSONObject("all").getJSONArray("results"); - for (int i = 0; i < entriesArray.length(); i++) { - String bibTexFormat = entriesArray.getJSONObject(i).getString("bibTexFormat"); - entries.addAll(bibtexParser.parseEntries(bibTexFormat)); + + if (element.has("all")) { + JSONArray entriesArray = element.getJSONObject("all").getJSONArray("results"); + for (int i = 0; i < entriesArray.length(); i++) { + JSONObject entryObject = entriesArray.getJSONObject(i); + BibEntry bibEntry = jsonItemToBibEntry(entryObject); + entries.add(bibEntry); + } + } else if (element.has("results")) { + JSONArray entriesArray = element.getJSONArray("results"); + for (int i = 0; i < entriesArray.length(); i++) { + JSONObject entryObject = entriesArray.getJSONObject(i); + BibEntry bibEntry = jsonItemToBibEntry(entryObject); + entries.add(bibEntry); + } } } - } catch (JSONException | TokenMgrException e) { + } catch (JSONException | ParseException e) { LOGGER.error("An error occurred while parsing fetched data", e); throw new ParseException("Error when parsing entry", e); } @@ -130,6 +140,101 @@ public Parser getParser() { }; } + private BibEntry jsonItemToBibEntry(JSONObject item) throws ParseException { + try { + BibEntry entry = new BibEntry(); + entry.setType(StandardEntryType.Article); + + // Define the field mappings + Map fieldMappings = Map.ofEntries( + Map.entry(StandardField.TITLE, new String[]{"titles", "title"}), + Map.entry(StandardField.AUTHOR, new String[]{"authors"}), + Map.entry(StandardField.YEAR, new String[]{"issue", "issue", "pubYear"}), + Map.entry(StandardField.JOURNAL, new String[]{"issue", "issue", "journal", "shortTitle"}), + Map.entry(StandardField.VOLUME, new String[]{"issue", "issue", "volume"}), + Map.entry(StandardField.NUMBER, new String[]{"issue", "issue", "number"}), + Map.entry(StandardField.PAGES, new String[]{"paging", "paging", "text"}), + Map.entry(StandardField.KEYWORDS, new String[]{"primaryClass"}), + Map.entry(StandardField.ISSN, new String[]{"issue", "issue", "journal", "issn"}) + ); + + // Set fields based on the mappings + for (Map.Entry mapEntry : fieldMappings.entrySet()) { + StandardField field = mapEntry.getKey(); + String[] path = mapEntry.getValue(); + + String value; + if (field == StandardField.AUTHOR) { + value = toAuthors(item.optJSONArray(path[0])); + } else if (field == StandardField.KEYWORDS) { + value = getKeywords(item.optJSONObject(path[0])); + } else { + value = getOrNull(item, path); + } + + if (value != null) { + entry.setField(field, value); + } + } + + // Handle articleUrl and mrnumber fields separately + String doi = item.optString("articleUrl", ""); + if (!doi.isEmpty()) { + entry.setField(StandardField.DOI, doi); + } + + String mrNumber = item.optString("mrnumber", ""); + if (!mrNumber.isEmpty()) { + entry.setField(StandardField.MR_NUMBER, mrNumber); + } + + return entry; + } catch (JSONException exception) { + throw new ParseException("MathSciNet API JSON format has changed", exception); + } + } + + private String getOrNull(JSONObject item, String... keys) { + Object value = item; + for (String key : keys) { + if (value instanceof JSONObject) { + value = ((JSONObject) value).opt(key); + } else if (value instanceof JSONArray) { + value = ((JSONArray) value).opt(Integer.parseInt(key)); + } else { + break; + } + } + + if (value instanceof String) { + String stringValue = (String) value; + return new String(stringValue.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); + } + + return null; + } + + private String toAuthors(JSONArray authors) { + if (authors == null) { + return ""; + } + + return IntStream.range(0, authors.length()) + .mapToObj(authors::getJSONObject) + .map(author -> { + String name = author.optString("name", ""); + return new String(name.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); + }) + .collect(Collectors.joining(" and ")); + } + + private String getKeywords(JSONObject primaryClass) { + if (primaryClass == null) { + return ""; + } + return primaryClass.optString("description", ""); + } + @Override public void doPostCleanup(BibEntry entry) { new MoveFieldCleanup(AMSField.FJOURNAL, StandardField.JOURNAL).cleanup(entry); @@ -142,4 +247,3 @@ public void doPostCleanup(BibEntry entry) { entry.setCommentsBeforeEntry(""); } } - diff --git a/src/test/java/org/jabref/logic/importer/fetcher/MathSciNetTest.java b/src/test/java/org/jabref/logic/importer/fetcher/MathSciNetTest.java index a4439ef9a67..db5b34bc3ee 100644 --- a/src/test/java/org/jabref/logic/importer/fetcher/MathSciNetTest.java +++ b/src/test/java/org/jabref/logic/importer/fetcher/MathSciNetTest.java @@ -1,5 +1,7 @@ package org.jabref.logic.importer.fetcher; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; import java.util.Collections; import java.util.List; import java.util.Optional; @@ -17,12 +19,12 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @FetcherTest class MathSciNetTest { - MathSciNet fetcher; private BibEntry ratiuEntry; @@ -30,7 +32,6 @@ class MathSciNetTest { void setUp() throws Exception { ImportFormatPreferences importFormatPreferences = mock(ImportFormatPreferences.class, Answers.RETURNS_DEEP_STUBS); when(importFormatPreferences.bibEntryPreferences().getKeywordSeparator()).thenReturn(','); - fetcher = new MathSciNet(importFormatPreferences); ratiuEntry = new BibEntry(); @@ -43,9 +44,9 @@ void setUp() throws Exception { ratiuEntry.setField(StandardField.YEAR, "2016"); ratiuEntry.setField(StandardField.NUMBER, "3"); ratiuEntry.setField(StandardField.PAGES, "571--589"); - ratiuEntry.setField(StandardField.ISSN, "1422-6928,1422-6952"); ratiuEntry.setField(StandardField.KEYWORDS, "76A15 (35A01 35A02 35K61 82D30)"); ratiuEntry.setField(StandardField.MR_NUMBER, "3537908"); + ratiuEntry.setField(StandardField.ISSN, "1422-6928, 1422-6952"); ratiuEntry.setField(StandardField.DOI, "10.1007/s00021-016-0250-0"); } @@ -84,4 +85,29 @@ void searchByIdFindsEntry() throws Exception { Optional fetchedEntry = fetcher.performSearchById("3537908"); assertEquals(Optional.of(ratiuEntry), fetchedEntry); } -} + + @Test + void testGetParser() throws Exception { + String json = "{\"results\":[{\"mrnumber\":4158623,\"titles\":{\"title\":\"On the weights of general MDS codes\",\"translatedTitle\":null},\"entryType\":\"J\",\"primaryClass\":{\"code\":\"94B65\",\"description\":\"Bounds on codes\"},\"authors\":[{\"id\":758603,\"name\":\"Alderson, Tim L.\"}],\"issue\":{\"issue\":{\"pubYear\":2020,\"pubYear2\":null,\"volume\":\"66\",\"volume2\":null,\"volume3\":null,\"number\":\"9\",\"journal\":{\"id\":2292,\"shortTitle\":\"IEEE Trans. Inform. Theory\",\"issn\":\"0018-9448\"},\"volSlash\":\"N\",\"isbn\":null,\"elementOrd\":null},\"translatedIssue\":null},\"book\":null,\"reviewer\":{\"public\":true,\"reviewers\":[{\"authId\":889610,\"rvrCode\":85231,\"name\":\"Jitman, Somphong\"}]},\"paging\":{\"paging\":{\"text\":\"5414--5418\"},\"translatedPaging\":null},\"counts\":{\"cited\":2},\"itemType\":\"Reviewed\",\"articleUrl\":\"https://doi.org/10.1109/TIT.2020.2977319\",\"openURL\":{\"imageLink\":\"http://www.lib.unb.ca/img/asin/res20x150.gif\",\"targetLink\":\"https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.1109%2FTIT.2020.2977319&rft.aufirst=Tim&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=00189448&rft.title=Institute of Electrical and Electronics Engineers Transactions on Information Theory&rft.atitle=On the weights of general MDS codes&rft.stitle=IEEE Trans Inform Theory&rft.volume=66&rft.date=2020&rft.spage=5414&rft.epage=5418&rft.pages=5414-5418&rft.issue=9&rft.jtitle=Institute of Electrical and Electronics Engineers Transactions on Information Theory\",\"textLink\":\"\"},\"prePubl\":null,\"public\":true}],\"total\":31}"; + + InputStream inputStream = new java.io.ByteArrayInputStream(json.getBytes(StandardCharsets.UTF_8)); + List entries = fetcher.getParser().parseEntries(inputStream); + + assertNotNull(entries); + assertFalse(entries.isEmpty()); + assertEquals(1, entries.size()); + + BibEntry parsedEntry = entries.get(0); + assertEquals("On the weights of general MDS codes", parsedEntry.getField(StandardField.TITLE).orElse(null)); + assertEquals("Alderson, Tim L.", parsedEntry.getField(StandardField.AUTHOR).orElse(null)); + assertEquals("2020", parsedEntry.getField(StandardField.YEAR).orElse(null)); + assertEquals("IEEE Trans. Inform. Theory", parsedEntry.getField(StandardField.JOURNAL).orElse(null)); + assertEquals("66", parsedEntry.getField(StandardField.VOLUME).orElse(null)); + assertEquals("9", parsedEntry.getField(StandardField.NUMBER).orElse(null)); + assertEquals("5414--5418", parsedEntry.getField(StandardField.PAGES).orElse(null)); + assertEquals("4158623", parsedEntry.getField(StandardField.MR_NUMBER).orElse(null)); + assertEquals("Bounds on codes", parsedEntry.getField(StandardField.KEYWORDS).orElse(null)); + assertEquals("https://doi.org/10.1109/TIT.2020.2977319", parsedEntry.getField(StandardField.DOI).orElse(null)); + assertEquals("0018-9448", parsedEntry.getField(StandardField.ISSN).orElse(null)); + } +} \ No newline at end of file From 3de80ef4dfe6272806105c9879495cfe783d843e Mon Sep 17 00:00:00 2001 From: subhramit Date: Wed, 20 Mar 2024 02:26:33 +0530 Subject: [PATCH 02/13] Conformed with stylechecks --- .../org/jabref/logic/importer/fetcher/MathSciNet.java | 5 ++++- .../org/jabref/logic/importer/fetcher/MathSciNetTest.java | 8 ++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java b/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java index f3b41ecd1e8..947ee696a7e 100644 --- a/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java +++ b/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java @@ -6,7 +6,10 @@ import java.net.URISyntaxException; import java.net.URL; import java.nio.charset.StandardCharsets; -import java.util.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Optional; import java.util.stream.Collectors; import java.util.stream.IntStream; diff --git a/src/test/java/org/jabref/logic/importer/fetcher/MathSciNetTest.java b/src/test/java/org/jabref/logic/importer/fetcher/MathSciNetTest.java index db5b34bc3ee..16884b4d1f4 100644 --- a/src/test/java/org/jabref/logic/importer/fetcher/MathSciNetTest.java +++ b/src/test/java/org/jabref/logic/importer/fetcher/MathSciNetTest.java @@ -89,14 +89,14 @@ void searchByIdFindsEntry() throws Exception { @Test void testGetParser() throws Exception { String json = "{\"results\":[{\"mrnumber\":4158623,\"titles\":{\"title\":\"On the weights of general MDS codes\",\"translatedTitle\":null},\"entryType\":\"J\",\"primaryClass\":{\"code\":\"94B65\",\"description\":\"Bounds on codes\"},\"authors\":[{\"id\":758603,\"name\":\"Alderson, Tim L.\"}],\"issue\":{\"issue\":{\"pubYear\":2020,\"pubYear2\":null,\"volume\":\"66\",\"volume2\":null,\"volume3\":null,\"number\":\"9\",\"journal\":{\"id\":2292,\"shortTitle\":\"IEEE Trans. Inform. Theory\",\"issn\":\"0018-9448\"},\"volSlash\":\"N\",\"isbn\":null,\"elementOrd\":null},\"translatedIssue\":null},\"book\":null,\"reviewer\":{\"public\":true,\"reviewers\":[{\"authId\":889610,\"rvrCode\":85231,\"name\":\"Jitman, Somphong\"}]},\"paging\":{\"paging\":{\"text\":\"5414--5418\"},\"translatedPaging\":null},\"counts\":{\"cited\":2},\"itemType\":\"Reviewed\",\"articleUrl\":\"https://doi.org/10.1109/TIT.2020.2977319\",\"openURL\":{\"imageLink\":\"http://www.lib.unb.ca/img/asin/res20x150.gif\",\"targetLink\":\"https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.1109%2FTIT.2020.2977319&rft.aufirst=Tim&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=00189448&rft.title=Institute of Electrical and Electronics Engineers Transactions on Information Theory&rft.atitle=On the weights of general MDS codes&rft.stitle=IEEE Trans Inform Theory&rft.volume=66&rft.date=2020&rft.spage=5414&rft.epage=5418&rft.pages=5414-5418&rft.issue=9&rft.jtitle=Institute of Electrical and Electronics Engineers Transactions on Information Theory\",\"textLink\":\"\"},\"prePubl\":null,\"public\":true}],\"total\":31}"; - + InputStream inputStream = new java.io.ByteArrayInputStream(json.getBytes(StandardCharsets.UTF_8)); List entries = fetcher.getParser().parseEntries(inputStream); - + assertNotNull(entries); assertFalse(entries.isEmpty()); assertEquals(1, entries.size()); - + BibEntry parsedEntry = entries.get(0); assertEquals("On the weights of general MDS codes", parsedEntry.getField(StandardField.TITLE).orElse(null)); assertEquals("Alderson, Tim L.", parsedEntry.getField(StandardField.AUTHOR).orElse(null)); @@ -110,4 +110,4 @@ void testGetParser() throws Exception { assertEquals("https://doi.org/10.1109/TIT.2020.2977319", parsedEntry.getField(StandardField.DOI).orElse(null)); assertEquals("0018-9448", parsedEntry.getField(StandardField.ISSN).orElse(null)); } -} \ No newline at end of file +} From 3dc1f55755259d57d5f0d351dfce848d5448a3b6 Mon Sep 17 00:00:00 2001 From: subhramit Date: Wed, 20 Mar 2024 03:18:49 +0530 Subject: [PATCH 03/13] Fix Objects import missing --- src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java b/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java index 947ee696a7e..d51fafc8ac6 100644 --- a/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java +++ b/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java @@ -9,6 +9,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Optional; import java.util.stream.Collectors; import java.util.stream.IntStream; From ec1b30e7dcf47a468e11da2ebeda7db345f9cdfc Mon Sep 17 00:00:00 2001 From: subhramit Date: Wed, 20 Mar 2024 03:54:35 +0530 Subject: [PATCH 04/13] Run gradle reWriteRun --- .../java/org/jabref/logic/importer/fetcher/MathSciNet.java | 3 +-- .../org/jabref/logic/importer/fetcher/MathSciNetTest.java | 7 ++++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java b/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java index d51fafc8ac6..9ae1e050620 100644 --- a/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java +++ b/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java @@ -210,8 +210,7 @@ private String getOrNull(JSONObject item, String... keys) { } } - if (value instanceof String) { - String stringValue = (String) value; + if (value instanceof String stringValue) { return new String(stringValue.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); } diff --git a/src/test/java/org/jabref/logic/importer/fetcher/MathSciNetTest.java b/src/test/java/org/jabref/logic/importer/fetcher/MathSciNetTest.java index 16884b4d1f4..549cb723554 100644 --- a/src/test/java/org/jabref/logic/importer/fetcher/MathSciNetTest.java +++ b/src/test/java/org/jabref/logic/importer/fetcher/MathSciNetTest.java @@ -1,5 +1,6 @@ package org.jabref.logic.importer.fetcher; +import java.io.ByteArrayInputStream; import java.io.InputStream; import java.nio.charset.StandardCharsets; import java.util.Collections; @@ -87,17 +88,17 @@ void searchByIdFindsEntry() throws Exception { } @Test - void testGetParser() throws Exception { + void getParser() throws Exception { String json = "{\"results\":[{\"mrnumber\":4158623,\"titles\":{\"title\":\"On the weights of general MDS codes\",\"translatedTitle\":null},\"entryType\":\"J\",\"primaryClass\":{\"code\":\"94B65\",\"description\":\"Bounds on codes\"},\"authors\":[{\"id\":758603,\"name\":\"Alderson, Tim L.\"}],\"issue\":{\"issue\":{\"pubYear\":2020,\"pubYear2\":null,\"volume\":\"66\",\"volume2\":null,\"volume3\":null,\"number\":\"9\",\"journal\":{\"id\":2292,\"shortTitle\":\"IEEE Trans. Inform. Theory\",\"issn\":\"0018-9448\"},\"volSlash\":\"N\",\"isbn\":null,\"elementOrd\":null},\"translatedIssue\":null},\"book\":null,\"reviewer\":{\"public\":true,\"reviewers\":[{\"authId\":889610,\"rvrCode\":85231,\"name\":\"Jitman, Somphong\"}]},\"paging\":{\"paging\":{\"text\":\"5414--5418\"},\"translatedPaging\":null},\"counts\":{\"cited\":2},\"itemType\":\"Reviewed\",\"articleUrl\":\"https://doi.org/10.1109/TIT.2020.2977319\",\"openURL\":{\"imageLink\":\"http://www.lib.unb.ca/img/asin/res20x150.gif\",\"targetLink\":\"https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.1109%2FTIT.2020.2977319&rft.aufirst=Tim&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=00189448&rft.title=Institute of Electrical and Electronics Engineers Transactions on Information Theory&rft.atitle=On the weights of general MDS codes&rft.stitle=IEEE Trans Inform Theory&rft.volume=66&rft.date=2020&rft.spage=5414&rft.epage=5418&rft.pages=5414-5418&rft.issue=9&rft.jtitle=Institute of Electrical and Electronics Engineers Transactions on Information Theory\",\"textLink\":\"\"},\"prePubl\":null,\"public\":true}],\"total\":31}"; - InputStream inputStream = new java.io.ByteArrayInputStream(json.getBytes(StandardCharsets.UTF_8)); + InputStream inputStream = new ByteArrayInputStream(json.getBytes(StandardCharsets.UTF_8)); List entries = fetcher.getParser().parseEntries(inputStream); assertNotNull(entries); assertFalse(entries.isEmpty()); assertEquals(1, entries.size()); - BibEntry parsedEntry = entries.get(0); + BibEntry parsedEntry = entries.getFirst(); assertEquals("On the weights of general MDS codes", parsedEntry.getField(StandardField.TITLE).orElse(null)); assertEquals("Alderson, Tim L.", parsedEntry.getField(StandardField.AUTHOR).orElse(null)); assertEquals("2020", parsedEntry.getField(StandardField.YEAR).orElse(null)); From 95ac88c4362accff559490695befd944348c92e2 Mon Sep 17 00:00:00 2001 From: Subhramit Basu Bhowmick <74734844+subhramit@users.noreply.github.com> Date: Wed, 20 Mar 2024 20:06:29 +0530 Subject: [PATCH 05/13] Update BibEntry type set (via constructor) Co-authored-by: Oliver Kopp --- .../java/org/jabref/logic/importer/fetcher/MathSciNet.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java b/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java index 9ae1e050620..10b29488e18 100644 --- a/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java +++ b/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java @@ -146,8 +146,7 @@ public Parser getParser() { private BibEntry jsonItemToBibEntry(JSONObject item) throws ParseException { try { - BibEntry entry = new BibEntry(); - entry.setType(StandardEntryType.Article); + BibEntry entry = new BibEntry(StandardEntryType.Article); // Define the field mappings Map fieldMappings = Map.ofEntries( From e1e1daaee2a2d3a3bf8d32a83a94a2d3751964d5 Mon Sep 17 00:00:00 2001 From: subhramit Date: Wed, 20 Mar 2024 23:48:56 +0530 Subject: [PATCH 06/13] Apply review changes --- CHANGELOG.md | 3 +- .../logic/importer/fetcher/MathSciNet.java | 45 +- .../importer/fetcher/MathSciNetTest.java | 1353 ++++++++++++++++- 3 files changed, 1357 insertions(+), 44 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5e77f7020fe..2f901d4044b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -73,6 +73,7 @@ Note that this project **does not** adhere to [Semantic Versioning](https://semv - Clicking on the crossref and related tags in the entry editor jumps to the linked entry. [#5484](https://github.com/JabRef/jabref/issues/5484) [#9369](https://github.com/JabRef/jabref/issues/9369) - We fixed an issue where JabRef could not parse absolute file paths from Zotero exports. [#10959](https://github.com/JabRef/jabref/issues/10959) - We fixed an issue where an exception occured when toggling between "Live" or "Locked" in the internal Document Viewer. [#10935](https://github.com/JabRef/jabref/issues/10935) +- Fixed an issue on Windows where the browser extension reported failure to send an entry to JabRef even though it was sent properly. [JabRef-Browser-Extension#493](https://github.com/JabRef/JabRef-Browser-Extension/issues/493) - We fixed an issue with where JabRef would throw an error when using MathSciNet search, as it was unable to parse the fetched JSON coreectly. [10996](https://github.com/JabRef/jabref/issues/10996) ### Removed @@ -1285,4 +1286,4 @@ The changelog of JabRef 2.11 and all previous versions is available as [text fil [5.0]: https://github.com/JabRef/jabref/compare/v5.0-beta...v5.0 [5.0-beta]: https://github.com/JabRef/jabref/compare/v5.0-alpha...v5.0-beta [5.0-alpha]: https://github.com/JabRef/jabref/compare/v4.3...v5.0-alpha - \ No newline at end of file + diff --git a/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java b/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java index 10b29488e18..59146b1f1a5 100644 --- a/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java +++ b/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java @@ -48,7 +48,18 @@ public class MathSciNet implements SearchBasedParserFetcher, EntryBasedParserFetcher, IdBasedParserFetcher { private static final Logger LOGGER = LoggerFactory.getLogger(MathSciNet.class); private final ImportFormatPreferences preferences; - + // Define the field mappings + private final Map> fieldMappings = Map.ofEntries( + Map.entry(StandardField.TITLE, List.of("titles", "title")), + Map.entry(StandardField.AUTHOR, List.of("authors")), + Map.entry(StandardField.YEAR, List.of("issue", "issue", "pubYear")), + Map.entry(StandardField.JOURNAL, List.of("issue", "issue", "journal", "shortTitle")), + Map.entry(StandardField.VOLUME, List.of("issue", "issue", "volume")), + Map.entry(StandardField.NUMBER, List.of("issue", "issue", "number")), + Map.entry(StandardField.PAGES, List.of("paging", "paging", "text")), + Map.entry(StandardField.KEYWORDS, List.of("primaryClass")), + Map.entry(StandardField.ISSN, List.of("issue", "issue", "journal", "issn")) + ); public MathSciNet(ImportFormatPreferences preferences) { this.preferences = Objects.requireNonNull(preferences); } @@ -147,39 +158,24 @@ public Parser getParser() { private BibEntry jsonItemToBibEntry(JSONObject item) throws ParseException { try { BibEntry entry = new BibEntry(StandardEntryType.Article); - - // Define the field mappings - Map fieldMappings = Map.ofEntries( - Map.entry(StandardField.TITLE, new String[]{"titles", "title"}), - Map.entry(StandardField.AUTHOR, new String[]{"authors"}), - Map.entry(StandardField.YEAR, new String[]{"issue", "issue", "pubYear"}), - Map.entry(StandardField.JOURNAL, new String[]{"issue", "issue", "journal", "shortTitle"}), - Map.entry(StandardField.VOLUME, new String[]{"issue", "issue", "volume"}), - Map.entry(StandardField.NUMBER, new String[]{"issue", "issue", "number"}), - Map.entry(StandardField.PAGES, new String[]{"paging", "paging", "text"}), - Map.entry(StandardField.KEYWORDS, new String[]{"primaryClass"}), - Map.entry(StandardField.ISSN, new String[]{"issue", "issue", "journal", "issn"}) - ); - // Set fields based on the mappings - for (Map.Entry mapEntry : fieldMappings.entrySet()) { + for (Map.Entry> mapEntry : fieldMappings.entrySet()) { StandardField field = mapEntry.getKey(); - String[] path = mapEntry.getValue(); + List path = mapEntry.getValue(); String value; if (field == StandardField.AUTHOR) { - value = toAuthors(item.optJSONArray(path[0])); + value = toAuthors(item.optJSONArray(path.getFirst())); } else if (field == StandardField.KEYWORDS) { - value = getKeywords(item.optJSONObject(path[0])); + value = getKeywords(item.optJSONObject(path.getFirst())); } else { - value = getOrNull(item, path); + value = getOrNull(item, path).orElse(null); } if (value != null) { entry.setField(field, value); } } - // Handle articleUrl and mrnumber fields separately String doi = item.optString("articleUrl", ""); if (!doi.isEmpty()) { @@ -190,14 +186,13 @@ private BibEntry jsonItemToBibEntry(JSONObject item) throws ParseException { if (!mrNumber.isEmpty()) { entry.setField(StandardField.MR_NUMBER, mrNumber); } - return entry; } catch (JSONException exception) { throw new ParseException("MathSciNet API JSON format has changed", exception); } } - private String getOrNull(JSONObject item, String... keys) { + private Optional getOrNull(JSONObject item, List keys) { Object value = item; for (String key : keys) { if (value instanceof JSONObject) { @@ -210,10 +205,10 @@ private String getOrNull(JSONObject item, String... keys) { } if (value instanceof String stringValue) { - return new String(stringValue.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); + return Optional.of(new String(stringValue.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8)); } - return null; + return Optional.empty(); } private String toAuthors(JSONArray authors) { diff --git a/src/test/java/org/jabref/logic/importer/fetcher/MathSciNetTest.java b/src/test/java/org/jabref/logic/importer/fetcher/MathSciNetTest.java index 549cb723554..9003e1d42d6 100644 --- a/src/test/java/org/jabref/logic/importer/fetcher/MathSciNetTest.java +++ b/src/test/java/org/jabref/logic/importer/fetcher/MathSciNetTest.java @@ -20,7 +20,6 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -89,26 +88,1344 @@ void searchByIdFindsEntry() throws Exception { @Test void getParser() throws Exception { - String json = "{\"results\":[{\"mrnumber\":4158623,\"titles\":{\"title\":\"On the weights of general MDS codes\",\"translatedTitle\":null},\"entryType\":\"J\",\"primaryClass\":{\"code\":\"94B65\",\"description\":\"Bounds on codes\"},\"authors\":[{\"id\":758603,\"name\":\"Alderson, Tim L.\"}],\"issue\":{\"issue\":{\"pubYear\":2020,\"pubYear2\":null,\"volume\":\"66\",\"volume2\":null,\"volume3\":null,\"number\":\"9\",\"journal\":{\"id\":2292,\"shortTitle\":\"IEEE Trans. Inform. Theory\",\"issn\":\"0018-9448\"},\"volSlash\":\"N\",\"isbn\":null,\"elementOrd\":null},\"translatedIssue\":null},\"book\":null,\"reviewer\":{\"public\":true,\"reviewers\":[{\"authId\":889610,\"rvrCode\":85231,\"name\":\"Jitman, Somphong\"}]},\"paging\":{\"paging\":{\"text\":\"5414--5418\"},\"translatedPaging\":null},\"counts\":{\"cited\":2},\"itemType\":\"Reviewed\",\"articleUrl\":\"https://doi.org/10.1109/TIT.2020.2977319\",\"openURL\":{\"imageLink\":\"http://www.lib.unb.ca/img/asin/res20x150.gif\",\"targetLink\":\"https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.1109%2FTIT.2020.2977319&rft.aufirst=Tim&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=00189448&rft.title=Institute of Electrical and Electronics Engineers Transactions on Information Theory&rft.atitle=On the weights of general MDS codes&rft.stitle=IEEE Trans Inform Theory&rft.volume=66&rft.date=2020&rft.spage=5414&rft.epage=5418&rft.pages=5414-5418&rft.issue=9&rft.jtitle=Institute of Electrical and Electronics Engineers Transactions on Information Theory\",\"textLink\":\"\"},\"prePubl\":null,\"public\":true}],\"total\":31}"; + String json = """ + { + "results": [ + { + "mrnumber": 4158623, + "titles": { + "title": "On the weights of general MDS codes", + "translatedTitle": null + }, + "entryType": "J", + "primaryClass": { + "code": "94B65", + "description": "Bounds on codes" + }, + "authors": [ + { + "id": 758603, + "name": "Alderson, Tim L." + } + ], + "issue": { + "issue": { + "pubYear": 2020, + "pubYear2": null, + "volume": "66", + "volume2": null, + "volume3": null, + "number": "9", + "journal": { + "id": 2292, + "shortTitle": "IEEE Trans. Inform. Theory" + }, + "volSlash": "N", + "isbn": null, + "elementOrd": null + }, + "translatedIssue": null + }, + "book": null, + "reviewer": { + "public": true, + "reviewers": [ + { + "authId": 889610, + "rvrCode": 85231, + "name": "Jitman, Somphong" + } + ] + }, + "paging": { + "paging": { + "text": "5414--5418" + }, + "translatedPaging": null + }, + "counts": { + "cited": 2 + }, + "itemType": "Reviewed", + "articleUrl": "https://doi.org/10.1109/TIT.2020.2977319", + "openURL": { + "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", + "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.1109%2FTIT.2020.2977319&rft.aufirst=Tim&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=00189448&rft.title=Institute of Electrical and Electronics Engineers Transactions on Information Theory&rft.atitle=On the weights of general MDS codes&rft.stitle=IEEE Trans Inform Theory&rft.volume=66&rft.date=2020&rft.spage=5414&rft.epage=5418&rft.pages=5414-5418&rft.issue=9&rft.jtitle=Institute of Electrical and Electronics Engineers Transactions on Information Theory", + "textLink": "" + }, + "prePubl": null, + "public": true + }, + { + "mrnumber": 4019905, + "titles": { + "title": "$n$-dimensional optical orthogonal codes, bounds and optimal constructions", + "translatedTitle": null + }, + "entryType": "J", + "primaryClass": { + "code": "94B65", + "description": "Bounds on codes" + }, + "authors": [ + { + "id": 758603, + "name": "Alderson, T. L." + } + ], + "issue": { + "issue": { + "pubYear": 2019, + "pubYear2": null, + "volume": "30", + "volume2": null, + "volume3": null, + "number": "5", + "journal": { + "id": 4449, + "shortTitle": "Appl. Algebra Engrg. Comm. Comput." + }, + "volSlash": "N", + "isbn": null, + "elementOrd": null + }, + "translatedIssue": null + }, + "book": null, + "reviewer": { + "public": true, + "reviewers": [ + { + "authId": 929349, + "rvrCode": 128559, + "name": "Lee, Nari" + } + ] + }, + "paging": { + "paging": { + "text": "373--386" + }, + "translatedPaging": null + }, + "counts": null, + "itemType": "Reviewed", + "articleUrl": "https://doi.org/10.1007/s00200-018-00379-3", + "openURL": { + "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", + "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.1007%2Fs00200-018-00379-3&rft.aufirst=T.&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=09381279&rft.title=Applicable Algebra in Engineering, Communication and Computing&rft.atitle=$n$-dimensional optical orthogonal codes, bounds and optimal constructions&rft.stitle=Appl Algebra Engrg Comm Comput &rft.volume=30&rft.date=2019&rft.spage=373&rft.epage=386&rft.pages=373-386&rft.issue=5&rft.jtitle=Applicable Algebra in Engineering, Communication and Computing", + "textLink": "" + }, + "prePubl": null, + "public": true + }, + { + "mrnumber": 4014640, + "titles": { + "title": "A note on full weight spectrum codes", + "translatedTitle": null + }, + "entryType": "J", + "primaryClass": { + "code": "94B05", + "description": "Linear codes (general theory)" + }, + "authors": [ + { + "id": 758603, + "name": "Alderson, Tim L." + } + ], + "issue": { + "issue": { + "pubYear": 2019, + "pubYear2": null, + "volume": "8", + "volume2": null, + "volume3": null, + "number": "3", + "journal": { + "id": 8218, + "shortTitle": "Trans. Comb." + }, + "volSlash": "N", + "isbn": null, + "elementOrd": null + }, + "translatedIssue": null + }, + "book": null, + "reviewer": null, + "paging": { + "paging": { + "text": "15--22" + }, + "translatedPaging": null + }, + "counts": { + "cited": 6 + }, + "itemType": "Summary", + "articleUrl": "https://doi.org/10.22108/toc.2019.112621.1584", + "openURL": { + "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", + "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.22108%2Ftoc.2019.112621.1584&rft.aufirst=Tim&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=22518657&rft.title=Transactions on Combinatorics&rft.atitle=A note on full weight spectrum codes&rft.stitle=Trans Comb &rft.volume=8&rft.date=2019&rft.spage=15&rft.epage=22&rft.pages=15-22&rft.issue=3&rft.jtitle=Transactions on Combinatorics", + "textLink": "" + }, + "prePubl": null, + "public": true + }, + { + "mrnumber": 3917650, + "titles": { + "title": "Maximum weight spectrum codes", + "translatedTitle": null + }, + "entryType": "J", + "primaryClass": { + "code": "94B05", + "description": "Linear codes (general theory)" + }, + "authors": [ + { + "id": 758603, + "name": "Alderson, Tim" + }, + { + "id": 1251963, + "name": "Neri, Alessandro" + } + ], + "issue": { + "issue": { + "pubYear": 2019, + "pubYear2": null, + "volume": "13", + "volume2": null, + "volume3": null, + "number": "1", + "journal": { + "id": 6241, + "shortTitle": "Adv. Math. Commun." + }, + "volSlash": "N", + "isbn": null, + "elementOrd": null + }, + "translatedIssue": null + }, + "book": null, + "reviewer": { + "public": true, + "reviewers": [ + { + "authId": 685341, + "rvrCode": 30916, + "name": "Oluwade, Bamidele A." + } + ] + }, + "paging": { + "paging": { + "text": "101--119" + }, + "translatedPaging": null + }, + "counts": { + "cited": 6 + }, + "itemType": "Reviewed", + "articleUrl": "https://doi.org/10.3934/amc.2019006", + "openURL": { + "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", + "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.3934%2Famc.2019006&rft.aufirst=Tim&rft.auinit=T&rft.auinit1=T&rft.auinitm=&rft.aulast=Alderson&rft.genre=article&rft.issn=19305346&rft.title=Advances in Mathematics of Communications&rft.atitle=Maximum weight spectrum codes&rft.stitle=Adv Math Commun &rft.volume=13&rft.date=2019&rft.spage=101&rft.epage=119&rft.pages=101-119&rft.issue=1&rft.jtitle=Advances in Mathematics of Communications", + "textLink": "" + }, + "prePubl": null, + "public": true + }, + { + "mrnumber": 3897552, + "titles": { + "title": "How many weights can a linear code have?", + "translatedTitle": null + }, + "entryType": "J", + "primaryClass": { + "code": "94B05", + "description": "Linear codes (general theory)" + }, + "authors": [ + { + "id": 863999, + "name": "Shi, Minjia" + }, + { + "id": 1276838, + "name": "Zhu, Hongwei" + }, + { + "id": 225546, + "name": "Solé, Patrick" + }, + { + "id": 50285, + "name": "Cohen, Gérard D." + } + ], + "issue": { + "issue": { + "pubYear": 2019, + "pubYear2": null, + "volume": "87", + "volume2": null, + "volume3": null, + "number": "1", + "journal": { + "id": 6036, + "shortTitle": "Des. Codes Cryptogr." + }, + "volSlash": "N", + "isbn": null, + "elementOrd": null + }, + "translatedIssue": null + }, + "book": null, + "reviewer": { + "public": true, + "reviewers": [ + { + "authId": 249580, + "rvrCode": 36256, + "name": "Hou, Xiang-dong" + } + ] + }, + "paging": { + "paging": { + "text": "87--95" + }, + "translatedPaging": null + }, + "counts": { + "cited": 9 + }, + "itemType": "Reviewed", + "articleUrl": "https://doi.org/10.1007/s10623-018-0488-z", + "openURL": { + "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", + "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.1007%2Fs10623-018-0488-z&rft.aufirst=Minjia&rft.auinit=M&rft.auinit1=M&rft.auinitm=&rft.aulast=Shi&rft.genre=article&rft.issn=09251022&rft.title=Designs, Codes and Cryptography An International Journal&rft.atitle=How many weights can a linear code have?&rft.stitle=Des Codes Cryptogr &rft.volume=87&rft.date=2019&rft.spage=87&rft.epage=95&rft.pages=87-95&rft.issue=1&rft.jtitle=Designs, Codes and Cryptography An International Journal", + "textLink": "" + }, + "prePubl": null, + "public": true + }, + { + "mrnumber": 3809747, + "titles": { + "title": "3-dimensional optical orthogonal codes with ideal autocorrelation-bounds and optimal constructions", + "translatedTitle": null + }, + "entryType": "J", + "primaryClass": { + "code": "94A55", + "description": "Shift register sequences and sequences over finite alphabets in information and communication theory" + }, + "authors": [ + { + "id": 758603, + "name": "Alderson, Tim L." + } + ], + "issue": { + "issue": { + "pubYear": 2018, + "pubYear2": null, + "volume": "64", + "volume2": null, + "volume3": null, + "number": "6", + "journal": { + "id": 2292, + "shortTitle": "IEEE Trans. Inform. Theory" + }, + "volSlash": "N", + "isbn": null, + "elementOrd": null + }, + "translatedIssue": null + }, + "book": null, + "reviewer": null, + "paging": { + "paging": { + "text": "4392--4398" + }, + "translatedPaging": null + }, + "counts": { + "cited": 1 + }, + "itemType": "Summary", + "articleUrl": "https://doi.org/10.1109/TIT.2017.2717538", + "openURL": { + "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", + "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.1109%2FTIT.2017.2717538&rft.aufirst=Tim&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=00189448&rft.title=Institute of Electrical and Electronics Engineers Transactions on Information Theory&rft.atitle=3-dimensional optical orthogonal codes with ideal autocorrelation-bounds and optimal constructions&rft.stitle=IEEE Trans Inform Theory&rft.volume=64&rft.date=2018&rft.spage=4392&rft.epage=4398&rft.pages=4392-4398&rft.issue=6&rft.jtitle=Institute of Electrical and Electronics Engineers Transactions on Information Theory", + "textLink": "" + }, + "prePubl": null, + "public": true + }, + { + "mrnumber": 3216214, + "titles": { + "title": "The partition weight enumerator and bounds on MDS codes", + "translatedTitle": null + }, + "entryType": "J", + "primaryClass": { + "code": "94B05", + "description": "Linear codes (general theory)" + }, + "authors": [ + { + "id": 758603, + "name": "Alderson, T. L." + }, + { + "id": 1068150, + "name": "Huntemann, Svenja" + } + ], + "issue": { + "issue": { + "pubYear": 2014, + "pubYear2": null, + "volume": "6", + "volume2": null, + "volume3": null, + "number": "1", + "journal": { + "id": 7425, + "shortTitle": "Atl. Electron. J. Math." + }, + "volSlash": "N", + "isbn": null, + "elementOrd": null + }, + "translatedIssue": null + }, + "book": null, + "reviewer": null, + "paging": { + "paging": { + "text": "1--10" + }, + "translatedPaging": null + }, + "counts": { + "cited": 2 + }, + "itemType": "Summary", + "articleUrl": null, + "openURL": { + "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", + "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft.aufirst=T.&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.title=Atlantic Electronic Journal of Mathematics&rft.atitle=The partition weight enumerator and bounds on MDS codes&rft.stitle=Atl Electron J Math &rft.volume=6&rft.date=2014&rft.spage=1&rft.epage=10&rft.pages=1-10&rft.issue=1&rft.jtitle=Atlantic Electronic Journal of Mathematics", + "textLink": "" + }, + "prePubl": null, + "public": true + }, + { + "mrnumber": 2793231, + "titles": { + "title": "Spreads, arcs, and multiple wavelength codes", + "translatedTitle": null + }, + "entryType": "J", + "primaryClass": { + "code": "94B60", + "description": "Other types of codes" + }, + "authors": [ + { + "id": 758603, + "name": "Alderson, T. L." + }, + { + "id": 692091, + "name": "Mellinger, Keith E." + } + ], + "issue": { + "issue": { + "pubYear": 2011, + "pubYear2": null, + "volume": "311", + "volume2": null, + "volume3": null, + "number": "13", + "journal": { + "id": 643, + "shortTitle": "Discrete Math." + }, + "volSlash": "N", + "isbn": null, + "elementOrd": null + }, + "translatedIssue": null + }, + "book": null, + "reviewer": { + "public": true, + "reviewers": [ + { + "authId": 850192, + "rvrCode": 71699, + "name": "Fan, Cuiling" + } + ] + }, + "paging": { + "paging": { + "text": "1187--1196" + }, + "translatedPaging": null + }, + "counts": { + "cited": 6 + }, + "itemType": "Reviewed", + "articleUrl": "https://doi.org/10.1016/j.disc.2010.06.010", + "openURL": { + "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", + "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.1016%2Fj.disc.2010.06.010&rft.aufirst=T.&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=0012365X&rft.title=Discrete Mathematics&rft.atitle=Spreads, arcs, and multiple wavelength codes&rft.stitle=Discrete Math &rft.volume=311&rft.date=2011&rft.spage=1187&rft.epage=1196&rft.pages=1187-1196&rft.issue=13&rft.jtitle=Discrete Mathematics", + "textLink": "" + }, + "prePubl": null, + "public": true + }, + { + "mrnumber": 2772904, + "titles": { + "title": "Classes of permutation arrays in finite projective spaces", + "translatedTitle": null + }, + "entryType": "J", + "primaryClass": { + "code": "51E15", + "description": "Finite affine and projective planes (geometric aspects)" + }, + "authors": [ + { + "id": 758603, + "name": "Alderson, T. L." + }, + { + "id": 692091, + "name": "Mellinger, Keith E." + } + ], + "issue": { + "issue": { + "pubYear": 2010, + "pubYear2": null, + "volume": "1", + "volume2": null, + "volume3": null, + "number": "4", + "journal": { + "id": 7248, + "shortTitle": "Int. J. Inf. Coding Theory" + }, + "volSlash": "N", + "isbn": null, + "elementOrd": null + }, + "translatedIssue": null + }, + "book": null, + "reviewer": { + "public": true, + "reviewers": [ + { + "authId": 97215, + "rvrCode": 6155, + "name": "Kallaher, M. J." + } + ] + }, + "paging": { + "paging": { + "text": "371--383" + }, + "translatedPaging": null + }, + "counts": null, + "itemType": "Reviewed", + "articleUrl": "https://doi.org/10.1504/IJICOT.2010.032863", + "openURL": { + "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", + "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.1504%2FIJICOT.2010.032863&rft.aufirst=T.&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=17537703&rft.title=International Journal of Information and Coding Theory IJICOT&rft.atitle=Classes of permutation arrays in finite projective spaces&rft.stitle=Int J Inf Coding Theory&rft.volume=1&rft.date=2010&rft.spage=371&rft.epage=383&rft.pages=371-383&rft.issue=4&rft.jtitle=International Journal of Information and Coding Theory IJICOT", + "textLink": "" + }, + "prePubl": null, + "public": true + }, + { + "mrnumber": 2766013, + "titles": { + "title": "Hyperconics and multiple weight codes for OCDMA", + "translatedTitle": null + }, + "entryType": "BC", + "primaryClass": { + "code": "94B27", + "description": "Geometric methods (including applications of algebraic geometry) applied to coding theory" + }, + "authors": [ + { + "id": 758603, + "name": "Alderson, T. L." + } + ], + "issue": { + "issue": null, + "translatedIssue": null + }, + "book": { + "pubYear": 2010, + "publisher": [ + { + "name": "American Mathematical Society", + "location": "Providence, RI", + "preText": null, + "postText": null + } + ], + "isbn": [ + "978-0-8218-4956-9" + ], + "series": [ + { + "serId": 1059, + "title": "Contemporary Mathematics", + "transTitle": null, + "volume": "523", + "shortTitle": "Contemp. Math." + } + ] + }, + "reviewer": { + "public": true, + "reviewers": [ + { + "authId": 173380, + "rvrCode": 18754, + "name": "Tonchev, Vladimir D." + } + ] + }, + "paging": { + "paging": { + "text": "67--76" + }, + "translatedPaging": null + }, + "counts": null, + "itemType": "Reviewed", + "articleUrl": "https://doi.org/10.1090/conm/523/10332", + "openURL": { + "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", + "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:book&rft_id=info:doi/10.1090%2Fconm%2F523%2F10332&rft_id=urn:ISBN:978-0-8218-4956-9&rft.aufirst=T.&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=proceeding&rft.title=Error-correcting codes, finite geometries and cryptography&rft.atitle=Hyperconics and multiple weight codes for OCDMA&rft.stitle=Contemporary Mathematics&rft.volume=523&rft.date=2010&rft.spage=67&rft.epage=76&rft.pages=67-76&rft.isbn=9780821849569", + "textLink": "" + }, + "prePubl": null, + "public": true + }, + { + "mrnumber": 2742541, + "titles": { + "title": "Error-correcting codes, finite geometries and cryptography", + "translatedTitle": null + }, + "entryType": "BCZ", + "primaryClass": { + "code": "94Bxx", + "description": "" + }, + "authors": [], + "issue": { + "issue": null, + "translatedIssue": null + }, + "book": { + "pubYear": 2010, + "publisher": [ + { + "name": "American Mathematical Society", + "location": "Providence, RI", + "preText": null, + "postText": null + } + ], + "isbn": [ + "978-0-8218-4956-9" + ], + "series": [ + { + "serId": 1059, + "title": "Contemporary Mathematics", + "transTitle": null, + "volume": "523", + "shortTitle": "Contemp. Math." + } + ] + }, + "reviewer": null, + "paging": { + "paging": { + "text": "viii+244 pp." + }, + "translatedPaging": null + }, + "counts": null, + "itemType": "Summary", + "articleUrl": "https://doi.org/10.1090/conm/523", + "openURL": { + "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", + "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:book&rft_id=info:doi/10.1090%2Fconm%2F523&rft_id=urn:ISBN:978-0-8218-4956-9&rft.genre=conference&rft.title=Error-correcting codes, finite geometries and cryptography&rft.stitle=Contemporary Mathematics&rft.volume=523&rft.date=2010&rft.spage=1&rft.spage=244&rft.pages=1-244&rft.isbn=9780821849569", + "textLink": "" + }, + "prePubl": null, + "public": true + }, + { + "mrnumber": 2553388, + "titles": { + "title": "2-dimensional optical orthogonal codes from Singer groups", + "translatedTitle": null + }, + "entryType": "J", + "primaryClass": { + "code": "94B60", + "description": "Other types of codes" + }, + "authors": [ + { + "id": 758603, + "name": "Alderson, T. L." + }, + { + "id": 692091, + "name": "Mellinger, Keith E." + } + ], + "issue": { + "issue": { + "pubYear": 2009, + "pubYear2": null, + "volume": "157", + "volume2": null, + "volume3": null, + "number": "14", + "journal": { + "id": 615, + "shortTitle": "Discrete Appl. Math." + }, + "volSlash": "N", + "isbn": null, + "elementOrd": null + }, + "translatedIssue": null + }, + "book": null, + "reviewer": null, + "paging": { + "paging": { + "text": "3008--3019" + }, + "translatedPaging": null + }, + "counts": { + "cited": 18 + }, + "itemType": "Summary", + "articleUrl": "https://doi.org/10.1016/j.dam.2009.06.002", + "openURL": { + "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", + "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.1016%2Fj.dam.2009.06.002&rft.aufirst=T.&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=0166218X&rft.title=Discrete Applied Mathematics The Journal of Combinatorial Algorithms, Informatics and Computational Sciences&rft.atitle=2-dimensional optical orthogonal codes from Singer groups&rft.stitle=Discrete Appl Math &rft.volume=157&rft.date=2009&rft.spage=3008&rft.epage=3019&rft.pages=3008-3019&rft.issue=14&rft.jtitle=Discrete Applied Mathematics The Journal of Combinatorial Algorithms, Informatics and Computational Sciences", + "textLink": "" + }, + "prePubl": null, + "public": true + }, + { + "mrnumber": 2529622, + "titles": { + "title": "On the maximality of linear codes", + "translatedTitle": null + }, + "entryType": "J", + "primaryClass": { + "code": "94B05", + "description": "Linear codes (general theory)" + }, + "authors": [ + { + "id": 758603, + "name": "Alderson, T. L." + }, + { + "id": 615685, + "name": "Gács, András" + } + ], + "issue": { + "issue": { + "pubYear": 2009, + "pubYear2": null, + "volume": "53", + "volume2": null, + "volume3": null, + "number": "1", + "journal": { + "id": 6036, + "shortTitle": "Des. Codes Cryptogr." + }, + "volSlash": "N", + "isbn": null, + "elementOrd": null + }, + "translatedIssue": null + }, + "book": null, + "reviewer": { + "public": true, + "reviewers": [ + { + "authId": 811978, + "rvrCode": 68997, + "name": "Pasticci, Fabio" + } + ] + }, + "paging": { + "paging": { + "text": "59--68" + }, + "translatedPaging": null + }, + "counts": { + "cited": 3 + }, + "itemType": "Reviewed", + "articleUrl": "https://doi.org/10.1007/s10623-009-9293-z", + "openURL": { + "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", + "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.1007%2Fs10623-009-9293-z&rft.aufirst=T.&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=09251022&rft.title=Designs, Codes and Cryptography An International Journal&rft.atitle=On the maximality of linear codes&rft.stitle=Des Codes Cryptogr &rft.volume=53&rft.date=2009&rft.spage=59&rft.epage=68&rft.pages=59-68&rft.issue=1&rft.jtitle=Designs, Codes and Cryptography An International Journal", + "textLink": "" + }, + "prePubl": null, + "public": true + }, + { + "mrnumber": 2658658, + "titles": { + "title": "Partitions in finite geometry and related constant composition codes", + "translatedTitle": null + }, + "entryType": "J", + "primaryClass": { + "code": "51E20", + "description": "Combinatorial structures in finite projective spaces" + }, + "authors": [ + { + "id": 758603, + "name": "Alderson, Tim L." + }, + { + "id": 692091, + "name": "Mellinger, Keith E." + } + ], + "issue": { + "issue": { + "pubYear": 2008, + "pubYear2": null, + "volume": "8", + "volume2": null, + "volume3": null, + "number": null, + "journal": { + "id": 6154, + "shortTitle": "Innov. Incidence Geom." + }, + "volSlash": "N", + "isbn": null, + "elementOrd": null + }, + "translatedIssue": null + }, + "book": null, + "reviewer": { + "public": true, + "reviewers": [ + { + "authId": 811978, + "rvrCode": 68997, + "name": "Pasticci, Fabio" + } + ] + }, + "paging": { + "paging": { + "text": "49--71" + }, + "translatedPaging": null + }, + "counts": null, + "itemType": "Reviewed", + "articleUrl": "https://doi.org/10.2140/iig.2008.8.49", + "openURL": { + "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", + "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.2140%2Fiig.2008.8.49&rft.aufirst=Tim&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=26407337&rft.title=Innovations in Incidence Geometry Algebraic, Topological and Combinatorial&rft.atitle=Partitions in finite geometry and related constant composition codes&rft.stitle=Innov Incidence Geom &rft.volume=8&rft.date=2008&rft.spage=49&rft.epage=71&rft.pages=49-71&&rft.jtitle=Innovations in Incidence Geometry Algebraic, Topological and Combinatorial", + "textLink": "" + }, + "prePubl": null, + "public": true + }, + { + "mrnumber": 2452815, + "titles": { + "title": "Geometric constructions of optimal optical orthogonal codes", + "translatedTitle": null + }, + "entryType": "J", + "primaryClass": { + "code": "94B27", + "description": "Geometric methods (including applications of algebraic geometry) applied to coding theory" + }, + "authors": [ + { + "id": 758603, + "name": "Alderson, T. L." + }, + { + "id": 692091, + "name": "Mellinger, K. E." + } + ], + "issue": { + "issue": { + "pubYear": 2008, + "pubYear2": null, + "volume": "2", + "volume2": null, + "volume3": null, + "number": "4", + "journal": { + "id": 6241, + "shortTitle": "Adv. Math. Commun." + }, + "volSlash": "N", + "isbn": null, + "elementOrd": null + }, + "translatedIssue": null + }, + "book": null, + "reviewer": { + "public": true, + "reviewers": [ + { + "authId": 675427, + "rvrCode": 35099, + "name": "Kim, Jon-Lark" + } + ] + }, + "paging": { + "paging": { + "text": "451--467" + }, + "translatedPaging": null + }, + "counts": { + "cited": 15 + }, + "itemType": "Reviewed", + "articleUrl": "https://doi.org/10.3934/amc.2008.2.451", + "openURL": { + "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", + "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.3934%2Famc.2008.2.451&rft.aufirst=T.&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=19305346&rft.title=Advances in Mathematics of Communications&rft.atitle=Geometric constructions of optimal optical orthogonal codes&rft.stitle=Adv Math Commun &rft.volume=2&rft.date=2008&rft.spage=451&rft.epage=467&rft.pages=451-467&rft.issue=4&rft.jtitle=Advances in Mathematics of Communications", + "textLink": "" + }, + "prePubl": null, + "public": true + }, + { + "mrnumber": 2451027, + "titles": { + "title": "Families of optimal OOCs with $\\\\lambda=2$", + "translatedTitle": null + }, + "entryType": "J", + "primaryClass": { + "code": "94B25", + "description": "Combinatorial codes" + }, + "authors": [ + { + "id": 758603, + "name": "Alderson, Tim L." + }, + { + "id": 692091, + "name": "Mellinger, Keith E." + } + ], + "issue": { + "issue": { + "pubYear": 2008, + "pubYear2": null, + "volume": "54", + "volume2": null, + "volume3": null, + "number": "8", + "journal": { + "id": 2292, + "shortTitle": "IEEE Trans. Inform. Theory" + }, + "volSlash": "N", + "isbn": null, + "elementOrd": null + }, + "translatedIssue": null + }, + "book": null, + "reviewer": { + "public": true, + "reviewers": [ + { + "authId": 334456, + "rvrCode": 24644, + "name": "Borges-Ayats, Joaquim" + } + ] + }, + "paging": { + "paging": { + "text": "3722--3724" + }, + "translatedPaging": null + }, + "counts": { + "cited": 20 + }, + "itemType": "Reviewed", + "articleUrl": "https://doi.org/10.1109/TIT.2008.926394", + "openURL": { + "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", + "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.1109%2FTIT.2008.926394&rft.aufirst=Tim&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=00189448&rft.title=Institute of Electrical and Electronics Engineers Transactions on Information Theory&rft.atitle=Families of optimal OOCs with $lambda=2$&rft.stitle=IEEE Trans Inform Theory&rft.volume=54&rft.date=2008&rft.spage=3722&rft.epage=3724&rft.pages=3722-3724&rft.issue=8&rft.jtitle=Institute of Electrical and Electronics Engineers Transactions on Information Theory", + "textLink": "" + }, + "prePubl": null, + "public": true + }, + { + "mrnumber": 2398834, + "titles": { + "title": "Codes from cubic curves and their extensions", + "translatedTitle": null + }, + "entryType": "J", + "primaryClass": { + "code": "94B27", + "description": "Geometric methods (including applications of algebraic geometry) applied to coding theory" + }, + "authors": [ + { + "id": 758603, + "name": "Alderson, T. L." + }, + { + "id": 42380, + "name": "Bruen, A. A." + } + ], + "issue": { + "issue": { + "pubYear": 2008, + "pubYear2": null, + "volume": "15", + "volume2": null, + "volume3": null, + "number": "1", + "journal": { + "id": 4633, + "shortTitle": "Electron. J. Combin." + }, + "volSlash": "N", + "isbn": null, + "elementOrd": null + }, + "translatedIssue": null + }, + "book": null, + "reviewer": { + "public": true, + "reviewers": [ + { + "authId": 272152, + "rvrCode": 47895, + "name": "Kim, Seon Jeong" + } + ] + }, + "paging": { + "paging": { + "text": "Research paper 42, 9 pp." + }, + "translatedPaging": null + }, + "counts": { + "cited": 1 + }, + "itemType": "Reviewed", + "articleUrl": "https://doi.org/10.37236/766", + "openURL": { + "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", + "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.37236%2F766&rft.aufirst=T.&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.title=Electronic Journal of Combinatorics&rft.atitle=Codes from cubic curves and their extensions&rft.stitle=Electron J Combin &rft.volume=15&rft.date=2008&rft.spage=42&rft.epage=9&rft.pages=42-9&rft.issue=1&rft.jtitle=Electronic Journal of Combinatorics", + "textLink": "" + }, + "prePubl": null, + "public": true + }, + { + "mrnumber": 2394740, + "titles": { + "title": "Bruck nets and 2-dimensional codes", + "translatedTitle": null + }, + "entryType": "J", + "primaryClass": { + "code": "94B05", + "description": "Linear codes (general theory)" + }, + "authors": [ + { + "id": 758603, + "name": "Alderson, T. L." + } + ], + "issue": { + "issue": { + "pubYear": 2008, + "pubYear2": null, + "volume": "52", + "volume2": null, + "volume3": null, + "number": null, + "journal": { + "id": 4117, + "shortTitle": "Bull. Inst. Combin. Appl." + }, + "volSlash": "N", + "isbn": null, + "elementOrd": null + }, + "translatedIssue": null + }, + "book": null, + "reviewer": { + "public": true, + "reviewers": [ + { + "authId": 721987, + "rvrCode": 56185, + "name": "Lampe, Lutz" + } + ] + }, + "paging": { + "paging": { + "text": "33--44" + }, + "translatedPaging": null + }, + "counts": null, + "itemType": "Reviewed", + "articleUrl": null, + "openURL": { + "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", + "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft.aufirst=T.&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=11831278&rft.title=Bulletin of the Institute of Combinatorics and its Applications&rft.atitle=Bruck nets and 2-dimensional codes&rft.stitle=Bull Inst Combin Appl &rft.volume=52&rft.date=2008&rft.spage=33&rft.epage=44&rft.pages=33-44&&rft.jtitle=Bulletin of the Institute of Combinatorics and its Applications", + "textLink": "" + }, + "prePubl": null, + "public": true + }, + { + "mrnumber": 2389969, + "titles": { + "title": "Maximal AMDS codes", + "translatedTitle": null + }, + "entryType": "J", + "primaryClass": { + "code": "94B27", + "description": "Geometric methods (including applications of algebraic geometry) applied to coding theory" + }, + "authors": [ + { + "id": 758603, + "name": "Alderson, T. L." + }, + { + "id": 42380, + "name": "Bruen, A. A." + } + ], + "issue": { + "issue": { + "pubYear": 2008, + "pubYear2": null, + "volume": "19", + "volume2": null, + "volume3": null, + "number": "2", + "journal": { + "id": 4449, + "shortTitle": "Appl. Algebra Engrg. Comm. Comput." + }, + "volSlash": "N", + "isbn": null, + "elementOrd": null + }, + "translatedIssue": null + }, + "book": null, + "reviewer": { + "public": true, + "reviewers": [ + { + "authId": 329025, + "rvrCode": 58213, + "name": "Daskalov, Rumen N." + } + ] + }, + "paging": { + "paging": { + "text": "87--98" + }, + "translatedPaging": null + }, + "counts": { + "cited": 4 + }, + "itemType": "Summary", + "articleUrl": "https://doi.org/10.1007/s00200-008-0058-0", + "openURL": { + "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", + "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.1007%2Fs00200-008-0058-0&rft.aufirst=T.&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=09381279&rft.title=Applicable Algebra in Engineering, Communication and Computing&rft.atitle=Maximal AMDS codes&rft.stitle=Appl Algebra Engrg Comm Comput &rft.volume=19&rft.date=2008&rft.spage=87&rft.epage=98&rft.pages=87-98&rft.issue=2&rft.jtitle=Applicable Algebra in Engineering, Communication and Computing", + "textLink": "" + }, + "prePubl": null, + "public": true + }, + { + "mrnumber": 2382348, + "titles": { + "title": "Classes of optical orthogonal codes from arcs in root subspaces", + "translatedTitle": null + }, + "entryType": "J", + "primaryClass": { + "code": "94B27", + "description": "Geometric methods (including applications of algebraic geometry) applied to coding theory" + }, + "authors": [ + { + "id": 758603, + "name": "Alderson, T. L." + }, + { + "id": 692091, + "name": "Mellinger, Keith E." + } + ], + "issue": { + "issue": { + "pubYear": 2008, + "pubYear2": null, + "volume": "308", + "volume2": null, + "volume3": null, + "number": "7", + "journal": { + "id": 643, + "shortTitle": "Discrete Math." + }, + "volSlash": "N", + "isbn": null, + "elementOrd": null + }, + "translatedIssue": null + }, + "book": null, + "reviewer": { + "public": true, + "reviewers": [ + { + "authId": 97215, + "rvrCode": 6155, + "name": "Kallaher, M. J." + } + ] + }, + "paging": { + "paging": { + "text": "1093--1101" + }, + "translatedPaging": null + }, + "counts": { + "cited": 5 + }, + "itemType": "Reviewed", + "articleUrl": "https://doi.org/10.1016/j.disc.2007.03.063", + "openURL": { + "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", + "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.1016%2Fj.disc.2007.03.063&rft.aufirst=T.&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=0012365X&rft.title=Discrete Mathematics&rft.atitle=Classes of optical orthogonal codes from arcs in root subspaces&rft.stitle=Discrete Math &rft.volume=308&rft.date=2008&rft.spage=1093&rft.epage=1101&rft.pages=1093-1101&rft.issue=7&rft.jtitle=Discrete Mathematics", + "textLink": "" + }, + "prePubl": null, + "public": true + } + ], + "total": 31 + } + """; InputStream inputStream = new ByteArrayInputStream(json.getBytes(StandardCharsets.UTF_8)); List entries = fetcher.getParser().parseEntries(inputStream); - assertNotNull(entries); - assertFalse(entries.isEmpty()); - assertEquals(1, entries.size()); - - BibEntry parsedEntry = entries.getFirst(); - assertEquals("On the weights of general MDS codes", parsedEntry.getField(StandardField.TITLE).orElse(null)); - assertEquals("Alderson, Tim L.", parsedEntry.getField(StandardField.AUTHOR).orElse(null)); - assertEquals("2020", parsedEntry.getField(StandardField.YEAR).orElse(null)); - assertEquals("IEEE Trans. Inform. Theory", parsedEntry.getField(StandardField.JOURNAL).orElse(null)); - assertEquals("66", parsedEntry.getField(StandardField.VOLUME).orElse(null)); - assertEquals("9", parsedEntry.getField(StandardField.NUMBER).orElse(null)); - assertEquals("5414--5418", parsedEntry.getField(StandardField.PAGES).orElse(null)); - assertEquals("4158623", parsedEntry.getField(StandardField.MR_NUMBER).orElse(null)); - assertEquals("Bounds on codes", parsedEntry.getField(StandardField.KEYWORDS).orElse(null)); - assertEquals("https://doi.org/10.1109/TIT.2020.2977319", parsedEntry.getField(StandardField.DOI).orElse(null)); - assertEquals("0018-9448", parsedEntry.getField(StandardField.ISSN).orElse(null)); + assertEquals(List.of( + new BibEntry(StandardEntryType.Article) + .withField(StandardField.TITLE, "On the weights of general MDS codes") + .withField(StandardField.AUTHOR, "Alderson, Tim L.") + .withField(StandardField.YEAR, "2020") + .withField(StandardField.JOURNAL, "IEEE Trans. Inform. Theory") + .withField(StandardField.VOLUME, "66") + .withField(StandardField.NUMBER, "9") + .withField(StandardField.PAGES, "5414--5418") + .withField(StandardField.MR_NUMBER, "4158623") + .withField(StandardField.KEYWORDS, "Bounds on codes") + .withField(StandardField.DOI, "https://doi.org/10.1109/TIT.2020.2977319") + .withField(StandardField.ISSN, "0018-9448") + ), entries); } } From e6a2ec7fd24947596dd16df9beef4955abe22239 Mon Sep 17 00:00:00 2001 From: Subhramit Basu Bhowmick <74734844+subhramit@users.noreply.github.com> Date: Thu, 21 Mar 2024 02:35:04 +0530 Subject: [PATCH 07/13] Update value:String to value:Optional Co-authored-by: Oliver Kopp --- src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java b/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java index 59146b1f1a5..b4f39d1b169 100644 --- a/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java +++ b/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java @@ -163,7 +163,7 @@ private BibEntry jsonItemToBibEntry(JSONObject item) throws ParseException { StandardField field = mapEntry.getKey(); List path = mapEntry.getValue(); - String value; + Optional value; if (field == StandardField.AUTHOR) { value = toAuthors(item.optJSONArray(path.getFirst())); } else if (field == StandardField.KEYWORDS) { From 49978461b63a75b66482733a93550e30ded9e04f Mon Sep 17 00:00:00 2001 From: Subhramit Basu Bhowmick <74734844+subhramit@users.noreply.github.com> Date: Thu, 21 Mar 2024 02:37:47 +0530 Subject: [PATCH 08/13] Change value setting to lambda form Co-authored-by: Oliver Kopp --- .../java/org/jabref/logic/importer/fetcher/MathSciNet.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java b/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java index b4f39d1b169..a0a555544dd 100644 --- a/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java +++ b/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java @@ -172,9 +172,7 @@ private BibEntry jsonItemToBibEntry(JSONObject item) throws ParseException { value = getOrNull(item, path).orElse(null); } - if (value != null) { - entry.setField(field, value); - } + value.ifPresent(v -> entry.setField(field, v)); } // Handle articleUrl and mrnumber fields separately String doi = item.optString("articleUrl", ""); From bd801b6deec3996dd329d0a126983d4da566c547 Mon Sep 17 00:00:00 2001 From: Subhramit Basu Bhowmick <74734844+subhramit@users.noreply.github.com> Date: Thu, 21 Mar 2024 02:38:35 +0530 Subject: [PATCH 09/13] Update missing Optional.of() Co-authored-by: Oliver Kopp --- src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java b/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java index a0a555544dd..37cd65a5870 100644 --- a/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java +++ b/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java @@ -167,7 +167,7 @@ private BibEntry jsonItemToBibEntry(JSONObject item) throws ParseException { if (field == StandardField.AUTHOR) { value = toAuthors(item.optJSONArray(path.getFirst())); } else if (field == StandardField.KEYWORDS) { - value = getKeywords(item.optJSONObject(path.getFirst())); + value = Optional.of(getKeywords(item.optJSONObject(path.getFirst()))); } else { value = getOrNull(item, path).orElse(null); } From 021fd2f87639419aa864f5e0f4c7835f96b5ab4f Mon Sep 17 00:00:00 2001 From: Subhramit Basu Bhowmick <74734844+subhramit@users.noreply.github.com> Date: Thu, 21 Mar 2024 03:27:40 +0530 Subject: [PATCH 10/13] Update instanceof pattern matching syntax, removed explicit casts --- .../org/jabref/logic/importer/fetcher/MathSciNet.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java b/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java index 37cd65a5870..202311befef 100644 --- a/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java +++ b/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java @@ -193,10 +193,10 @@ private BibEntry jsonItemToBibEntry(JSONObject item) throws ParseException { private Optional getOrNull(JSONObject item, List keys) { Object value = item; for (String key : keys) { - if (value instanceof JSONObject) { - value = ((JSONObject) value).opt(key); - } else if (value instanceof JSONArray) { - value = ((JSONArray) value).opt(Integer.parseInt(key)); + if (value instanceof JSONObject obj) { + value = value.opt(key); + } else if (value instanceof JSONArray arr) { + value = value.opt(Integer.parseInt(key); } else { break; } From dd32e6a2dc6870e1e7450259110065e88447cd9a Mon Sep 17 00:00:00 2001 From: subhramit Date: Thu, 21 Mar 2024 06:49:56 +0530 Subject: [PATCH 11/13] applied second round of review changes --- .../logic/importer/fetcher/MathSciNet.java | 112 +- .../importer/fetcher/MathSciNetTest.java | 1373 +---------------- .../logic/importer/fetcher/jsonTest.json | 1319 ++++++++++++++++ 3 files changed, 1405 insertions(+), 1399 deletions(-) create mode 100644 src/test/java/org/jabref/logic/importer/fetcher/jsonTest.json diff --git a/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java b/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java index 202311befef..e0244151056 100644 --- a/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java +++ b/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java @@ -47,19 +47,21 @@ */ public class MathSciNet implements SearchBasedParserFetcher, EntryBasedParserFetcher, IdBasedParserFetcher { private static final Logger LOGGER = LoggerFactory.getLogger(MathSciNet.class); - private final ImportFormatPreferences preferences; - // Define the field mappings - private final Map> fieldMappings = Map.ofEntries( - Map.entry(StandardField.TITLE, List.of("titles", "title")), - Map.entry(StandardField.AUTHOR, List.of("authors")), - Map.entry(StandardField.YEAR, List.of("issue", "issue", "pubYear")), - Map.entry(StandardField.JOURNAL, List.of("issue", "issue", "journal", "shortTitle")), - Map.entry(StandardField.VOLUME, List.of("issue", "issue", "volume")), - Map.entry(StandardField.NUMBER, List.of("issue", "issue", "number")), - Map.entry(StandardField.PAGES, List.of("paging", "paging", "text")), - Map.entry(StandardField.KEYWORDS, List.of("primaryClass")), - Map.entry(StandardField.ISSN, List.of("issue", "issue", "journal", "issn")) + + private static final Map> FIELD_MAPPINGS = Map.of( + StandardField.TITLE, List.of("titles", "title"), + StandardField.AUTHOR, List.of("authors"), + StandardField.YEAR, List.of("issue", "issue", "pubYear"), + StandardField.JOURNAL, List.of("issue", "issue", "journal", "shortTitle"), + StandardField.VOLUME, List.of("issue", "issue", "volume"), + StandardField.NUMBER, List.of("issue", "issue", "number"), + StandardField.PAGES, List.of("paging", "paging", "text"), + StandardField.KEYWORDS, List.of("primaryClass"), + StandardField.ISSN, List.of("issue", "issue", "journal", "issn") ); + + private final ImportFormatPreferences preferences; + public MathSciNet(ImportFormatPreferences preferences) { this.preferences = Objects.requireNonNull(preferences); } @@ -158,23 +160,29 @@ public Parser getParser() { private BibEntry jsonItemToBibEntry(JSONObject item) throws ParseException { try { BibEntry entry = new BibEntry(StandardEntryType.Article); - // Set fields based on the mappings - for (Map.Entry> mapEntry : fieldMappings.entrySet()) { + + // Set the author and keywords field + Optional authors = toAuthors(item.optJSONArray("authors")); + authors.ifPresent(value -> entry.setField(StandardField.AUTHOR, value)); + + Optional keywords = Optional.ofNullable(getKeywords(item.optJSONObject("primaryClass"))); + keywords.ifPresent(value -> entry.setField(StandardField.KEYWORDS, value)); + + // Set the rest of the fields based on the mappings + for (Map.Entry> mapEntry : FIELD_MAPPINGS.entrySet()) { StandardField field = mapEntry.getKey(); List path = mapEntry.getValue(); - Optional value; - if (field == StandardField.AUTHOR) { - value = toAuthors(item.optJSONArray(path.getFirst())); - } else if (field == StandardField.KEYWORDS) { - value = Optional.of(getKeywords(item.optJSONObject(path.getFirst()))); - } else { - value = getOrNull(item, path).orElse(null); + // Skip author and keywords fields as they are already set + if (field == StandardField.AUTHOR || field == StandardField.KEYWORDS) { + continue; } - value.ifPresent(v -> entry.setField(field, v)); + Optional value = getOthers(item, path); + value.ifPresent(v -> entry.setField(field, v)); } - // Handle articleUrl and mrnumber fields separately + + // Handle articleUrl and mrnumber fields separately, as they are non-nested properties in the JSON and can be retrieved as Strings directly String doi = item.optString("articleUrl", ""); if (!doi.isEmpty()) { entry.setField(StandardField.DOI, doi); @@ -184,50 +192,60 @@ private BibEntry jsonItemToBibEntry(JSONObject item) throws ParseException { if (!mrNumber.isEmpty()) { entry.setField(StandardField.MR_NUMBER, mrNumber); } + return entry; } catch (JSONException exception) { throw new ParseException("MathSciNet API JSON format has changed", exception); } } - private Optional getOrNull(JSONObject item, List keys) { + private Optional toAuthors(JSONArray authors) { + if (authors == null) { + return Optional.empty(); + } + + String authorsString = IntStream.range(0, authors.length()) + .mapToObj(authors::getJSONObject) + .map(author -> { + String name = author.optString("name", ""); + return fixStringEncoding(name); + }) + .collect(Collectors.joining(" and ")); + + return Optional.of(authorsString); + } + + private String getKeywords(JSONObject primaryClass) { + if (primaryClass == null) { + return ""; + } + return primaryClass.optString("description", ""); + } + + private Optional getOthers(JSONObject item, List keys) { Object value = item; for (String key : keys) { if (value instanceof JSONObject obj) { - value = value.opt(key); - } else if (value instanceof JSONArray arr) { - value = value.opt(Integer.parseInt(key); + value = ((JSONObject) value).opt(key); + } else if (value instanceof JSONArray) { + value = ((JSONArray) value).opt(Integer.parseInt(key)); } else { break; } } if (value instanceof String stringValue) { - return Optional.of(new String(stringValue.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8)); + return Optional.of(fixStringEncoding(stringValue)); + } else if (value instanceof Integer intValue) { + return Optional.of(intValue.toString()); } return Optional.empty(); } - private String toAuthors(JSONArray authors) { - if (authors == null) { - return ""; - } - - return IntStream.range(0, authors.length()) - .mapToObj(authors::getJSONObject) - .map(author -> { - String name = author.optString("name", ""); - return new String(name.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); - }) - .collect(Collectors.joining(" and ")); - } - - private String getKeywords(JSONObject primaryClass) { - if (primaryClass == null) { - return ""; - } - return primaryClass.optString("description", ""); + // Method to change character set, to fix output string encoding + private String fixStringEncoding(String value) { + return new String(value.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); } @Override diff --git a/src/test/java/org/jabref/logic/importer/fetcher/MathSciNetTest.java b/src/test/java/org/jabref/logic/importer/fetcher/MathSciNetTest.java index 9003e1d42d6..07cf05de0dd 100644 --- a/src/test/java/org/jabref/logic/importer/fetcher/MathSciNetTest.java +++ b/src/test/java/org/jabref/logic/importer/fetcher/MathSciNetTest.java @@ -1,11 +1,7 @@ package org.jabref.logic.importer.fetcher; -import java.io.ByteArrayInputStream; import java.io.InputStream; -import java.nio.charset.StandardCharsets; -import java.util.Collections; import java.util.List; -import java.util.Optional; import org.jabref.logic.importer.ImportFormatPreferences; import org.jabref.model.entry.BibEntry; @@ -58,7 +54,7 @@ void searchByEntryFindsEntry() throws Exception { searchEntry.setField(StandardField.JOURNAL, "fluid"); List fetchedEntries = fetcher.performSearch(searchEntry); - assertEquals(Collections.singletonList(ratiuEntry), fetchedEntries); + assertEquals(List.of(ratiuEntry), fetchedEntries); } @Test @@ -68,7 +64,7 @@ void searchByIdInEntryFindsEntry() throws Exception { searchEntry.setField(StandardField.MR_NUMBER, "3537908"); List fetchedEntries = fetcher.performSearch(searchEntry); - assertEquals(Collections.singletonList(ratiuEntry), fetchedEntries); + assertEquals(List.of(ratiuEntry), fetchedEntries); } @Test @@ -79,1353 +75,26 @@ void searchByQueryFindsEntry() throws Exception { assertEquals(ratiuEntry, fetchedEntries.get(1)); } - @Test - @DisabledOnCIServer("CI server has no subscription to MathSciNet and thus gets 401 response") - void searchByIdFindsEntry() throws Exception { - Optional fetchedEntry = fetcher.performSearchById("3537908"); - assertEquals(Optional.of(ratiuEntry), fetchedEntry); - } - @Test void getParser() throws Exception { - String json = """ - { - "results": [ - { - "mrnumber": 4158623, - "titles": { - "title": "On the weights of general MDS codes", - "translatedTitle": null - }, - "entryType": "J", - "primaryClass": { - "code": "94B65", - "description": "Bounds on codes" - }, - "authors": [ - { - "id": 758603, - "name": "Alderson, Tim L." - } - ], - "issue": { - "issue": { - "pubYear": 2020, - "pubYear2": null, - "volume": "66", - "volume2": null, - "volume3": null, - "number": "9", - "journal": { - "id": 2292, - "shortTitle": "IEEE Trans. Inform. Theory" - }, - "volSlash": "N", - "isbn": null, - "elementOrd": null - }, - "translatedIssue": null - }, - "book": null, - "reviewer": { - "public": true, - "reviewers": [ - { - "authId": 889610, - "rvrCode": 85231, - "name": "Jitman, Somphong" - } - ] - }, - "paging": { - "paging": { - "text": "5414--5418" - }, - "translatedPaging": null - }, - "counts": { - "cited": 2 - }, - "itemType": "Reviewed", - "articleUrl": "https://doi.org/10.1109/TIT.2020.2977319", - "openURL": { - "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", - "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.1109%2FTIT.2020.2977319&rft.aufirst=Tim&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=00189448&rft.title=Institute of Electrical and Electronics Engineers Transactions on Information Theory&rft.atitle=On the weights of general MDS codes&rft.stitle=IEEE Trans Inform Theory&rft.volume=66&rft.date=2020&rft.spage=5414&rft.epage=5418&rft.pages=5414-5418&rft.issue=9&rft.jtitle=Institute of Electrical and Electronics Engineers Transactions on Information Theory", - "textLink": "" - }, - "prePubl": null, - "public": true - }, - { - "mrnumber": 4019905, - "titles": { - "title": "$n$-dimensional optical orthogonal codes, bounds and optimal constructions", - "translatedTitle": null - }, - "entryType": "J", - "primaryClass": { - "code": "94B65", - "description": "Bounds on codes" - }, - "authors": [ - { - "id": 758603, - "name": "Alderson, T. L." - } - ], - "issue": { - "issue": { - "pubYear": 2019, - "pubYear2": null, - "volume": "30", - "volume2": null, - "volume3": null, - "number": "5", - "journal": { - "id": 4449, - "shortTitle": "Appl. Algebra Engrg. Comm. Comput." - }, - "volSlash": "N", - "isbn": null, - "elementOrd": null - }, - "translatedIssue": null - }, - "book": null, - "reviewer": { - "public": true, - "reviewers": [ - { - "authId": 929349, - "rvrCode": 128559, - "name": "Lee, Nari" - } - ] - }, - "paging": { - "paging": { - "text": "373--386" - }, - "translatedPaging": null - }, - "counts": null, - "itemType": "Reviewed", - "articleUrl": "https://doi.org/10.1007/s00200-018-00379-3", - "openURL": { - "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", - "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.1007%2Fs00200-018-00379-3&rft.aufirst=T.&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=09381279&rft.title=Applicable Algebra in Engineering, Communication and Computing&rft.atitle=$n$-dimensional optical orthogonal codes, bounds and optimal constructions&rft.stitle=Appl Algebra Engrg Comm Comput &rft.volume=30&rft.date=2019&rft.spage=373&rft.epage=386&rft.pages=373-386&rft.issue=5&rft.jtitle=Applicable Algebra in Engineering, Communication and Computing", - "textLink": "" - }, - "prePubl": null, - "public": true - }, - { - "mrnumber": 4014640, - "titles": { - "title": "A note on full weight spectrum codes", - "translatedTitle": null - }, - "entryType": "J", - "primaryClass": { - "code": "94B05", - "description": "Linear codes (general theory)" - }, - "authors": [ - { - "id": 758603, - "name": "Alderson, Tim L." - } - ], - "issue": { - "issue": { - "pubYear": 2019, - "pubYear2": null, - "volume": "8", - "volume2": null, - "volume3": null, - "number": "3", - "journal": { - "id": 8218, - "shortTitle": "Trans. Comb." - }, - "volSlash": "N", - "isbn": null, - "elementOrd": null - }, - "translatedIssue": null - }, - "book": null, - "reviewer": null, - "paging": { - "paging": { - "text": "15--22" - }, - "translatedPaging": null - }, - "counts": { - "cited": 6 - }, - "itemType": "Summary", - "articleUrl": "https://doi.org/10.22108/toc.2019.112621.1584", - "openURL": { - "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", - "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.22108%2Ftoc.2019.112621.1584&rft.aufirst=Tim&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=22518657&rft.title=Transactions on Combinatorics&rft.atitle=A note on full weight spectrum codes&rft.stitle=Trans Comb &rft.volume=8&rft.date=2019&rft.spage=15&rft.epage=22&rft.pages=15-22&rft.issue=3&rft.jtitle=Transactions on Combinatorics", - "textLink": "" - }, - "prePubl": null, - "public": true - }, - { - "mrnumber": 3917650, - "titles": { - "title": "Maximum weight spectrum codes", - "translatedTitle": null - }, - "entryType": "J", - "primaryClass": { - "code": "94B05", - "description": "Linear codes (general theory)" - }, - "authors": [ - { - "id": 758603, - "name": "Alderson, Tim" - }, - { - "id": 1251963, - "name": "Neri, Alessandro" - } - ], - "issue": { - "issue": { - "pubYear": 2019, - "pubYear2": null, - "volume": "13", - "volume2": null, - "volume3": null, - "number": "1", - "journal": { - "id": 6241, - "shortTitle": "Adv. Math. Commun." - }, - "volSlash": "N", - "isbn": null, - "elementOrd": null - }, - "translatedIssue": null - }, - "book": null, - "reviewer": { - "public": true, - "reviewers": [ - { - "authId": 685341, - "rvrCode": 30916, - "name": "Oluwade, Bamidele A." - } - ] - }, - "paging": { - "paging": { - "text": "101--119" - }, - "translatedPaging": null - }, - "counts": { - "cited": 6 - }, - "itemType": "Reviewed", - "articleUrl": "https://doi.org/10.3934/amc.2019006", - "openURL": { - "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", - "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.3934%2Famc.2019006&rft.aufirst=Tim&rft.auinit=T&rft.auinit1=T&rft.auinitm=&rft.aulast=Alderson&rft.genre=article&rft.issn=19305346&rft.title=Advances in Mathematics of Communications&rft.atitle=Maximum weight spectrum codes&rft.stitle=Adv Math Commun &rft.volume=13&rft.date=2019&rft.spage=101&rft.epage=119&rft.pages=101-119&rft.issue=1&rft.jtitle=Advances in Mathematics of Communications", - "textLink": "" - }, - "prePubl": null, - "public": true - }, - { - "mrnumber": 3897552, - "titles": { - "title": "How many weights can a linear code have?", - "translatedTitle": null - }, - "entryType": "J", - "primaryClass": { - "code": "94B05", - "description": "Linear codes (general theory)" - }, - "authors": [ - { - "id": 863999, - "name": "Shi, Minjia" - }, - { - "id": 1276838, - "name": "Zhu, Hongwei" - }, - { - "id": 225546, - "name": "Solé, Patrick" - }, - { - "id": 50285, - "name": "Cohen, Gérard D." - } - ], - "issue": { - "issue": { - "pubYear": 2019, - "pubYear2": null, - "volume": "87", - "volume2": null, - "volume3": null, - "number": "1", - "journal": { - "id": 6036, - "shortTitle": "Des. Codes Cryptogr." - }, - "volSlash": "N", - "isbn": null, - "elementOrd": null - }, - "translatedIssue": null - }, - "book": null, - "reviewer": { - "public": true, - "reviewers": [ - { - "authId": 249580, - "rvrCode": 36256, - "name": "Hou, Xiang-dong" - } - ] - }, - "paging": { - "paging": { - "text": "87--95" - }, - "translatedPaging": null - }, - "counts": { - "cited": 9 - }, - "itemType": "Reviewed", - "articleUrl": "https://doi.org/10.1007/s10623-018-0488-z", - "openURL": { - "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", - "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.1007%2Fs10623-018-0488-z&rft.aufirst=Minjia&rft.auinit=M&rft.auinit1=M&rft.auinitm=&rft.aulast=Shi&rft.genre=article&rft.issn=09251022&rft.title=Designs, Codes and Cryptography An International Journal&rft.atitle=How many weights can a linear code have?&rft.stitle=Des Codes Cryptogr &rft.volume=87&rft.date=2019&rft.spage=87&rft.epage=95&rft.pages=87-95&rft.issue=1&rft.jtitle=Designs, Codes and Cryptography An International Journal", - "textLink": "" - }, - "prePubl": null, - "public": true - }, - { - "mrnumber": 3809747, - "titles": { - "title": "3-dimensional optical orthogonal codes with ideal autocorrelation-bounds and optimal constructions", - "translatedTitle": null - }, - "entryType": "J", - "primaryClass": { - "code": "94A55", - "description": "Shift register sequences and sequences over finite alphabets in information and communication theory" - }, - "authors": [ - { - "id": 758603, - "name": "Alderson, Tim L." - } - ], - "issue": { - "issue": { - "pubYear": 2018, - "pubYear2": null, - "volume": "64", - "volume2": null, - "volume3": null, - "number": "6", - "journal": { - "id": 2292, - "shortTitle": "IEEE Trans. Inform. Theory" - }, - "volSlash": "N", - "isbn": null, - "elementOrd": null - }, - "translatedIssue": null - }, - "book": null, - "reviewer": null, - "paging": { - "paging": { - "text": "4392--4398" - }, - "translatedPaging": null - }, - "counts": { - "cited": 1 - }, - "itemType": "Summary", - "articleUrl": "https://doi.org/10.1109/TIT.2017.2717538", - "openURL": { - "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", - "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.1109%2FTIT.2017.2717538&rft.aufirst=Tim&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=00189448&rft.title=Institute of Electrical and Electronics Engineers Transactions on Information Theory&rft.atitle=3-dimensional optical orthogonal codes with ideal autocorrelation-bounds and optimal constructions&rft.stitle=IEEE Trans Inform Theory&rft.volume=64&rft.date=2018&rft.spage=4392&rft.epage=4398&rft.pages=4392-4398&rft.issue=6&rft.jtitle=Institute of Electrical and Electronics Engineers Transactions on Information Theory", - "textLink": "" - }, - "prePubl": null, - "public": true - }, - { - "mrnumber": 3216214, - "titles": { - "title": "The partition weight enumerator and bounds on MDS codes", - "translatedTitle": null - }, - "entryType": "J", - "primaryClass": { - "code": "94B05", - "description": "Linear codes (general theory)" - }, - "authors": [ - { - "id": 758603, - "name": "Alderson, T. L." - }, - { - "id": 1068150, - "name": "Huntemann, Svenja" - } - ], - "issue": { - "issue": { - "pubYear": 2014, - "pubYear2": null, - "volume": "6", - "volume2": null, - "volume3": null, - "number": "1", - "journal": { - "id": 7425, - "shortTitle": "Atl. Electron. J. Math." - }, - "volSlash": "N", - "isbn": null, - "elementOrd": null - }, - "translatedIssue": null - }, - "book": null, - "reviewer": null, - "paging": { - "paging": { - "text": "1--10" - }, - "translatedPaging": null - }, - "counts": { - "cited": 2 - }, - "itemType": "Summary", - "articleUrl": null, - "openURL": { - "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", - "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft.aufirst=T.&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.title=Atlantic Electronic Journal of Mathematics&rft.atitle=The partition weight enumerator and bounds on MDS codes&rft.stitle=Atl Electron J Math &rft.volume=6&rft.date=2014&rft.spage=1&rft.epage=10&rft.pages=1-10&rft.issue=1&rft.jtitle=Atlantic Electronic Journal of Mathematics", - "textLink": "" - }, - "prePubl": null, - "public": true - }, - { - "mrnumber": 2793231, - "titles": { - "title": "Spreads, arcs, and multiple wavelength codes", - "translatedTitle": null - }, - "entryType": "J", - "primaryClass": { - "code": "94B60", - "description": "Other types of codes" - }, - "authors": [ - { - "id": 758603, - "name": "Alderson, T. L." - }, - { - "id": 692091, - "name": "Mellinger, Keith E." - } - ], - "issue": { - "issue": { - "pubYear": 2011, - "pubYear2": null, - "volume": "311", - "volume2": null, - "volume3": null, - "number": "13", - "journal": { - "id": 643, - "shortTitle": "Discrete Math." - }, - "volSlash": "N", - "isbn": null, - "elementOrd": null - }, - "translatedIssue": null - }, - "book": null, - "reviewer": { - "public": true, - "reviewers": [ - { - "authId": 850192, - "rvrCode": 71699, - "name": "Fan, Cuiling" - } - ] - }, - "paging": { - "paging": { - "text": "1187--1196" - }, - "translatedPaging": null - }, - "counts": { - "cited": 6 - }, - "itemType": "Reviewed", - "articleUrl": "https://doi.org/10.1016/j.disc.2010.06.010", - "openURL": { - "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", - "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.1016%2Fj.disc.2010.06.010&rft.aufirst=T.&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=0012365X&rft.title=Discrete Mathematics&rft.atitle=Spreads, arcs, and multiple wavelength codes&rft.stitle=Discrete Math &rft.volume=311&rft.date=2011&rft.spage=1187&rft.epage=1196&rft.pages=1187-1196&rft.issue=13&rft.jtitle=Discrete Mathematics", - "textLink": "" - }, - "prePubl": null, - "public": true - }, - { - "mrnumber": 2772904, - "titles": { - "title": "Classes of permutation arrays in finite projective spaces", - "translatedTitle": null - }, - "entryType": "J", - "primaryClass": { - "code": "51E15", - "description": "Finite affine and projective planes (geometric aspects)" - }, - "authors": [ - { - "id": 758603, - "name": "Alderson, T. L." - }, - { - "id": 692091, - "name": "Mellinger, Keith E." - } - ], - "issue": { - "issue": { - "pubYear": 2010, - "pubYear2": null, - "volume": "1", - "volume2": null, - "volume3": null, - "number": "4", - "journal": { - "id": 7248, - "shortTitle": "Int. J. Inf. Coding Theory" - }, - "volSlash": "N", - "isbn": null, - "elementOrd": null - }, - "translatedIssue": null - }, - "book": null, - "reviewer": { - "public": true, - "reviewers": [ - { - "authId": 97215, - "rvrCode": 6155, - "name": "Kallaher, M. J." - } - ] - }, - "paging": { - "paging": { - "text": "371--383" - }, - "translatedPaging": null - }, - "counts": null, - "itemType": "Reviewed", - "articleUrl": "https://doi.org/10.1504/IJICOT.2010.032863", - "openURL": { - "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", - "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.1504%2FIJICOT.2010.032863&rft.aufirst=T.&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=17537703&rft.title=International Journal of Information and Coding Theory IJICOT&rft.atitle=Classes of permutation arrays in finite projective spaces&rft.stitle=Int J Inf Coding Theory&rft.volume=1&rft.date=2010&rft.spage=371&rft.epage=383&rft.pages=371-383&rft.issue=4&rft.jtitle=International Journal of Information and Coding Theory IJICOT", - "textLink": "" - }, - "prePubl": null, - "public": true - }, - { - "mrnumber": 2766013, - "titles": { - "title": "Hyperconics and multiple weight codes for OCDMA", - "translatedTitle": null - }, - "entryType": "BC", - "primaryClass": { - "code": "94B27", - "description": "Geometric methods (including applications of algebraic geometry) applied to coding theory" - }, - "authors": [ - { - "id": 758603, - "name": "Alderson, T. L." - } - ], - "issue": { - "issue": null, - "translatedIssue": null - }, - "book": { - "pubYear": 2010, - "publisher": [ - { - "name": "American Mathematical Society", - "location": "Providence, RI", - "preText": null, - "postText": null - } - ], - "isbn": [ - "978-0-8218-4956-9" - ], - "series": [ - { - "serId": 1059, - "title": "Contemporary Mathematics", - "transTitle": null, - "volume": "523", - "shortTitle": "Contemp. Math." - } - ] - }, - "reviewer": { - "public": true, - "reviewers": [ - { - "authId": 173380, - "rvrCode": 18754, - "name": "Tonchev, Vladimir D." - } - ] - }, - "paging": { - "paging": { - "text": "67--76" - }, - "translatedPaging": null - }, - "counts": null, - "itemType": "Reviewed", - "articleUrl": "https://doi.org/10.1090/conm/523/10332", - "openURL": { - "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", - "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:book&rft_id=info:doi/10.1090%2Fconm%2F523%2F10332&rft_id=urn:ISBN:978-0-8218-4956-9&rft.aufirst=T.&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=proceeding&rft.title=Error-correcting codes, finite geometries and cryptography&rft.atitle=Hyperconics and multiple weight codes for OCDMA&rft.stitle=Contemporary Mathematics&rft.volume=523&rft.date=2010&rft.spage=67&rft.epage=76&rft.pages=67-76&rft.isbn=9780821849569", - "textLink": "" - }, - "prePubl": null, - "public": true - }, - { - "mrnumber": 2742541, - "titles": { - "title": "Error-correcting codes, finite geometries and cryptography", - "translatedTitle": null - }, - "entryType": "BCZ", - "primaryClass": { - "code": "94Bxx", - "description": "" - }, - "authors": [], - "issue": { - "issue": null, - "translatedIssue": null - }, - "book": { - "pubYear": 2010, - "publisher": [ - { - "name": "American Mathematical Society", - "location": "Providence, RI", - "preText": null, - "postText": null - } - ], - "isbn": [ - "978-0-8218-4956-9" - ], - "series": [ - { - "serId": 1059, - "title": "Contemporary Mathematics", - "transTitle": null, - "volume": "523", - "shortTitle": "Contemp. Math." - } - ] - }, - "reviewer": null, - "paging": { - "paging": { - "text": "viii+244 pp." - }, - "translatedPaging": null - }, - "counts": null, - "itemType": "Summary", - "articleUrl": "https://doi.org/10.1090/conm/523", - "openURL": { - "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", - "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:book&rft_id=info:doi/10.1090%2Fconm%2F523&rft_id=urn:ISBN:978-0-8218-4956-9&rft.genre=conference&rft.title=Error-correcting codes, finite geometries and cryptography&rft.stitle=Contemporary Mathematics&rft.volume=523&rft.date=2010&rft.spage=1&rft.spage=244&rft.pages=1-244&rft.isbn=9780821849569", - "textLink": "" - }, - "prePubl": null, - "public": true - }, - { - "mrnumber": 2553388, - "titles": { - "title": "2-dimensional optical orthogonal codes from Singer groups", - "translatedTitle": null - }, - "entryType": "J", - "primaryClass": { - "code": "94B60", - "description": "Other types of codes" - }, - "authors": [ - { - "id": 758603, - "name": "Alderson, T. L." - }, - { - "id": 692091, - "name": "Mellinger, Keith E." - } - ], - "issue": { - "issue": { - "pubYear": 2009, - "pubYear2": null, - "volume": "157", - "volume2": null, - "volume3": null, - "number": "14", - "journal": { - "id": 615, - "shortTitle": "Discrete Appl. Math." - }, - "volSlash": "N", - "isbn": null, - "elementOrd": null - }, - "translatedIssue": null - }, - "book": null, - "reviewer": null, - "paging": { - "paging": { - "text": "3008--3019" - }, - "translatedPaging": null - }, - "counts": { - "cited": 18 - }, - "itemType": "Summary", - "articleUrl": "https://doi.org/10.1016/j.dam.2009.06.002", - "openURL": { - "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", - "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.1016%2Fj.dam.2009.06.002&rft.aufirst=T.&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=0166218X&rft.title=Discrete Applied Mathematics The Journal of Combinatorial Algorithms, Informatics and Computational Sciences&rft.atitle=2-dimensional optical orthogonal codes from Singer groups&rft.stitle=Discrete Appl Math &rft.volume=157&rft.date=2009&rft.spage=3008&rft.epage=3019&rft.pages=3008-3019&rft.issue=14&rft.jtitle=Discrete Applied Mathematics The Journal of Combinatorial Algorithms, Informatics and Computational Sciences", - "textLink": "" - }, - "prePubl": null, - "public": true - }, - { - "mrnumber": 2529622, - "titles": { - "title": "On the maximality of linear codes", - "translatedTitle": null - }, - "entryType": "J", - "primaryClass": { - "code": "94B05", - "description": "Linear codes (general theory)" - }, - "authors": [ - { - "id": 758603, - "name": "Alderson, T. L." - }, - { - "id": 615685, - "name": "Gács, András" - } - ], - "issue": { - "issue": { - "pubYear": 2009, - "pubYear2": null, - "volume": "53", - "volume2": null, - "volume3": null, - "number": "1", - "journal": { - "id": 6036, - "shortTitle": "Des. Codes Cryptogr." - }, - "volSlash": "N", - "isbn": null, - "elementOrd": null - }, - "translatedIssue": null - }, - "book": null, - "reviewer": { - "public": true, - "reviewers": [ - { - "authId": 811978, - "rvrCode": 68997, - "name": "Pasticci, Fabio" - } - ] - }, - "paging": { - "paging": { - "text": "59--68" - }, - "translatedPaging": null - }, - "counts": { - "cited": 3 - }, - "itemType": "Reviewed", - "articleUrl": "https://doi.org/10.1007/s10623-009-9293-z", - "openURL": { - "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", - "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.1007%2Fs10623-009-9293-z&rft.aufirst=T.&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=09251022&rft.title=Designs, Codes and Cryptography An International Journal&rft.atitle=On the maximality of linear codes&rft.stitle=Des Codes Cryptogr &rft.volume=53&rft.date=2009&rft.spage=59&rft.epage=68&rft.pages=59-68&rft.issue=1&rft.jtitle=Designs, Codes and Cryptography An International Journal", - "textLink": "" - }, - "prePubl": null, - "public": true - }, - { - "mrnumber": 2658658, - "titles": { - "title": "Partitions in finite geometry and related constant composition codes", - "translatedTitle": null - }, - "entryType": "J", - "primaryClass": { - "code": "51E20", - "description": "Combinatorial structures in finite projective spaces" - }, - "authors": [ - { - "id": 758603, - "name": "Alderson, Tim L." - }, - { - "id": 692091, - "name": "Mellinger, Keith E." - } - ], - "issue": { - "issue": { - "pubYear": 2008, - "pubYear2": null, - "volume": "8", - "volume2": null, - "volume3": null, - "number": null, - "journal": { - "id": 6154, - "shortTitle": "Innov. Incidence Geom." - }, - "volSlash": "N", - "isbn": null, - "elementOrd": null - }, - "translatedIssue": null - }, - "book": null, - "reviewer": { - "public": true, - "reviewers": [ - { - "authId": 811978, - "rvrCode": 68997, - "name": "Pasticci, Fabio" - } - ] - }, - "paging": { - "paging": { - "text": "49--71" - }, - "translatedPaging": null - }, - "counts": null, - "itemType": "Reviewed", - "articleUrl": "https://doi.org/10.2140/iig.2008.8.49", - "openURL": { - "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", - "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.2140%2Fiig.2008.8.49&rft.aufirst=Tim&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=26407337&rft.title=Innovations in Incidence Geometry Algebraic, Topological and Combinatorial&rft.atitle=Partitions in finite geometry and related constant composition codes&rft.stitle=Innov Incidence Geom &rft.volume=8&rft.date=2008&rft.spage=49&rft.epage=71&rft.pages=49-71&&rft.jtitle=Innovations in Incidence Geometry Algebraic, Topological and Combinatorial", - "textLink": "" - }, - "prePubl": null, - "public": true - }, - { - "mrnumber": 2452815, - "titles": { - "title": "Geometric constructions of optimal optical orthogonal codes", - "translatedTitle": null - }, - "entryType": "J", - "primaryClass": { - "code": "94B27", - "description": "Geometric methods (including applications of algebraic geometry) applied to coding theory" - }, - "authors": [ - { - "id": 758603, - "name": "Alderson, T. L." - }, - { - "id": 692091, - "name": "Mellinger, K. E." - } - ], - "issue": { - "issue": { - "pubYear": 2008, - "pubYear2": null, - "volume": "2", - "volume2": null, - "volume3": null, - "number": "4", - "journal": { - "id": 6241, - "shortTitle": "Adv. Math. Commun." - }, - "volSlash": "N", - "isbn": null, - "elementOrd": null - }, - "translatedIssue": null - }, - "book": null, - "reviewer": { - "public": true, - "reviewers": [ - { - "authId": 675427, - "rvrCode": 35099, - "name": "Kim, Jon-Lark" - } - ] - }, - "paging": { - "paging": { - "text": "451--467" - }, - "translatedPaging": null - }, - "counts": { - "cited": 15 - }, - "itemType": "Reviewed", - "articleUrl": "https://doi.org/10.3934/amc.2008.2.451", - "openURL": { - "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", - "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.3934%2Famc.2008.2.451&rft.aufirst=T.&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=19305346&rft.title=Advances in Mathematics of Communications&rft.atitle=Geometric constructions of optimal optical orthogonal codes&rft.stitle=Adv Math Commun &rft.volume=2&rft.date=2008&rft.spage=451&rft.epage=467&rft.pages=451-467&rft.issue=4&rft.jtitle=Advances in Mathematics of Communications", - "textLink": "" - }, - "prePubl": null, - "public": true - }, - { - "mrnumber": 2451027, - "titles": { - "title": "Families of optimal OOCs with $\\\\lambda=2$", - "translatedTitle": null - }, - "entryType": "J", - "primaryClass": { - "code": "94B25", - "description": "Combinatorial codes" - }, - "authors": [ - { - "id": 758603, - "name": "Alderson, Tim L." - }, - { - "id": 692091, - "name": "Mellinger, Keith E." - } - ], - "issue": { - "issue": { - "pubYear": 2008, - "pubYear2": null, - "volume": "54", - "volume2": null, - "volume3": null, - "number": "8", - "journal": { - "id": 2292, - "shortTitle": "IEEE Trans. Inform. Theory" - }, - "volSlash": "N", - "isbn": null, - "elementOrd": null - }, - "translatedIssue": null - }, - "book": null, - "reviewer": { - "public": true, - "reviewers": [ - { - "authId": 334456, - "rvrCode": 24644, - "name": "Borges-Ayats, Joaquim" - } - ] - }, - "paging": { - "paging": { - "text": "3722--3724" - }, - "translatedPaging": null - }, - "counts": { - "cited": 20 - }, - "itemType": "Reviewed", - "articleUrl": "https://doi.org/10.1109/TIT.2008.926394", - "openURL": { - "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", - "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.1109%2FTIT.2008.926394&rft.aufirst=Tim&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=00189448&rft.title=Institute of Electrical and Electronics Engineers Transactions on Information Theory&rft.atitle=Families of optimal OOCs with $lambda=2$&rft.stitle=IEEE Trans Inform Theory&rft.volume=54&rft.date=2008&rft.spage=3722&rft.epage=3724&rft.pages=3722-3724&rft.issue=8&rft.jtitle=Institute of Electrical and Electronics Engineers Transactions on Information Theory", - "textLink": "" - }, - "prePubl": null, - "public": true - }, - { - "mrnumber": 2398834, - "titles": { - "title": "Codes from cubic curves and their extensions", - "translatedTitle": null - }, - "entryType": "J", - "primaryClass": { - "code": "94B27", - "description": "Geometric methods (including applications of algebraic geometry) applied to coding theory" - }, - "authors": [ - { - "id": 758603, - "name": "Alderson, T. L." - }, - { - "id": 42380, - "name": "Bruen, A. A." - } - ], - "issue": { - "issue": { - "pubYear": 2008, - "pubYear2": null, - "volume": "15", - "volume2": null, - "volume3": null, - "number": "1", - "journal": { - "id": 4633, - "shortTitle": "Electron. J. Combin." - }, - "volSlash": "N", - "isbn": null, - "elementOrd": null - }, - "translatedIssue": null - }, - "book": null, - "reviewer": { - "public": true, - "reviewers": [ - { - "authId": 272152, - "rvrCode": 47895, - "name": "Kim, Seon Jeong" - } - ] - }, - "paging": { - "paging": { - "text": "Research paper 42, 9 pp." - }, - "translatedPaging": null - }, - "counts": { - "cited": 1 - }, - "itemType": "Reviewed", - "articleUrl": "https://doi.org/10.37236/766", - "openURL": { - "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", - "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.37236%2F766&rft.aufirst=T.&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.title=Electronic Journal of Combinatorics&rft.atitle=Codes from cubic curves and their extensions&rft.stitle=Electron J Combin &rft.volume=15&rft.date=2008&rft.spage=42&rft.epage=9&rft.pages=42-9&rft.issue=1&rft.jtitle=Electronic Journal of Combinatorics", - "textLink": "" - }, - "prePubl": null, - "public": true - }, - { - "mrnumber": 2394740, - "titles": { - "title": "Bruck nets and 2-dimensional codes", - "translatedTitle": null - }, - "entryType": "J", - "primaryClass": { - "code": "94B05", - "description": "Linear codes (general theory)" - }, - "authors": [ - { - "id": 758603, - "name": "Alderson, T. L." - } - ], - "issue": { - "issue": { - "pubYear": 2008, - "pubYear2": null, - "volume": "52", - "volume2": null, - "volume3": null, - "number": null, - "journal": { - "id": 4117, - "shortTitle": "Bull. Inst. Combin. Appl." - }, - "volSlash": "N", - "isbn": null, - "elementOrd": null - }, - "translatedIssue": null - }, - "book": null, - "reviewer": { - "public": true, - "reviewers": [ - { - "authId": 721987, - "rvrCode": 56185, - "name": "Lampe, Lutz" - } - ] - }, - "paging": { - "paging": { - "text": "33--44" - }, - "translatedPaging": null - }, - "counts": null, - "itemType": "Reviewed", - "articleUrl": null, - "openURL": { - "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", - "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft.aufirst=T.&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=11831278&rft.title=Bulletin of the Institute of Combinatorics and its Applications&rft.atitle=Bruck nets and 2-dimensional codes&rft.stitle=Bull Inst Combin Appl &rft.volume=52&rft.date=2008&rft.spage=33&rft.epage=44&rft.pages=33-44&&rft.jtitle=Bulletin of the Institute of Combinatorics and its Applications", - "textLink": "" - }, - "prePubl": null, - "public": true - }, - { - "mrnumber": 2389969, - "titles": { - "title": "Maximal AMDS codes", - "translatedTitle": null - }, - "entryType": "J", - "primaryClass": { - "code": "94B27", - "description": "Geometric methods (including applications of algebraic geometry) applied to coding theory" - }, - "authors": [ - { - "id": 758603, - "name": "Alderson, T. L." - }, - { - "id": 42380, - "name": "Bruen, A. A." - } - ], - "issue": { - "issue": { - "pubYear": 2008, - "pubYear2": null, - "volume": "19", - "volume2": null, - "volume3": null, - "number": "2", - "journal": { - "id": 4449, - "shortTitle": "Appl. Algebra Engrg. Comm. Comput." - }, - "volSlash": "N", - "isbn": null, - "elementOrd": null - }, - "translatedIssue": null - }, - "book": null, - "reviewer": { - "public": true, - "reviewers": [ - { - "authId": 329025, - "rvrCode": 58213, - "name": "Daskalov, Rumen N." - } - ] - }, - "paging": { - "paging": { - "text": "87--98" - }, - "translatedPaging": null - }, - "counts": { - "cited": 4 - }, - "itemType": "Summary", - "articleUrl": "https://doi.org/10.1007/s00200-008-0058-0", - "openURL": { - "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", - "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.1007%2Fs00200-008-0058-0&rft.aufirst=T.&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=09381279&rft.title=Applicable Algebra in Engineering, Communication and Computing&rft.atitle=Maximal AMDS codes&rft.stitle=Appl Algebra Engrg Comm Comput &rft.volume=19&rft.date=2008&rft.spage=87&rft.epage=98&rft.pages=87-98&rft.issue=2&rft.jtitle=Applicable Algebra in Engineering, Communication and Computing", - "textLink": "" - }, - "prePubl": null, - "public": true - }, - { - "mrnumber": 2382348, - "titles": { - "title": "Classes of optical orthogonal codes from arcs in root subspaces", - "translatedTitle": null - }, - "entryType": "J", - "primaryClass": { - "code": "94B27", - "description": "Geometric methods (including applications of algebraic geometry) applied to coding theory" - }, - "authors": [ - { - "id": 758603, - "name": "Alderson, T. L." - }, - { - "id": 692091, - "name": "Mellinger, Keith E." - } - ], - "issue": { - "issue": { - "pubYear": 2008, - "pubYear2": null, - "volume": "308", - "volume2": null, - "volume3": null, - "number": "7", - "journal": { - "id": 643, - "shortTitle": "Discrete Math." - }, - "volSlash": "N", - "isbn": null, - "elementOrd": null - }, - "translatedIssue": null - }, - "book": null, - "reviewer": { - "public": true, - "reviewers": [ - { - "authId": 97215, - "rvrCode": 6155, - "name": "Kallaher, M. J." - } - ] - }, - "paging": { - "paging": { - "text": "1093--1101" - }, - "translatedPaging": null - }, - "counts": { - "cited": 5 - }, - "itemType": "Reviewed", - "articleUrl": "https://doi.org/10.1016/j.disc.2007.03.063", - "openURL": { - "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", - "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.1016%2Fj.disc.2007.03.063&rft.aufirst=T.&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=0012365X&rft.title=Discrete Mathematics&rft.atitle=Classes of optical orthogonal codes from arcs in root subspaces&rft.stitle=Discrete Math &rft.volume=308&rft.date=2008&rft.spage=1093&rft.epage=1101&rft.pages=1093-1101&rft.issue=7&rft.jtitle=Discrete Mathematics", - "textLink": "" - }, - "prePubl": null, - "public": true - } - ], - "total": 31 - } - """; - - InputStream inputStream = new ByteArrayInputStream(json.getBytes(StandardCharsets.UTF_8)); - List entries = fetcher.getParser().parseEntries(inputStream); - - assertEquals(List.of( - new BibEntry(StandardEntryType.Article) - .withField(StandardField.TITLE, "On the weights of general MDS codes") - .withField(StandardField.AUTHOR, "Alderson, Tim L.") - .withField(StandardField.YEAR, "2020") - .withField(StandardField.JOURNAL, "IEEE Trans. Inform. Theory") - .withField(StandardField.VOLUME, "66") - .withField(StandardField.NUMBER, "9") - .withField(StandardField.PAGES, "5414--5418") - .withField(StandardField.MR_NUMBER, "4158623") - .withField(StandardField.KEYWORDS, "Bounds on codes") - .withField(StandardField.DOI, "https://doi.org/10.1109/TIT.2020.2977319") - .withField(StandardField.ISSN, "0018-9448") - ), entries); + String fileName = "/importer/fetcher/jsonTest.json"; + try (InputStream is = MathSciNetTest.class.getResourceAsStream(fileName)) { + List entries = fetcher.getParser().parseEntries(is); + + assertEquals(List.of( + new BibEntry(StandardEntryType.Article) + .withField(StandardField.TITLE, "On the weights of general MDS codes") + .withField(StandardField.AUTHOR, "Alderson, Tim L.") + .withField(StandardField.YEAR, "2020") + .withField(StandardField.JOURNAL, "IEEE Trans. Inform. Theory") + .withField(StandardField.VOLUME, "66") + .withField(StandardField.NUMBER, "9") + .withField(StandardField.PAGES, "5414--5418") + .withField(StandardField.MR_NUMBER, "4158623") + .withField(StandardField.KEYWORDS, "Bounds on codes") + .withField(StandardField.DOI, "https://doi.org/10.1109/TIT.2020.2977319") + .withField(StandardField.ISSN, "0018-9448") + ), entries); + } } } diff --git a/src/test/java/org/jabref/logic/importer/fetcher/jsonTest.json b/src/test/java/org/jabref/logic/importer/fetcher/jsonTest.json new file mode 100644 index 00000000000..9f261447aed --- /dev/null +++ b/src/test/java/org/jabref/logic/importer/fetcher/jsonTest.json @@ -0,0 +1,1319 @@ +{ + "results": [ + { + "mrnumber": 4158623, + "titles": { + "title": "On the weights of general MDS codes", + "translatedTitle": null + }, + "entryType": "J", + "primaryClass": { + "code": "94B65", + "description": "Bounds on codes" + }, + "authors": [ + { + "id": 758603, + "name": "Alderson, Tim L." + } + ], + "issue": { + "issue": { + "pubYear": 2020, + "pubYear2": null, + "volume": "66", + "volume2": null, + "volume3": null, + "number": "9", + "journal": { + "id": 2292, + "shortTitle": "IEEE Trans. Inform. Theory" + }, + "volSlash": "N", + "isbn": null, + "elementOrd": null + }, + "translatedIssue": null + }, + "book": null, + "reviewer": { + "public": true, + "reviewers": [ + { + "authId": 889610, + "rvrCode": 85231, + "name": "Jitman, Somphong" + } + ] + }, + "paging": { + "paging": { + "text": "5414--5418" + }, + "translatedPaging": null + }, + "counts": { + "cited": 2 + }, + "itemType": "Reviewed", + "articleUrl": "https://doi.org/10.1109/TIT.2020.2977319", + "openURL": { + "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", + "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.1109%2FTIT.2020.2977319&rft.aufirst=Tim&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=00189448&rft.title=Institute of Electrical and Electronics Engineers Transactions on Information Theory&rft.atitle=On the weights of general MDS codes&rft.stitle=IEEE Trans Inform Theory&rft.volume=66&rft.date=2020&rft.spage=5414&rft.epage=5418&rft.pages=5414-5418&rft.issue=9&rft.jtitle=Institute of Electrical and Electronics Engineers Transactions on Information Theory", + "textLink": "" + }, + "prePubl": null, + "public": true + }, + { + "mrnumber": 4019905, + "titles": { + "title": "$n$-dimensional optical orthogonal codes, bounds and optimal constructions", + "translatedTitle": null + }, + "entryType": "J", + "primaryClass": { + "code": "94B65", + "description": "Bounds on codes" + }, + "authors": [ + { + "id": 758603, + "name": "Alderson, T. L." + } + ], + "issue": { + "issue": { + "pubYear": 2019, + "pubYear2": null, + "volume": "30", + "volume2": null, + "volume3": null, + "number": "5", + "journal": { + "id": 4449, + "shortTitle": "Appl. Algebra Engrg. Comm. Comput." + }, + "volSlash": "N", + "isbn": null, + "elementOrd": null + }, + "translatedIssue": null + }, + "book": null, + "reviewer": { + "public": true, + "reviewers": [ + { + "authId": 929349, + "rvrCode": 128559, + "name": "Lee, Nari" + } + ] + }, + "paging": { + "paging": { + "text": "373--386" + }, + "translatedPaging": null + }, + "counts": null, + "itemType": "Reviewed", + "articleUrl": "https://doi.org/10.1007/s00200-018-00379-3", + "openURL": { + "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", + "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.1007%2Fs00200-018-00379-3&rft.aufirst=T.&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=09381279&rft.title=Applicable Algebra in Engineering, Communication and Computing&rft.atitle=$n$-dimensional optical orthogonal codes, bounds and optimal constructions&rft.stitle=Appl Algebra Engrg Comm Comput &rft.volume=30&rft.date=2019&rft.spage=373&rft.epage=386&rft.pages=373-386&rft.issue=5&rft.jtitle=Applicable Algebra in Engineering, Communication and Computing", + "textLink": "" + }, + "prePubl": null, + "public": true + }, + { + "mrnumber": 4014640, + "titles": { + "title": "A note on full weight spectrum codes", + "translatedTitle": null + }, + "entryType": "J", + "primaryClass": { + "code": "94B05", + "description": "Linear codes (general theory)" + }, + "authors": [ + { + "id": 758603, + "name": "Alderson, Tim L." + } + ], + "issue": { + "issue": { + "pubYear": 2019, + "pubYear2": null, + "volume": "8", + "volume2": null, + "volume3": null, + "number": "3", + "journal": { + "id": 8218, + "shortTitle": "Trans. Comb." + }, + "volSlash": "N", + "isbn": null, + "elementOrd": null + }, + "translatedIssue": null + }, + "book": null, + "reviewer": null, + "paging": { + "paging": { + "text": "15--22" + }, + "translatedPaging": null + }, + "counts": { + "cited": 6 + }, + "itemType": "Summary", + "articleUrl": "https://doi.org/10.22108/toc.2019.112621.1584", + "openURL": { + "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", + "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.22108%2Ftoc.2019.112621.1584&rft.aufirst=Tim&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=22518657&rft.title=Transactions on Combinatorics&rft.atitle=A note on full weight spectrum codes&rft.stitle=Trans Comb &rft.volume=8&rft.date=2019&rft.spage=15&rft.epage=22&rft.pages=15-22&rft.issue=3&rft.jtitle=Transactions on Combinatorics", + "textLink": "" + }, + "prePubl": null, + "public": true + }, + { + "mrnumber": 3917650, + "titles": { + "title": "Maximum weight spectrum codes", + "translatedTitle": null + }, + "entryType": "J", + "primaryClass": { + "code": "94B05", + "description": "Linear codes (general theory)" + }, + "authors": [ + { + "id": 758603, + "name": "Alderson, Tim" + }, + { + "id": 1251963, + "name": "Neri, Alessandro" + } + ], + "issue": { + "issue": { + "pubYear": 2019, + "pubYear2": null, + "volume": "13", + "volume2": null, + "volume3": null, + "number": "1", + "journal": { + "id": 6241, + "shortTitle": "Adv. Math. Commun." + }, + "volSlash": "N", + "isbn": null, + "elementOrd": null + }, + "translatedIssue": null + }, + "book": null, + "reviewer": { + "public": true, + "reviewers": [ + { + "authId": 685341, + "rvrCode": 30916, + "name": "Oluwade, Bamidele A." + } + ] + }, + "paging": { + "paging": { + "text": "101--119" + }, + "translatedPaging": null + }, + "counts": { + "cited": 6 + }, + "itemType": "Reviewed", + "articleUrl": "https://doi.org/10.3934/amc.2019006", + "openURL": { + "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", + "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.3934%2Famc.2019006&rft.aufirst=Tim&rft.auinit=T&rft.auinit1=T&rft.auinitm=&rft.aulast=Alderson&rft.genre=article&rft.issn=19305346&rft.title=Advances in Mathematics of Communications&rft.atitle=Maximum weight spectrum codes&rft.stitle=Adv Math Commun &rft.volume=13&rft.date=2019&rft.spage=101&rft.epage=119&rft.pages=101-119&rft.issue=1&rft.jtitle=Advances in Mathematics of Communications", + "textLink": "" + }, + "prePubl": null, + "public": true + }, + { + "mrnumber": 3897552, + "titles": { + "title": "How many weights can a linear code have?", + "translatedTitle": null + }, + "entryType": "J", + "primaryClass": { + "code": "94B05", + "description": "Linear codes (general theory)" + }, + "authors": [ + { + "id": 863999, + "name": "Shi, Minjia" + }, + { + "id": 1276838, + "name": "Zhu, Hongwei" + }, + { + "id": 225546, + "name": "Solé, Patrick" + }, + { + "id": 50285, + "name": "Cohen, Gérard D." + } + ], + "issue": { + "issue": { + "pubYear": 2019, + "pubYear2": null, + "volume": "87", + "volume2": null, + "volume3": null, + "number": "1", + "journal": { + "id": 6036, + "shortTitle": "Des. Codes Cryptogr." + }, + "volSlash": "N", + "isbn": null, + "elementOrd": null + }, + "translatedIssue": null + }, + "book": null, + "reviewer": { + "public": true, + "reviewers": [ + { + "authId": 249580, + "rvrCode": 36256, + "name": "Hou, Xiang-dong" + } + ] + }, + "paging": { + "paging": { + "text": "87--95" + }, + "translatedPaging": null + }, + "counts": { + "cited": 9 + }, + "itemType": "Reviewed", + "articleUrl": "https://doi.org/10.1007/s10623-018-0488-z", + "openURL": { + "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", + "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.1007%2Fs10623-018-0488-z&rft.aufirst=Minjia&rft.auinit=M&rft.auinit1=M&rft.auinitm=&rft.aulast=Shi&rft.genre=article&rft.issn=09251022&rft.title=Designs, Codes and Cryptography An International Journal&rft.atitle=How many weights can a linear code have?&rft.stitle=Des Codes Cryptogr &rft.volume=87&rft.date=2019&rft.spage=87&rft.epage=95&rft.pages=87-95&rft.issue=1&rft.jtitle=Designs, Codes and Cryptography An International Journal", + "textLink": "" + }, + "prePubl": null, + "public": true + }, + { + "mrnumber": 3809747, + "titles": { + "title": "3-dimensional optical orthogonal codes with ideal autocorrelation-bounds and optimal constructions", + "translatedTitle": null + }, + "entryType": "J", + "primaryClass": { + "code": "94A55", + "description": "Shift register sequences and sequences over finite alphabets in information and communication theory" + }, + "authors": [ + { + "id": 758603, + "name": "Alderson, Tim L." + } + ], + "issue": { + "issue": { + "pubYear": 2018, + "pubYear2": null, + "volume": "64", + "volume2": null, + "volume3": null, + "number": "6", + "journal": { + "id": 2292, + "shortTitle": "IEEE Trans. Inform. Theory" + }, + "volSlash": "N", + "isbn": null, + "elementOrd": null + }, + "translatedIssue": null + }, + "book": null, + "reviewer": null, + "paging": { + "paging": { + "text": "4392--4398" + }, + "translatedPaging": null + }, + "counts": { + "cited": 1 + }, + "itemType": "Summary", + "articleUrl": "https://doi.org/10.1109/TIT.2017.2717538", + "openURL": { + "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", + "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.1109%2FTIT.2017.2717538&rft.aufirst=Tim&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=00189448&rft.title=Institute of Electrical and Electronics Engineers Transactions on Information Theory&rft.atitle=3-dimensional optical orthogonal codes with ideal autocorrelation-bounds and optimal constructions&rft.stitle=IEEE Trans Inform Theory&rft.volume=64&rft.date=2018&rft.spage=4392&rft.epage=4398&rft.pages=4392-4398&rft.issue=6&rft.jtitle=Institute of Electrical and Electronics Engineers Transactions on Information Theory", + "textLink": "" + }, + "prePubl": null, + "public": true + }, + { + "mrnumber": 3216214, + "titles": { + "title": "The partition weight enumerator and bounds on MDS codes", + "translatedTitle": null + }, + "entryType": "J", + "primaryClass": { + "code": "94B05", + "description": "Linear codes (general theory)" + }, + "authors": [ + { + "id": 758603, + "name": "Alderson, T. L." + }, + { + "id": 1068150, + "name": "Huntemann, Svenja" + } + ], + "issue": { + "issue": { + "pubYear": 2014, + "pubYear2": null, + "volume": "6", + "volume2": null, + "volume3": null, + "number": "1", + "journal": { + "id": 7425, + "shortTitle": "Atl. Electron. J. Math." + }, + "volSlash": "N", + "isbn": null, + "elementOrd": null + }, + "translatedIssue": null + }, + "book": null, + "reviewer": null, + "paging": { + "paging": { + "text": "1--10" + }, + "translatedPaging": null + }, + "counts": { + "cited": 2 + }, + "itemType": "Summary", + "articleUrl": null, + "openURL": { + "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", + "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft.aufirst=T.&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.title=Atlantic Electronic Journal of Mathematics&rft.atitle=The partition weight enumerator and bounds on MDS codes&rft.stitle=Atl Electron J Math &rft.volume=6&rft.date=2014&rft.spage=1&rft.epage=10&rft.pages=1-10&rft.issue=1&rft.jtitle=Atlantic Electronic Journal of Mathematics", + "textLink": "" + }, + "prePubl": null, + "public": true + }, + { + "mrnumber": 2793231, + "titles": { + "title": "Spreads, arcs, and multiple wavelength codes", + "translatedTitle": null + }, + "entryType": "J", + "primaryClass": { + "code": "94B60", + "description": "Other types of codes" + }, + "authors": [ + { + "id": 758603, + "name": "Alderson, T. L." + }, + { + "id": 692091, + "name": "Mellinger, Keith E." + } + ], + "issue": { + "issue": { + "pubYear": 2011, + "pubYear2": null, + "volume": "311", + "volume2": null, + "volume3": null, + "number": "13", + "journal": { + "id": 643, + "shortTitle": "Discrete Math." + }, + "volSlash": "N", + "isbn": null, + "elementOrd": null + }, + "translatedIssue": null + }, + "book": null, + "reviewer": { + "public": true, + "reviewers": [ + { + "authId": 850192, + "rvrCode": 71699, + "name": "Fan, Cuiling" + } + ] + }, + "paging": { + "paging": { + "text": "1187--1196" + }, + "translatedPaging": null + }, + "counts": { + "cited": 6 + }, + "itemType": "Reviewed", + "articleUrl": "https://doi.org/10.1016/j.disc.2010.06.010", + "openURL": { + "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", + "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.1016%2Fj.disc.2010.06.010&rft.aufirst=T.&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=0012365X&rft.title=Discrete Mathematics&rft.atitle=Spreads, arcs, and multiple wavelength codes&rft.stitle=Discrete Math &rft.volume=311&rft.date=2011&rft.spage=1187&rft.epage=1196&rft.pages=1187-1196&rft.issue=13&rft.jtitle=Discrete Mathematics", + "textLink": "" + }, + "prePubl": null, + "public": true + }, + { + "mrnumber": 2772904, + "titles": { + "title": "Classes of permutation arrays in finite projective spaces", + "translatedTitle": null + }, + "entryType": "J", + "primaryClass": { + "code": "51E15", + "description": "Finite affine and projective planes (geometric aspects)" + }, + "authors": [ + { + "id": 758603, + "name": "Alderson, T. L." + }, + { + "id": 692091, + "name": "Mellinger, Keith E." + } + ], + "issue": { + "issue": { + "pubYear": 2010, + "pubYear2": null, + "volume": "1", + "volume2": null, + "volume3": null, + "number": "4", + "journal": { + "id": 7248, + "shortTitle": "Int. J. Inf. Coding Theory" + }, + "volSlash": "N", + "isbn": null, + "elementOrd": null + }, + "translatedIssue": null + }, + "book": null, + "reviewer": { + "public": true, + "reviewers": [ + { + "authId": 97215, + "rvrCode": 6155, + "name": "Kallaher, M. J." + } + ] + }, + "paging": { + "paging": { + "text": "371--383" + }, + "translatedPaging": null + }, + "counts": null, + "itemType": "Reviewed", + "articleUrl": "https://doi.org/10.1504/IJICOT.2010.032863", + "openURL": { + "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", + "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.1504%2FIJICOT.2010.032863&rft.aufirst=T.&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=17537703&rft.title=International Journal of Information and Coding Theory IJICOT&rft.atitle=Classes of permutation arrays in finite projective spaces&rft.stitle=Int J Inf Coding Theory&rft.volume=1&rft.date=2010&rft.spage=371&rft.epage=383&rft.pages=371-383&rft.issue=4&rft.jtitle=International Journal of Information and Coding Theory IJICOT", + "textLink": "" + }, + "prePubl": null, + "public": true + }, + { + "mrnumber": 2766013, + "titles": { + "title": "Hyperconics and multiple weight codes for OCDMA", + "translatedTitle": null + }, + "entryType": "BC", + "primaryClass": { + "code": "94B27", + "description": "Geometric methods (including applications of algebraic geometry) applied to coding theory" + }, + "authors": [ + { + "id": 758603, + "name": "Alderson, T. L." + } + ], + "issue": { + "issue": null, + "translatedIssue": null + }, + "book": { + "pubYear": 2010, + "publisher": [ + { + "name": "American Mathematical Society", + "location": "Providence, RI", + "preText": null, + "postText": null + } + ], + "isbn": [ + "978-0-8218-4956-9" + ], + "series": [ + { + "serId": 1059, + "title": "Contemporary Mathematics", + "transTitle": null, + "volume": "523", + "shortTitle": "Contemp. Math." + } + ] + }, + "reviewer": { + "public": true, + "reviewers": [ + { + "authId": 173380, + "rvrCode": 18754, + "name": "Tonchev, Vladimir D." + } + ] + }, + "paging": { + "paging": { + "text": "67--76" + }, + "translatedPaging": null + }, + "counts": null, + "itemType": "Reviewed", + "articleUrl": "https://doi.org/10.1090/conm/523/10332", + "openURL": { + "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", + "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:book&rft_id=info:doi/10.1090%2Fconm%2F523%2F10332&rft_id=urn:ISBN:978-0-8218-4956-9&rft.aufirst=T.&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=proceeding&rft.title=Error-correcting codes, finite geometries and cryptography&rft.atitle=Hyperconics and multiple weight codes for OCDMA&rft.stitle=Contemporary Mathematics&rft.volume=523&rft.date=2010&rft.spage=67&rft.epage=76&rft.pages=67-76&rft.isbn=9780821849569", + "textLink": "" + }, + "prePubl": null, + "public": true + }, + { + "mrnumber": 2742541, + "titles": { + "title": "Error-correcting codes, finite geometries and cryptography", + "translatedTitle": null + }, + "entryType": "BCZ", + "primaryClass": { + "code": "94Bxx", + "description": "" + }, + "authors": [], + "issue": { + "issue": null, + "translatedIssue": null + }, + "book": { + "pubYear": 2010, + "publisher": [ + { + "name": "American Mathematical Society", + "location": "Providence, RI", + "preText": null, + "postText": null + } + ], + "isbn": [ + "978-0-8218-4956-9" + ], + "series": [ + { + "serId": 1059, + "title": "Contemporary Mathematics", + "transTitle": null, + "volume": "523", + "shortTitle": "Contemp. Math." + } + ] + }, + "reviewer": null, + "paging": { + "paging": { + "text": "viii+244 pp." + }, + "translatedPaging": null + }, + "counts": null, + "itemType": "Summary", + "articleUrl": "https://doi.org/10.1090/conm/523", + "openURL": { + "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", + "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:book&rft_id=info:doi/10.1090%2Fconm%2F523&rft_id=urn:ISBN:978-0-8218-4956-9&rft.genre=conference&rft.title=Error-correcting codes, finite geometries and cryptography&rft.stitle=Contemporary Mathematics&rft.volume=523&rft.date=2010&rft.spage=1&rft.spage=244&rft.pages=1-244&rft.isbn=9780821849569", + "textLink": "" + }, + "prePubl": null, + "public": true + }, + { + "mrnumber": 2553388, + "titles": { + "title": "2-dimensional optical orthogonal codes from Singer groups", + "translatedTitle": null + }, + "entryType": "J", + "primaryClass": { + "code": "94B60", + "description": "Other types of codes" + }, + "authors": [ + { + "id": 758603, + "name": "Alderson, T. L." + }, + { + "id": 692091, + "name": "Mellinger, Keith E." + } + ], + "issue": { + "issue": { + "pubYear": 2009, + "pubYear2": null, + "volume": "157", + "volume2": null, + "volume3": null, + "number": "14", + "journal": { + "id": 615, + "shortTitle": "Discrete Appl. Math." + }, + "volSlash": "N", + "isbn": null, + "elementOrd": null + }, + "translatedIssue": null + }, + "book": null, + "reviewer": null, + "paging": { + "paging": { + "text": "3008--3019" + }, + "translatedPaging": null + }, + "counts": { + "cited": 18 + }, + "itemType": "Summary", + "articleUrl": "https://doi.org/10.1016/j.dam.2009.06.002", + "openURL": { + "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", + "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.1016%2Fj.dam.2009.06.002&rft.aufirst=T.&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=0166218X&rft.title=Discrete Applied Mathematics The Journal of Combinatorial Algorithms, Informatics and Computational Sciences&rft.atitle=2-dimensional optical orthogonal codes from Singer groups&rft.stitle=Discrete Appl Math &rft.volume=157&rft.date=2009&rft.spage=3008&rft.epage=3019&rft.pages=3008-3019&rft.issue=14&rft.jtitle=Discrete Applied Mathematics The Journal of Combinatorial Algorithms, Informatics and Computational Sciences", + "textLink": "" + }, + "prePubl": null, + "public": true + }, + { + "mrnumber": 2529622, + "titles": { + "title": "On the maximality of linear codes", + "translatedTitle": null + }, + "entryType": "J", + "primaryClass": { + "code": "94B05", + "description": "Linear codes (general theory)" + }, + "authors": [ + { + "id": 758603, + "name": "Alderson, T. L." + }, + { + "id": 615685, + "name": "Gács, András" + } + ], + "issue": { + "issue": { + "pubYear": 2009, + "pubYear2": null, + "volume": "53", + "volume2": null, + "volume3": null, + "number": "1", + "journal": { + "id": 6036, + "shortTitle": "Des. Codes Cryptogr." + }, + "volSlash": "N", + "isbn": null, + "elementOrd": null + }, + "translatedIssue": null + }, + "book": null, + "reviewer": { + "public": true, + "reviewers": [ + { + "authId": 811978, + "rvrCode": 68997, + "name": "Pasticci, Fabio" + } + ] + }, + "paging": { + "paging": { + "text": "59--68" + }, + "translatedPaging": null + }, + "counts": { + "cited": 3 + }, + "itemType": "Reviewed", + "articleUrl": "https://doi.org/10.1007/s10623-009-9293-z", + "openURL": { + "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", + "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.1007%2Fs10623-009-9293-z&rft.aufirst=T.&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=09251022&rft.title=Designs, Codes and Cryptography An International Journal&rft.atitle=On the maximality of linear codes&rft.stitle=Des Codes Cryptogr &rft.volume=53&rft.date=2009&rft.spage=59&rft.epage=68&rft.pages=59-68&rft.issue=1&rft.jtitle=Designs, Codes and Cryptography An International Journal", + "textLink": "" + }, + "prePubl": null, + "public": true + }, + { + "mrnumber": 2658658, + "titles": { + "title": "Partitions in finite geometry and related constant composition codes", + "translatedTitle": null + }, + "entryType": "J", + "primaryClass": { + "code": "51E20", + "description": "Combinatorial structures in finite projective spaces" + }, + "authors": [ + { + "id": 758603, + "name": "Alderson, Tim L." + }, + { + "id": 692091, + "name": "Mellinger, Keith E." + } + ], + "issue": { + "issue": { + "pubYear": 2008, + "pubYear2": null, + "volume": "8", + "volume2": null, + "volume3": null, + "number": null, + "journal": { + "id": 6154, + "shortTitle": "Innov. Incidence Geom." + }, + "volSlash": "N", + "isbn": null, + "elementOrd": null + }, + "translatedIssue": null + }, + "book": null, + "reviewer": { + "public": true, + "reviewers": [ + { + "authId": 811978, + "rvrCode": 68997, + "name": "Pasticci, Fabio" + } + ] + }, + "paging": { + "paging": { + "text": "49--71" + }, + "translatedPaging": null + }, + "counts": null, + "itemType": "Reviewed", + "articleUrl": "https://doi.org/10.2140/iig.2008.8.49", + "openURL": { + "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", + "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.2140%2Fiig.2008.8.49&rft.aufirst=Tim&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=26407337&rft.title=Innovations in Incidence Geometry Algebraic, Topological and Combinatorial&rft.atitle=Partitions in finite geometry and related constant composition codes&rft.stitle=Innov Incidence Geom &rft.volume=8&rft.date=2008&rft.spage=49&rft.epage=71&rft.pages=49-71&&rft.jtitle=Innovations in Incidence Geometry Algebraic, Topological and Combinatorial", + "textLink": "" + }, + "prePubl": null, + "public": true + }, + { + "mrnumber": 2452815, + "titles": { + "title": "Geometric constructions of optimal optical orthogonal codes", + "translatedTitle": null + }, + "entryType": "J", + "primaryClass": { + "code": "94B27", + "description": "Geometric methods (including applications of algebraic geometry) applied to coding theory" + }, + "authors": [ + { + "id": 758603, + "name": "Alderson, T. L." + }, + { + "id": 692091, + "name": "Mellinger, K. E." + } + ], + "issue": { + "issue": { + "pubYear": 2008, + "pubYear2": null, + "volume": "2", + "volume2": null, + "volume3": null, + "number": "4", + "journal": { + "id": 6241, + "shortTitle": "Adv. Math. Commun." + }, + "volSlash": "N", + "isbn": null, + "elementOrd": null + }, + "translatedIssue": null + }, + "book": null, + "reviewer": { + "public": true, + "reviewers": [ + { + "authId": 675427, + "rvrCode": 35099, + "name": "Kim, Jon-Lark" + } + ] + }, + "paging": { + "paging": { + "text": "451--467" + }, + "translatedPaging": null + }, + "counts": { + "cited": 15 + }, + "itemType": "Reviewed", + "articleUrl": "https://doi.org/10.3934/amc.2008.2.451", + "openURL": { + "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", + "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.3934%2Famc.2008.2.451&rft.aufirst=T.&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=19305346&rft.title=Advances in Mathematics of Communications&rft.atitle=Geometric constructions of optimal optical orthogonal codes&rft.stitle=Adv Math Commun &rft.volume=2&rft.date=2008&rft.spage=451&rft.epage=467&rft.pages=451-467&rft.issue=4&rft.jtitle=Advances in Mathematics of Communications", + "textLink": "" + }, + "prePubl": null, + "public": true + }, + { + "mrnumber": 2451027, + "titles": { + "title": "Families of optimal OOCs with $\\lambda=2$", + "translatedTitle": null + }, + "entryType": "J", + "primaryClass": { + "code": "94B25", + "description": "Combinatorial codes" + }, + "authors": [ + { + "id": 758603, + "name": "Alderson, Tim L." + }, + { + "id": 692091, + "name": "Mellinger, Keith E." + } + ], + "issue": { + "issue": { + "pubYear": 2008, + "pubYear2": null, + "volume": "54", + "volume2": null, + "volume3": null, + "number": "8", + "journal": { + "id": 2292, + "shortTitle": "IEEE Trans. Inform. Theory" + }, + "volSlash": "N", + "isbn": null, + "elementOrd": null + }, + "translatedIssue": null + }, + "book": null, + "reviewer": { + "public": true, + "reviewers": [ + { + "authId": 334456, + "rvrCode": 24644, + "name": "Borges-Ayats, Joaquim" + } + ] + }, + "paging": { + "paging": { + "text": "3722--3724" + }, + "translatedPaging": null + }, + "counts": { + "cited": 20 + }, + "itemType": "Reviewed", + "articleUrl": "https://doi.org/10.1109/TIT.2008.926394", + "openURL": { + "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", + "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.1109%2FTIT.2008.926394&rft.aufirst=Tim&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=00189448&rft.title=Institute of Electrical and Electronics Engineers Transactions on Information Theory&rft.atitle=Families of optimal OOCs with $lambda=2$&rft.stitle=IEEE Trans Inform Theory&rft.volume=54&rft.date=2008&rft.spage=3722&rft.epage=3724&rft.pages=3722-3724&rft.issue=8&rft.jtitle=Institute of Electrical and Electronics Engineers Transactions on Information Theory", + "textLink": "" + }, + "prePubl": null, + "public": true + }, + { + "mrnumber": 2398834, + "titles": { + "title": "Codes from cubic curves and their extensions", + "translatedTitle": null + }, + "entryType": "J", + "primaryClass": { + "code": "94B27", + "description": "Geometric methods (including applications of algebraic geometry) applied to coding theory" + }, + "authors": [ + { + "id": 758603, + "name": "Alderson, T. L." + }, + { + "id": 42380, + "name": "Bruen, A. A." + } + ], + "issue": { + "issue": { + "pubYear": 2008, + "pubYear2": null, + "volume": "15", + "volume2": null, + "volume3": null, + "number": "1", + "journal": { + "id": 4633, + "shortTitle": "Electron. J. Combin." + }, + "volSlash": "N", + "isbn": null, + "elementOrd": null + }, + "translatedIssue": null + }, + "book": null, + "reviewer": { + "public": true, + "reviewers": [ + { + "authId": 272152, + "rvrCode": 47895, + "name": "Kim, Seon Jeong" + } + ] + }, + "paging": { + "paging": { + "text": "Research paper 42, 9 pp." + }, + "translatedPaging": null + }, + "counts": { + "cited": 1 + }, + "itemType": "Reviewed", + "articleUrl": "https://doi.org/10.37236/766", + "openURL": { + "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", + "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.37236%2F766&rft.aufirst=T.&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.title=Electronic Journal of Combinatorics&rft.atitle=Codes from cubic curves and their extensions&rft.stitle=Electron J Combin &rft.volume=15&rft.date=2008&rft.spage=42&rft.epage=9&rft.pages=42-9&rft.issue=1&rft.jtitle=Electronic Journal of Combinatorics", + "textLink": "" + }, + "prePubl": null, + "public": true + }, + { + "mrnumber": 2394740, + "titles": { + "title": "Bruck nets and 2-dimensional codes", + "translatedTitle": null + }, + "entryType": "J", + "primaryClass": { + "code": "94B05", + "description": "Linear codes (general theory)" + }, + "authors": [ + { + "id": 758603, + "name": "Alderson, T. L." + } + ], + "issue": { + "issue": { + "pubYear": 2008, + "pubYear2": null, + "volume": "52", + "volume2": null, + "volume3": null, + "number": null, + "journal": { + "id": 4117, + "shortTitle": "Bull. Inst. Combin. Appl." + }, + "volSlash": "N", + "isbn": null, + "elementOrd": null + }, + "translatedIssue": null + }, + "book": null, + "reviewer": { + "public": true, + "reviewers": [ + { + "authId": 721987, + "rvrCode": 56185, + "name": "Lampe, Lutz" + } + ] + }, + "paging": { + "paging": { + "text": "33--44" + }, + "translatedPaging": null + }, + "counts": null, + "itemType": "Reviewed", + "articleUrl": null, + "openURL": { + "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", + "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft.aufirst=T.&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=11831278&rft.title=Bulletin of the Institute of Combinatorics and its Applications&rft.atitle=Bruck nets and 2-dimensional codes&rft.stitle=Bull Inst Combin Appl &rft.volume=52&rft.date=2008&rft.spage=33&rft.epage=44&rft.pages=33-44&&rft.jtitle=Bulletin of the Institute of Combinatorics and its Applications", + "textLink": "" + }, + "prePubl": null, + "public": true + }, + { + "mrnumber": 2389969, + "titles": { + "title": "Maximal AMDS codes", + "translatedTitle": null + }, + "entryType": "J", + "primaryClass": { + "code": "94B27", + "description": "Geometric methods (including applications of algebraic geometry) applied to coding theory" + }, + "authors": [ + { + "id": 758603, + "name": "Alderson, T. L." + }, + { + "id": 42380, + "name": "Bruen, A. A." + } + ], + "issue": { + "issue": { + "pubYear": 2008, + "pubYear2": null, + "volume": "19", + "volume2": null, + "volume3": null, + "number": "2", + "journal": { + "id": 4449, + "shortTitle": "Appl. Algebra Engrg. Comm. Comput." + }, + "volSlash": "N", + "isbn": null, + "elementOrd": null + }, + "translatedIssue": null + }, + "book": null, + "reviewer": { + "public": true, + "reviewers": [ + { + "authId": 329025, + "rvrCode": 58213, + "name": "Daskalov, Rumen N." + } + ] + }, + "paging": { + "paging": { + "text": "87--98" + }, + "translatedPaging": null + }, + "counts": { + "cited": 4 + }, + "itemType": "Summary", + "articleUrl": "https://doi.org/10.1007/s00200-008-0058-0", + "openURL": { + "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", + "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.1007%2Fs00200-008-0058-0&rft.aufirst=T.&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=09381279&rft.title=Applicable Algebra in Engineering, Communication and Computing&rft.atitle=Maximal AMDS codes&rft.stitle=Appl Algebra Engrg Comm Comput &rft.volume=19&rft.date=2008&rft.spage=87&rft.epage=98&rft.pages=87-98&rft.issue=2&rft.jtitle=Applicable Algebra in Engineering, Communication and Computing", + "textLink": "" + }, + "prePubl": null, + "public": true + }, + { + "mrnumber": 2382348, + "titles": { + "title": "Classes of optical orthogonal codes from arcs in root subspaces", + "translatedTitle": null + }, + "entryType": "J", + "primaryClass": { + "code": "94B27", + "description": "Geometric methods (including applications of algebraic geometry) applied to coding theory" + }, + "authors": [ + { + "id": 758603, + "name": "Alderson, T. L." + }, + { + "id": 692091, + "name": "Mellinger, Keith E." + } + ], + "issue": { + "issue": { + "pubYear": 2008, + "pubYear2": null, + "volume": "308", + "volume2": null, + "volume3": null, + "number": "7", + "journal": { + "id": 643, + "shortTitle": "Discrete Math." + }, + "volSlash": "N", + "isbn": null, + "elementOrd": null + }, + "translatedIssue": null + }, + "book": null, + "reviewer": { + "public": true, + "reviewers": [ + { + "authId": 97215, + "rvrCode": 6155, + "name": "Kallaher, M. J." + } + ] + }, + "paging": { + "paging": { + "text": "1093--1101" + }, + "translatedPaging": null + }, + "counts": { + "cited": 5 + }, + "itemType": "Reviewed", + "articleUrl": "https://doi.org/10.1016/j.disc.2007.03.063", + "openURL": { + "imageLink": "http://www.lib.unb.ca/img/asin/res20x150.gif", + "targetLink": "https://unb.on.worldcat.org/atoztitles/link?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&rfr_id=info:sid/ams.org:MathSciNet&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft_id=info:doi/10.1016%2Fj.disc.2007.03.063&rft.aufirst=T.&rft.auinit=TL&rft.auinit1=T&rft.auinitm=L&rft.aulast=Alderson&rft.genre=article&rft.issn=0012365X&rft.title=Discrete Mathematics&rft.atitle=Classes of optical orthogonal codes from arcs in root subspaces&rft.stitle=Discrete Math &rft.volume=308&rft.date=2008&rft.spage=1093&rft.epage=1101&rft.pages=1093-1101&rft.issue=7&rft.jtitle=Discrete Mathematics", + "textLink": "" + }, + "prePubl": null, + "public": true + } + ], + "total": 31 +} From a6299ebb2d4e0e81c50da2ca33ea61d9ef463962 Mon Sep 17 00:00:00 2001 From: subhramit Date: Thu, 21 Mar 2024 20:36:35 +0530 Subject: [PATCH 12/13] Changes as per third review round --- .../logic/importer/fetcher/MathSciNet.java | 38 ++++++++++--------- .../importer/fetcher/MathSciNetTest.java | 2 +- .../logic/importer/fetcher/jsonTest.json | 0 3 files changed, 22 insertions(+), 18 deletions(-) rename src/test/{java => resources}/org/jabref/logic/importer/fetcher/jsonTest.json (100%) diff --git a/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java b/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java index e0244151056..3edb6b92597 100644 --- a/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java +++ b/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java @@ -31,6 +31,7 @@ import org.jabref.model.entry.field.AMSField; import org.jabref.model.entry.field.StandardField; import org.jabref.model.entry.field.UnknownField; +import org.jabref.model.entry.identifier.DOI; import org.jabref.model.entry.types.StandardEntryType; import kong.unirest.JsonNode; @@ -50,13 +51,11 @@ public class MathSciNet implements SearchBasedParserFetcher, EntryBasedParserFet private static final Map> FIELD_MAPPINGS = Map.of( StandardField.TITLE, List.of("titles", "title"), - StandardField.AUTHOR, List.of("authors"), StandardField.YEAR, List.of("issue", "issue", "pubYear"), StandardField.JOURNAL, List.of("issue", "issue", "journal", "shortTitle"), StandardField.VOLUME, List.of("issue", "issue", "volume"), StandardField.NUMBER, List.of("issue", "issue", "number"), StandardField.PAGES, List.of("paging", "paging", "text"), - StandardField.KEYWORDS, List.of("primaryClass"), StandardField.ISSN, List.of("issue", "issue", "journal", "issn") ); @@ -165,19 +164,13 @@ private BibEntry jsonItemToBibEntry(JSONObject item) throws ParseException { Optional authors = toAuthors(item.optJSONArray("authors")); authors.ifPresent(value -> entry.setField(StandardField.AUTHOR, value)); - Optional keywords = Optional.ofNullable(getKeywords(item.optJSONObject("primaryClass"))); + Optional keywords = getKeywords(item.optJSONObject("primaryClass")); keywords.ifPresent(value -> entry.setField(StandardField.KEYWORDS, value)); // Set the rest of the fields based on the mappings for (Map.Entry> mapEntry : FIELD_MAPPINGS.entrySet()) { StandardField field = mapEntry.getKey(); List path = mapEntry.getValue(); - - // Skip author and keywords fields as they are already set - if (field == StandardField.AUTHOR || field == StandardField.KEYWORDS) { - continue; - } - Optional value = getOthers(item, path); value.ifPresent(v -> entry.setField(field, v)); } @@ -185,7 +178,13 @@ private BibEntry jsonItemToBibEntry(JSONObject item) throws ParseException { // Handle articleUrl and mrnumber fields separately, as they are non-nested properties in the JSON and can be retrieved as Strings directly String doi = item.optString("articleUrl", ""); if (!doi.isEmpty()) { - entry.setField(StandardField.DOI, doi); + try { + Optional parsedDoi = DOI.parse(doi); + parsedDoi.ifPresent(validDoi -> entry.setField(StandardField.DOI, validDoi.getNormalized())); + } catch (IllegalArgumentException e) { + // If DOI parsing fails, use the original DOI string + entry.setField(StandardField.DOI, doi); + } } String mrNumber = item.optString("mrnumber", ""); @@ -215,20 +214,20 @@ private Optional toAuthors(JSONArray authors) { return Optional.of(authorsString); } - private String getKeywords(JSONObject primaryClass) { + private Optional getKeywords(JSONObject primaryClass) { if (primaryClass == null) { - return ""; + return Optional.empty(); } - return primaryClass.optString("description", ""); + return Optional.ofNullable(primaryClass.optString("description", null)); } private Optional getOthers(JSONObject item, List keys) { Object value = item; for (String key : keys) { if (value instanceof JSONObject obj) { - value = ((JSONObject) value).opt(key); - } else if (value instanceof JSONArray) { - value = ((JSONArray) value).opt(Integer.parseInt(key)); + value = obj.opt(key); + } else if (value instanceof JSONArray arr) { + value = arr.opt(Integer.parseInt(key)); } else { break; } @@ -243,7 +242,12 @@ private Optional getOthers(JSONObject item, List keys) { return Optional.empty(); } - // Method to change character set, to fix output string encoding + /** + * Method to change character set, to fix output string encoding + * If we don't convert to the correct character set, the parser outputs anomalous characters. + * This is observed in case of non-UTF-8 characters, such as accented characters. + */ + private String fixStringEncoding(String value) { return new String(value.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); } diff --git a/src/test/java/org/jabref/logic/importer/fetcher/MathSciNetTest.java b/src/test/java/org/jabref/logic/importer/fetcher/MathSciNetTest.java index 07cf05de0dd..04084d34491 100644 --- a/src/test/java/org/jabref/logic/importer/fetcher/MathSciNetTest.java +++ b/src/test/java/org/jabref/logic/importer/fetcher/MathSciNetTest.java @@ -77,7 +77,7 @@ void searchByQueryFindsEntry() throws Exception { @Test void getParser() throws Exception { - String fileName = "/importer/fetcher/jsonTest.json"; + String fileName = "../../../../../../resources/org/jabref/logic/importer/fetcher/jsonTest.json"; try (InputStream is = MathSciNetTest.class.getResourceAsStream(fileName)) { List entries = fetcher.getParser().parseEntries(is); diff --git a/src/test/java/org/jabref/logic/importer/fetcher/jsonTest.json b/src/test/resources/org/jabref/logic/importer/fetcher/jsonTest.json similarity index 100% rename from src/test/java/org/jabref/logic/importer/fetcher/jsonTest.json rename to src/test/resources/org/jabref/logic/importer/fetcher/jsonTest.json From 73c165dfbbb062148e6f36e5cb8f46ad6d0e16e1 Mon Sep 17 00:00:00 2001 From: Siedlerchr Date: Thu, 21 Mar 2024 23:07:55 +0100 Subject: [PATCH 13/13] Readd bibtex parsing fix tests, rename resources --- .../jabref/logic/importer/fetcher/MathSciNet.java | 14 +++++++++----- .../logic/importer/fetcher/MathSciNetTest.java | 12 ++++++------ .../fetcher/{jsonTest.json => mathscinet.json} | 0 3 files changed, 15 insertions(+), 11 deletions(-) rename src/test/resources/org/jabref/logic/importer/fetcher/{jsonTest.json => mathscinet.json} (100%) diff --git a/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java b/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java index 3edb6b92597..6c69203a0a4 100644 --- a/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java +++ b/src/main/java/org/jabref/logic/importer/fetcher/MathSciNet.java @@ -26,6 +26,7 @@ import org.jabref.logic.importer.Parser; import org.jabref.logic.importer.SearchBasedParserFetcher; import org.jabref.logic.importer.fetcher.transformers.DefaultQueryTransformer; +import org.jabref.logic.importer.fileformat.BibtexParser; import org.jabref.logic.util.OS; import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.field.AMSField; @@ -33,6 +34,7 @@ import org.jabref.model.entry.field.UnknownField; import org.jabref.model.entry.identifier.DOI; import org.jabref.model.entry.types.StandardEntryType; +import org.jabref.model.util.DummyFileUpdateMonitor; import kong.unirest.JsonNode; import kong.unirest.json.JSONArray; @@ -117,6 +119,7 @@ public Parser getParser() { return inputStream -> { String response = new BufferedReader(new InputStreamReader(inputStream)).lines().collect(Collectors.joining(OS.NEWLINE)); List entries = new ArrayList<>(); + BibtexParser bibtexParser = new BibtexParser(preferences, new DummyFileUpdateMonitor()); try { // Depending on the type of query we might get either a json object or directly a json array @@ -126,8 +129,10 @@ public Parser getParser() { JSONArray entriesArray = node.getArray(); for (int i = 0; i < entriesArray.length(); i++) { JSONObject entryObject = entriesArray.getJSONObject(i); - BibEntry bibEntry = jsonItemToBibEntry(entryObject); - entries.add(bibEntry); + if (entryObject.has("bib")) { + String bibTexFormat = entriesArray.getJSONObject(i).getString("bib"); + entries.addAll(bibtexParser.parseEntries(bibTexFormat)); + } } } else { var element = node.getObject(); @@ -135,9 +140,8 @@ public Parser getParser() { if (element.has("all")) { JSONArray entriesArray = element.getJSONObject("all").getJSONArray("results"); for (int i = 0; i < entriesArray.length(); i++) { - JSONObject entryObject = entriesArray.getJSONObject(i); - BibEntry bibEntry = jsonItemToBibEntry(entryObject); - entries.add(bibEntry); + String bibTexFormat = entriesArray.getJSONObject(i).getString("bibTexFormat"); + entries.addAll(bibtexParser.parseEntries(bibTexFormat)); } } else if (element.has("results")) { JSONArray entriesArray = element.getJSONArray("results"); diff --git a/src/test/java/org/jabref/logic/importer/fetcher/MathSciNetTest.java b/src/test/java/org/jabref/logic/importer/fetcher/MathSciNetTest.java index 04084d34491..c218ac61a54 100644 --- a/src/test/java/org/jabref/logic/importer/fetcher/MathSciNetTest.java +++ b/src/test/java/org/jabref/logic/importer/fetcher/MathSciNetTest.java @@ -2,6 +2,7 @@ import java.io.InputStream; import java.util.List; +import java.util.Optional; import org.jabref.logic.importer.ImportFormatPreferences; import org.jabref.model.entry.BibEntry; @@ -42,7 +43,7 @@ void setUp() throws Exception { ratiuEntry.setField(StandardField.PAGES, "571--589"); ratiuEntry.setField(StandardField.KEYWORDS, "76A15 (35A01 35A02 35K61 82D30)"); ratiuEntry.setField(StandardField.MR_NUMBER, "3537908"); - ratiuEntry.setField(StandardField.ISSN, "1422-6928, 1422-6952"); + ratiuEntry.setField(StandardField.ISSN, "1422-6928,1422-6952"); ratiuEntry.setField(StandardField.DOI, "10.1007/s00021-016-0250-0"); } @@ -77,11 +78,11 @@ void searchByQueryFindsEntry() throws Exception { @Test void getParser() throws Exception { - String fileName = "../../../../../../resources/org/jabref/logic/importer/fetcher/jsonTest.json"; + String fileName = "mathscinet.json"; try (InputStream is = MathSciNetTest.class.getResourceAsStream(fileName)) { List entries = fetcher.getParser().parseEntries(is); - assertEquals(List.of( + assertEquals(Optional.of( new BibEntry(StandardEntryType.Article) .withField(StandardField.TITLE, "On the weights of general MDS codes") .withField(StandardField.AUTHOR, "Alderson, Tim L.") @@ -92,9 +93,8 @@ void getParser() throws Exception { .withField(StandardField.PAGES, "5414--5418") .withField(StandardField.MR_NUMBER, "4158623") .withField(StandardField.KEYWORDS, "Bounds on codes") - .withField(StandardField.DOI, "https://doi.org/10.1109/TIT.2020.2977319") - .withField(StandardField.ISSN, "0018-9448") - ), entries); + .withField(StandardField.DOI, "10.1109/TIT.2020.2977319") + ), entries.stream().findFirst()); } } } diff --git a/src/test/resources/org/jabref/logic/importer/fetcher/jsonTest.json b/src/test/resources/org/jabref/logic/importer/fetcher/mathscinet.json similarity index 100% rename from src/test/resources/org/jabref/logic/importer/fetcher/jsonTest.json rename to src/test/resources/org/jabref/logic/importer/fetcher/mathscinet.json