From 2fa906bdff6d07b1895e58ae43a4e4ffa4e69754 Mon Sep 17 00:00:00 2001 From: Shubham Atlani Date: Thu, 27 Dec 2018 18:33:17 +0530 Subject: [PATCH 1/3] Filter automatically created groups by entrytype (#4539) --- CHANGELOG.md | 2 +- src/main/java/org/jabref/model/entry/BibEntry.java | 11 ++++++++++- .../org/jabref/model/groups/WordKeywordGroup.java | 13 +++++++++++++ 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b1c3fd7d4be..bc7365b745e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -48,7 +48,7 @@ We refer to [GitHub issues](https://github.com/JabRef/jabref/issues) by using `# - We updated updated the Related Articles tab to accept JSON from the new version of the Mr. DLib service - We added an option in the preference dialog box that allows user to choose behavior after dragging and dropping files in Entry Editor. [#4356](https://github.com/JabRef/jabref/issues/4356) - We added the ability to have an export preference where previously "File"-->"Export"/"Export selected entries" would not save the user's preference[#4495](https://github.com/JabRef/jabref/issues/4495) - +- For automatically created groups, added ability to filter groups by entry type. [#4539](https://github.com/JabRef/jabref/issues/4539) diff --git a/src/main/java/org/jabref/model/entry/BibEntry.java b/src/main/java/org/jabref/model/entry/BibEntry.java index 370b3d655df..5db995c8e3c 100644 --- a/src/main/java/org/jabref/model/entry/BibEntry.java +++ b/src/main/java/org/jabref/model/entry/BibEntry.java @@ -803,7 +803,7 @@ private void invalidateFieldCache(String fieldName) { } public Optional getLatexFreeField(String name) { - if (!hasField(name)) { + if (!hasField(name) && !TYPE_HEADER.equals(name)) { return Optional.empty(); } else if (latexFreeFields.containsKey(name)) { return Optional.ofNullable(latexFreeFields.get(toLowerCase(name))); @@ -812,6 +812,15 @@ public Optional getLatexFreeField(String name) { Optional citeKey = getCiteKeyOptional(); latexFreeFields.put(name, citeKey.get()); return citeKey; + } else if (TYPE_HEADER.equals(name)) { + Optional entryType = EntryTypes.getType(getType(), BibDatabaseMode.BIBLATEX); + if (entryType.isPresent()) { + String entryName = entryType.get().getName(); + latexFreeFields.put(name, entryName); + return Optional.of(entryName); + } else { + return Optional.empty(); + } } else { String latexFreeField = LatexToUnicodeAdapter.format(getField(name).get()).intern(); latexFreeFields.put(name, latexFreeField); diff --git a/src/main/java/org/jabref/model/groups/WordKeywordGroup.java b/src/main/java/org/jabref/model/groups/WordKeywordGroup.java index 5353f8e65af..0fd1ae22ec2 100644 --- a/src/main/java/org/jabref/model/groups/WordKeywordGroup.java +++ b/src/main/java/org/jabref/model/groups/WordKeywordGroup.java @@ -1,15 +1,20 @@ package org.jabref.model.groups; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Objects; +import java.util.Optional; import java.util.Set; +import org.jabref.model.EntryTypes; import org.jabref.model.FieldChange; +import org.jabref.model.database.BibDatabaseMode; import org.jabref.model.entry.BibEntry; +import org.jabref.model.entry.EntryType; import org.jabref.model.entry.KeywordList; import org.jabref.model.strings.StringUtil; @@ -113,6 +118,14 @@ public boolean contains(BibEntry entry) { private Set getFieldContentAsWords(BibEntry entry) { if (onlySplitWordsAtSeparator) { + if (BibEntry.TYPE_HEADER.equals(searchField)) { + for (String searchWord : searchWords) { + Optional entryType = EntryTypes.getType(entry.getType(), BibDatabaseMode.BIBLATEX); + if (entryType.isPresent() && entryType.get().getName().equals(searchWord)) { + return new HashSet<>(Arrays.asList(searchWord)); + } + } + } return entry.getField(searchField) .map(content -> KeywordList.parse(content, keywordSeparator).toStringList()) .orElse(Collections.emptySet()); From 4a8b3c84475f59b4db56249999eca497b9648fa3 Mon Sep 17 00:00:00 2001 From: Shubham Atlani Date: Thu, 27 Dec 2018 21:56:56 +0530 Subject: [PATCH 2/3] Address review comments - replace for loop with stream (#4539) --- .../java/org/jabref/model/groups/WordKeywordGroup.java | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/jabref/model/groups/WordKeywordGroup.java b/src/main/java/org/jabref/model/groups/WordKeywordGroup.java index 0fd1ae22ec2..35a5912c332 100644 --- a/src/main/java/org/jabref/model/groups/WordKeywordGroup.java +++ b/src/main/java/org/jabref/model/groups/WordKeywordGroup.java @@ -1,7 +1,6 @@ package org.jabref.model.groups; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.HashSet; @@ -9,6 +8,7 @@ import java.util.Objects; import java.util.Optional; import java.util.Set; +import java.util.stream.Collectors; import org.jabref.model.EntryTypes; import org.jabref.model.FieldChange; @@ -119,11 +119,9 @@ public boolean contains(BibEntry entry) { private Set getFieldContentAsWords(BibEntry entry) { if (onlySplitWordsAtSeparator) { if (BibEntry.TYPE_HEADER.equals(searchField)) { - for (String searchWord : searchWords) { - Optional entryType = EntryTypes.getType(entry.getType(), BibDatabaseMode.BIBLATEX); - if (entryType.isPresent() && entryType.get().getName().equals(searchWord)) { - return new HashSet<>(Arrays.asList(searchWord)); - } + Optional entryType = EntryTypes.getType(entry.getType(), BibDatabaseMode.BIBLATEX); + if (entryType.isPresent()) { + return searchWords.stream().filter(sw -> entryType.get().getName().equals(sw)).collect(Collectors.toSet()); } } return entry.getField(searchField) From ae164466121cfd8d0f4d42da8a63f1669b138fb4 Mon Sep 17 00:00:00 2001 From: Shubham Atlani Date: Fri, 28 Dec 2018 23:53:18 +0530 Subject: [PATCH 3/3] return value in case of unknown entry type (#4539) --- src/main/java/org/jabref/model/entry/BibEntry.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/jabref/model/entry/BibEntry.java b/src/main/java/org/jabref/model/entry/BibEntry.java index 5db995c8e3c..e896e52ae52 100644 --- a/src/main/java/org/jabref/model/entry/BibEntry.java +++ b/src/main/java/org/jabref/model/entry/BibEntry.java @@ -819,7 +819,7 @@ public Optional getLatexFreeField(String name) { latexFreeFields.put(name, entryName); return Optional.of(entryName); } else { - return Optional.empty(); + return Optional.of(StringUtil.capitalizeFirst(getType())); } } else { String latexFreeField = LatexToUnicodeAdapter.format(getField(name).get()).intern();