From df90a252e40697e3b1e54d3b41328b6187e6bb9a Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Mon, 1 Nov 2021 16:34:05 +0100 Subject: [PATCH 01/31] Refactor ContainBasedSearchRuleTest --- .../search/rules/ContainBasedSearchRule.java | 2 - .../rules/ContainBasedSearchRuleTest.java | 42 ++++++++++--------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/main/java/org/jabref/model/search/rules/ContainBasedSearchRule.java b/src/main/java/org/jabref/model/search/rules/ContainBasedSearchRule.java index cf7c7568368..f54003e127d 100644 --- a/src/main/java/org/jabref/model/search/rules/ContainBasedSearchRule.java +++ b/src/main/java/org/jabref/model/search/rules/ContainBasedSearchRule.java @@ -52,7 +52,6 @@ public boolean validateSearchStrings(String query) { @Override public boolean applyRule(String query, BibEntry bibEntry) { - String searchString = query; if (!searchFlags.contains(SearchRules.SearchFlags.CASE_SENSITIVE)) { searchString = searchString.toLowerCase(Locale.ROOT); @@ -84,7 +83,6 @@ public boolean applyRule(String query, BibEntry bibEntry) { @Override public PdfSearchResults getFulltextResults(String query, BibEntry bibEntry) { - if (!searchFlags.contains(SearchRules.SearchFlags.FULLTEXT) || databaseContext == null) { return new PdfSearchResults(List.of()); } diff --git a/src/test/java/org/jabref/model/search/rules/ContainBasedSearchRuleTest.java b/src/test/java/org/jabref/model/search/rules/ContainBasedSearchRuleTest.java index 337263b0dbc..e0fd99ec926 100644 --- a/src/test/java/org/jabref/model/search/rules/ContainBasedSearchRuleTest.java +++ b/src/test/java/org/jabref/model/search/rules/ContainBasedSearchRuleTest.java @@ -16,41 +16,43 @@ */ public class ContainBasedSearchRuleTest { - @Test - public void testBasicSearchParsing() { - BibEntry be = makeBibtexEntry(); - ContainBasedSearchRule bsCaseSensitive = new ContainBasedSearchRule(EnumSet.of(SearchRules.SearchFlags.CASE_SENSITIVE, SearchRules.SearchFlags.REGULAR_EXPRESSION)); - ContainBasedSearchRule bsCaseInsensitive = new ContainBasedSearchRule(EnumSet.of(SearchRules.SearchFlags.REGULAR_EXPRESSION)); - RegexBasedSearchRule bsCaseSensitiveRegexp = new RegexBasedSearchRule(EnumSet.of(SearchRules.SearchFlags.CASE_SENSITIVE, SearchRules.SearchFlags.REGULAR_EXPRESSION)); - RegexBasedSearchRule bsCaseInsensitiveRegexp = new RegexBasedSearchRule(EnumSet.of(SearchRules.SearchFlags.REGULAR_EXPRESSION)); + private final BibEntry be = new BibEntry(StandardEntryType.InCollection) + .withCitationKey("shields01") + .withField(StandardField.TITLE, "Marine finfish larviculture in Europe") + .withField(StandardField.YEAR, "2001") + .withField(StandardField.AUTHOR, "Kevin Shields"); + private final ContainBasedSearchRule bsCaseSensitive = new ContainBasedSearchRule(EnumSet.of(SearchRules.SearchFlags.CASE_SENSITIVE, SearchRules.SearchFlags.REGULAR_EXPRESSION)); + private final ContainBasedSearchRule bsCaseInsensitive = new ContainBasedSearchRule(EnumSet.of(SearchRules.SearchFlags.REGULAR_EXPRESSION)); + private final RegexBasedSearchRule bsCaseSensitiveRegexp = new RegexBasedSearchRule(EnumSet.of(SearchRules.SearchFlags.CASE_SENSITIVE, SearchRules.SearchFlags.REGULAR_EXPRESSION)); + private final RegexBasedSearchRule bsCaseInsensitiveRegexp = new RegexBasedSearchRule(EnumSet.of(SearchRules.SearchFlags.REGULAR_EXPRESSION)); - String query = "marine 2001 shields"; + @Test + public void testContentOfSingleField() { + String query = "\"marine larviculture\""; assertFalse(bsCaseSensitive.applyRule(query, be)); - assertTrue(bsCaseInsensitive.applyRule(query, be)); + assertFalse(bsCaseInsensitive.applyRule(query, be)); assertFalse(bsCaseSensitiveRegexp.applyRule(query, be)); assertFalse(bsCaseInsensitiveRegexp.applyRule(query, be)); + } - query = "\"marine larviculture\""; + @Test + public void testContentDistributedOnMultipleFields() { + String query = "marine 2001 shields"; assertFalse(bsCaseSensitive.applyRule(query, be)); - assertFalse(bsCaseInsensitive.applyRule(query, be)); + assertTrue(bsCaseInsensitive.applyRule(query, be)); assertFalse(bsCaseSensitiveRegexp.applyRule(query, be)); assertFalse(bsCaseInsensitiveRegexp.applyRule(query, be)); + } - query = "marine [A-Za-z]* larviculture"; + @Test + public void testRegularExpressionMatch() { + String query = "marine [A-Za-z]* larviculture"; assertFalse(bsCaseSensitive.applyRule(query, be)); assertFalse(bsCaseInsensitive.applyRule(query, be)); assertFalse(bsCaseSensitiveRegexp.applyRule(query, be)); assertTrue(bsCaseInsensitiveRegexp.applyRule(query, be)); } - - public BibEntry makeBibtexEntry() { - return new BibEntry(StandardEntryType.InCollection) - .withCitationKey("shields01") - .withField(StandardField.TITLE, "Marine finfish larviculture in Europe") - .withField(StandardField.YEAR, "2001") - .withField(StandardField.AUTHOR, "Kevin Shields"); - } } From 418bb665489c896d1bc6ddf9063217a7c8592c5d Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Mon, 1 Nov 2021 20:21:52 +0100 Subject: [PATCH 02/31] Introduce FullTextSearchRule as abstraction of ContainBasedSearchRule and RegexBasedSearchRule --- .../search/rules/ContainBasedSearchRule.java | 53 +------------- .../search/rules/FullTextSearchRule.java | 70 +++++++++++++++++++ .../search/rules/RegexBasedSearchRule.java | 45 +----------- 3 files changed, 74 insertions(+), 94 deletions(-) create mode 100644 src/main/java/org/jabref/model/search/rules/FullTextSearchRule.java diff --git a/src/main/java/org/jabref/model/search/rules/ContainBasedSearchRule.java b/src/main/java/org/jabref/model/search/rules/ContainBasedSearchRule.java index f54003e127d..d52a383128a 100644 --- a/src/main/java/org/jabref/model/search/rules/ContainBasedSearchRule.java +++ b/src/main/java/org/jabref/model/search/rules/ContainBasedSearchRule.java @@ -1,48 +1,23 @@ package org.jabref.model.search.rules; -import java.io.IOException; import java.util.EnumSet; import java.util.Iterator; import java.util.List; import java.util.Locale; -import java.util.Vector; -import java.util.stream.Collectors; import org.jabref.architecture.AllowedToUseLogic; -import org.jabref.gui.Globals; -import org.jabref.gui.LibraryTab; -import org.jabref.logic.pdf.search.retrieval.PdfSearcher; -import org.jabref.model.database.BibDatabaseContext; import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.field.Field; -import org.jabref.model.pdf.search.PdfSearchResults; -import org.jabref.model.pdf.search.SearchResult; import org.jabref.model.search.rules.SearchRules.SearchFlags; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - /** * Search rule for contain-based search. */ @AllowedToUseLogic("Because access to the lucene index is needed") -public class ContainBasedSearchRule implements SearchRule { - - private static final Logger LOGGER = LoggerFactory.getLogger(LibraryTab.class); - - private final EnumSet searchFlags; - - private String lastQuery; - private List lastSearchResults; - - private final BibDatabaseContext databaseContext; +public class ContainBasedSearchRule extends FullTextSearchRule { public ContainBasedSearchRule(EnumSet searchFlags) { - this.searchFlags = searchFlags; - this.lastQuery = ""; - lastSearchResults = new Vector<>(); - - databaseContext = Globals.stateManager.getActiveDatabase().orElse(null); + super(searchFlags); } @Override @@ -81,28 +56,4 @@ public boolean applyRule(String query, BibEntry bibEntry) { return getFulltextResults(query, bibEntry).numSearchResults() > 0; // Didn't match all words. } - @Override - public PdfSearchResults getFulltextResults(String query, BibEntry bibEntry) { - if (!searchFlags.contains(SearchRules.SearchFlags.FULLTEXT) || databaseContext == null) { - return new PdfSearchResults(List.of()); - } - - if (!query.equals(this.lastQuery)) { - this.lastQuery = query; - lastSearchResults = List.of(); - try { - PdfSearcher searcher = PdfSearcher.of(databaseContext); - PdfSearchResults results = searcher.search(query, 5); - lastSearchResults = results.getSortedByScore(); - } catch (IOException e) { - LOGGER.error("Could not retrieve search results!", e); - } - } - - return new PdfSearchResults(lastSearchResults.stream().filter(searchResult -> searchResult.isResultFor(bibEntry)).collect(Collectors.toList())); - } - - public EnumSet getSearchFlags() { - return searchFlags; - } } diff --git a/src/main/java/org/jabref/model/search/rules/FullTextSearchRule.java b/src/main/java/org/jabref/model/search/rules/FullTextSearchRule.java new file mode 100644 index 00000000000..97084748a6b --- /dev/null +++ b/src/main/java/org/jabref/model/search/rules/FullTextSearchRule.java @@ -0,0 +1,70 @@ +package org.jabref.model.search.rules; + +import java.io.IOException; +import java.util.Collections; +import java.util.EnumSet; +import java.util.List; +import java.util.stream.Collectors; + +import org.jabref.gui.Globals; +import org.jabref.logic.pdf.search.retrieval.PdfSearcher; +import org.jabref.model.database.BibDatabaseContext; +import org.jabref.model.entry.BibEntry; +import org.jabref.model.pdf.search.PdfSearchResults; +import org.jabref.model.pdf.search.SearchResult; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * All classes providing full text search results inherit from this class. + *

+ * Some kind of caching of the full text search results is implemented. + */ +public abstract class FullTextSearchRule implements SearchRule { + + private static final Logger LOGGER = LoggerFactory.getLogger(FullTextSearchRule.class); + + protected final EnumSet searchFlags; + + protected String lastQuery; + protected List lastSearchResults; + + private final BibDatabaseContext databaseContext; + + public FullTextSearchRule(EnumSet searchFlags) { + this.searchFlags = searchFlags; + this.lastQuery = ""; + lastSearchResults = Collections.emptyList(); + + databaseContext = Globals.stateManager.getActiveDatabase().orElse(null); + } + + public EnumSet getSearchFlags() { + return searchFlags; + } + + @Override + public PdfSearchResults getFulltextResults(String query, BibEntry bibEntry) { + if (!searchFlags.contains(SearchRules.SearchFlags.FULLTEXT) || databaseContext == null) { + return new PdfSearchResults(); + } + + if (!query.equals(this.lastQuery)) { + this.lastQuery = query; + lastSearchResults = Collections.emptyList(); + try { + PdfSearcher searcher = PdfSearcher.of(databaseContext); + PdfSearchResults results = searcher.search(query, 5); + lastSearchResults = results.getSortedByScore(); + } catch (IOException e) { + LOGGER.error("Could not retrieve search results!", e); + } + } + + return new PdfSearchResults(lastSearchResults.stream() + .filter(searchResult -> searchResult.isResultFor(bibEntry)) + .collect(Collectors.toList())); + } + +} diff --git a/src/main/java/org/jabref/model/search/rules/RegexBasedSearchRule.java b/src/main/java/org/jabref/model/search/rules/RegexBasedSearchRule.java index 0cc4bcb1f0a..3e2a9d3f95e 100644 --- a/src/main/java/org/jabref/model/search/rules/RegexBasedSearchRule.java +++ b/src/main/java/org/jabref/model/search/rules/RegexBasedSearchRule.java @@ -1,23 +1,15 @@ package org.jabref.model.search.rules; -import java.io.IOException; import java.util.EnumSet; -import java.util.List; import java.util.Locale; import java.util.Optional; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; -import java.util.stream.Collectors; import org.jabref.architecture.AllowedToUseLogic; -import org.jabref.gui.Globals; -import org.jabref.logic.pdf.search.retrieval.PdfSearcher; -import org.jabref.model.database.BibDatabaseContext; import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.field.Field; -import org.jabref.model.pdf.search.PdfSearchResults; -import org.jabref.model.pdf.search.SearchResult; import org.jabref.model.search.rules.SearchRules.SearchFlags; import org.slf4j.Logger; @@ -27,25 +19,12 @@ * Search rule for regex-based search. */ @AllowedToUseLogic("Because access to the lucene index is needed") -public class RegexBasedSearchRule implements SearchRule { +public class RegexBasedSearchRule extends FullTextSearchRule { private static final Logger LOGGER = LoggerFactory.getLogger(GrammarBasedSearchRule.class); - private final EnumSet searchFlags; - - private String lastQuery; - private List lastSearchResults; - - private final BibDatabaseContext databaseContext; - public RegexBasedSearchRule(EnumSet searchFlags) { - this.searchFlags = searchFlags; - - databaseContext = Globals.stateManager.getActiveDatabase().orElse(null); - } - - public EnumSet getSearchFlags() { - return searchFlags; + super(searchFlags); } @Override @@ -86,24 +65,4 @@ public boolean applyRule(String query, BibEntry bibEntry) { return getFulltextResults(query, bibEntry).numSearchResults() > 0; } - @Override - public PdfSearchResults getFulltextResults(String query, BibEntry bibEntry) { - - if (!searchFlags.contains(SearchRules.SearchFlags.FULLTEXT) || databaseContext == null) { - return new PdfSearchResults(List.of()); - } - - if (!query.equals(this.lastQuery)) { - this.lastQuery = query; - lastSearchResults = List.of(); - try { - PdfSearcher searcher = PdfSearcher.of(databaseContext); - PdfSearchResults results = searcher.search(query, 5); - lastSearchResults = results.getSortedByScore(); - } catch (IOException e) { - LOGGER.error("Could not retrieve search results!", e); - } - } - return new PdfSearchResults(lastSearchResults.stream().filter(searchResult -> searchResult.isResultFor(bibEntry)).collect(Collectors.toList())); - } } From 6984c5fdd0e803564fd40d61ca5f59a0c465b298 Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Mon, 1 Nov 2021 20:27:10 +0100 Subject: [PATCH 03/31] Add class comment --- src/main/java/org/jabref/model/search/rules/SearchRules.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/org/jabref/model/search/rules/SearchRules.java b/src/main/java/org/jabref/model/search/rules/SearchRules.java index 614c353f834..89e64a01ad6 100644 --- a/src/main/java/org/jabref/model/search/rules/SearchRules.java +++ b/src/main/java/org/jabref/model/search/rules/SearchRules.java @@ -3,6 +3,9 @@ import java.util.EnumSet; import java.util.regex.Pattern; +/** + * This is a factory to instantiate the matching SearchRule implementation matching a given query + */ public class SearchRules { private static final Pattern SIMPLE_EXPRESSION = Pattern.compile("[^\\p{Punct}]*"); From a297ee65d169dde7efd2786dc2621aeacd141368 Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Mon, 1 Nov 2021 20:28:08 +0100 Subject: [PATCH 04/31] Add missing "s" to class name --- .../jabref/gui/search/rules/describer/SearchDescribers.java | 4 ++-- src/main/java/org/jabref/logic/search/SearchQuery.java | 4 ++-- ...ainBasedSearchRule.java => ContainsBasedSearchRule.java} | 6 +++--- .../java/org/jabref/model/search/rules/SearchRules.java | 4 ++-- ...SearchRuleTest.java => ContainsBasedSearchRuleTest.java} | 6 +++--- 5 files changed, 12 insertions(+), 12 deletions(-) rename src/main/java/org/jabref/model/search/rules/{ContainBasedSearchRule.java => ContainsBasedSearchRule.java} (90%) rename src/test/java/org/jabref/model/search/rules/{ContainBasedSearchRuleTest.java => ContainsBasedSearchRuleTest.java} (85%) diff --git a/src/main/java/org/jabref/gui/search/rules/describer/SearchDescribers.java b/src/main/java/org/jabref/gui/search/rules/describer/SearchDescribers.java index 4cc5e2ebd82..de696f03632 100644 --- a/src/main/java/org/jabref/gui/search/rules/describer/SearchDescribers.java +++ b/src/main/java/org/jabref/gui/search/rules/describer/SearchDescribers.java @@ -1,7 +1,7 @@ package org.jabref.gui.search.rules.describer; import org.jabref.logic.search.SearchQuery; -import org.jabref.model.search.rules.ContainBasedSearchRule; +import org.jabref.model.search.rules.ContainsBasedSearchRule; import org.jabref.model.search.rules.GrammarBasedSearchRule; import org.jabref.model.search.rules.RegexBasedSearchRule; @@ -19,7 +19,7 @@ private SearchDescribers() { public static SearchDescriber getSearchDescriberFor(SearchQuery searchQuery) { if (searchQuery.getRule() instanceof GrammarBasedSearchRule grammarBasedSearchRule) { return new GrammarBasedSearchRuleDescriber(grammarBasedSearchRule.getSearchFlags(), grammarBasedSearchRule.getTree()); - } else if (searchQuery.getRule() instanceof ContainBasedSearchRule containBasedSearchRule) { + } else if (searchQuery.getRule() instanceof ContainsBasedSearchRule containBasedSearchRule) { return new ContainsAndRegexBasedSearchRuleDescriber(containBasedSearchRule.getSearchFlags(), searchQuery.getQuery()); } else if (searchQuery.getRule() instanceof RegexBasedSearchRule regexBasedSearchRule) { return new ContainsAndRegexBasedSearchRuleDescriber(regexBasedSearchRule.getSearchFlags(), searchQuery.getQuery()); diff --git a/src/main/java/org/jabref/logic/search/SearchQuery.java b/src/main/java/org/jabref/logic/search/SearchQuery.java index 883830c3eab..4dc9fd40a58 100644 --- a/src/main/java/org/jabref/logic/search/SearchQuery.java +++ b/src/main/java/org/jabref/logic/search/SearchQuery.java @@ -12,7 +12,7 @@ import org.jabref.logic.l10n.Localization; import org.jabref.model.entry.BibEntry; import org.jabref.model.search.SearchMatcher; -import org.jabref.model.search.rules.ContainBasedSearchRule; +import org.jabref.model.search.rules.ContainsBasedSearchRule; import org.jabref.model.search.rules.GrammarBasedSearchRule; import org.jabref.model.search.rules.SearchRule; import org.jabref.model.search.rules.SearchRules; @@ -82,7 +82,7 @@ public boolean isValid() { } public boolean isContainsBasedSearch() { - return rule instanceof ContainBasedSearchRule; + return rule instanceof ContainsBasedSearchRule; } private String getCaseSensitiveDescription() { diff --git a/src/main/java/org/jabref/model/search/rules/ContainBasedSearchRule.java b/src/main/java/org/jabref/model/search/rules/ContainsBasedSearchRule.java similarity index 90% rename from src/main/java/org/jabref/model/search/rules/ContainBasedSearchRule.java rename to src/main/java/org/jabref/model/search/rules/ContainsBasedSearchRule.java index d52a383128a..989a4f34e0c 100644 --- a/src/main/java/org/jabref/model/search/rules/ContainBasedSearchRule.java +++ b/src/main/java/org/jabref/model/search/rules/ContainsBasedSearchRule.java @@ -11,12 +11,12 @@ import org.jabref.model.search.rules.SearchRules.SearchFlags; /** - * Search rule for contain-based search. + * Search rule for a search based on String.contains() */ @AllowedToUseLogic("Because access to the lucene index is needed") -public class ContainBasedSearchRule extends FullTextSearchRule { +public class ContainsBasedSearchRule extends FullTextSearchRule { - public ContainBasedSearchRule(EnumSet searchFlags) { + public ContainsBasedSearchRule(EnumSet searchFlags) { super(searchFlags); } diff --git a/src/main/java/org/jabref/model/search/rules/SearchRules.java b/src/main/java/org/jabref/model/search/rules/SearchRules.java index 89e64a01ad6..71c35a7e33e 100644 --- a/src/main/java/org/jabref/model/search/rules/SearchRules.java +++ b/src/main/java/org/jabref/model/search/rules/SearchRules.java @@ -18,7 +18,7 @@ private SearchRules() { */ public static SearchRule getSearchRuleByQuery(String query, EnumSet searchFlags) { if (isSimpleQuery(query)) { - return new ContainBasedSearchRule(searchFlags); + return new ContainsBasedSearchRule(searchFlags); } // this searches specified fields if specified, @@ -39,7 +39,7 @@ static SearchRule getSearchRule(EnumSet searchFlags) { if (searchFlags.contains(SearchFlags.REGULAR_EXPRESSION)) { return new RegexBasedSearchRule(searchFlags); } else { - return new ContainBasedSearchRule(searchFlags); + return new ContainsBasedSearchRule(searchFlags); } } diff --git a/src/test/java/org/jabref/model/search/rules/ContainBasedSearchRuleTest.java b/src/test/java/org/jabref/model/search/rules/ContainsBasedSearchRuleTest.java similarity index 85% rename from src/test/java/org/jabref/model/search/rules/ContainBasedSearchRuleTest.java rename to src/test/java/org/jabref/model/search/rules/ContainsBasedSearchRuleTest.java index e0fd99ec926..ed77afd40be 100644 --- a/src/test/java/org/jabref/model/search/rules/ContainBasedSearchRuleTest.java +++ b/src/test/java/org/jabref/model/search/rules/ContainsBasedSearchRuleTest.java @@ -14,15 +14,15 @@ /** * Test case for ContainBasedSearchRule. */ -public class ContainBasedSearchRuleTest { +public class ContainsBasedSearchRuleTest { private final BibEntry be = new BibEntry(StandardEntryType.InCollection) .withCitationKey("shields01") .withField(StandardField.TITLE, "Marine finfish larviculture in Europe") .withField(StandardField.YEAR, "2001") .withField(StandardField.AUTHOR, "Kevin Shields"); - private final ContainBasedSearchRule bsCaseSensitive = new ContainBasedSearchRule(EnumSet.of(SearchRules.SearchFlags.CASE_SENSITIVE, SearchRules.SearchFlags.REGULAR_EXPRESSION)); - private final ContainBasedSearchRule bsCaseInsensitive = new ContainBasedSearchRule(EnumSet.of(SearchRules.SearchFlags.REGULAR_EXPRESSION)); + private final ContainsBasedSearchRule bsCaseSensitive = new ContainsBasedSearchRule(EnumSet.of(SearchRules.SearchFlags.CASE_SENSITIVE, SearchRules.SearchFlags.REGULAR_EXPRESSION)); + private final ContainsBasedSearchRule bsCaseInsensitive = new ContainsBasedSearchRule(EnumSet.of(SearchRules.SearchFlags.REGULAR_EXPRESSION)); private final RegexBasedSearchRule bsCaseSensitiveRegexp = new RegexBasedSearchRule(EnumSet.of(SearchRules.SearchFlags.CASE_SENSITIVE, SearchRules.SearchFlags.REGULAR_EXPRESSION)); private final RegexBasedSearchRule bsCaseInsensitiveRegexp = new RegexBasedSearchRule(EnumSet.of(SearchRules.SearchFlags.REGULAR_EXPRESSION)); From ba4dea13fc4fff8fd5ab7d3553d643d8bd333b2f Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Mon, 1 Nov 2021 23:36:42 +0100 Subject: [PATCH 05/31] RegexBasedSearchRule: Make validateSearchStrings consistent to applyRule --- .../model/search/rules/RegexBasedSearchRule.java | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/jabref/model/search/rules/RegexBasedSearchRule.java b/src/main/java/org/jabref/model/search/rules/RegexBasedSearchRule.java index 3e2a9d3f95e..456cded97be 100644 --- a/src/main/java/org/jabref/model/search/rules/RegexBasedSearchRule.java +++ b/src/main/java/org/jabref/model/search/rules/RegexBasedSearchRule.java @@ -1,7 +1,6 @@ package org.jabref.model.search.rules; import java.util.EnumSet; -import java.util.Locale; import java.util.Optional; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -21,7 +20,7 @@ @AllowedToUseLogic("Because access to the lucene index is needed") public class RegexBasedSearchRule extends FullTextSearchRule { - private static final Logger LOGGER = LoggerFactory.getLogger(GrammarBasedSearchRule.class); + private static final Logger LOGGER = LoggerFactory.getLogger(RegexBasedSearchRule.class); public RegexBasedSearchRule(EnumSet searchFlags) { super(searchFlags); @@ -29,13 +28,8 @@ public RegexBasedSearchRule(EnumSet searchFlags) { @Override public boolean validateSearchStrings(String query) { - String searchString = query; - if (!searchFlags.contains(SearchRules.SearchFlags.CASE_SENSITIVE)) { - searchString = searchString.toLowerCase(Locale.ROOT); - } - try { - Pattern.compile(searchString, searchFlags.contains(SearchRules.SearchFlags.CASE_SENSITIVE) ? 0 : Pattern.CASE_INSENSITIVE); + Pattern.compile(query, searchFlags.contains(SearchRules.SearchFlags.CASE_SENSITIVE) ? 0 : Pattern.CASE_INSENSITIVE); } catch (PatternSyntaxException ex) { return false; } @@ -45,10 +39,10 @@ public boolean validateSearchStrings(String query) { @Override public boolean applyRule(String query, BibEntry bibEntry) { Pattern pattern; - try { pattern = Pattern.compile(query, searchFlags.contains(SearchRules.SearchFlags.CASE_SENSITIVE) ? 0 : Pattern.CASE_INSENSITIVE); } catch (PatternSyntaxException ex) { + LOGGER.debug("Could not compile regex {}", query, ex); return false; } From e769b50d9d1a3d0ec057080c1e721a07d5fb033d Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Tue, 2 Nov 2021 01:25:23 +0100 Subject: [PATCH 06/31] Add support for Lucene-based search --- CHANGELOG.md | 1 + .../jabref/gui/search/GlobalSearchBar.java | 2 +- .../LuceneBasedSearchRuleDescriber.java | 24 +++ .../rules/describer/SearchDescribers.java | 7 +- .../AbstractQueryTransformer.java | 2 +- .../model/search/rules/BibQueryVisitor.java | 151 ++++++++++++++++++ .../search/rules/LuceneBasedSearchRule.java | 77 +++++++++ .../model/search/rules/SearchRules.java | 10 +- src/main/resources/l10n/JabRef_en.properties | 2 +- .../jabref/logic/l10n/LocalizationTest.java | 2 +- .../rules/LuceneBasedSearchRuleTest.java | 102 ++++++++++++ .../model/search/rules/SearchRulesTest.java | 29 ++++ 12 files changed, 402 insertions(+), 7 deletions(-) create mode 100644 src/main/java/org/jabref/gui/search/rules/describer/LuceneBasedSearchRuleDescriber.java create mode 100644 src/main/java/org/jabref/model/search/rules/BibQueryVisitor.java create mode 100644 src/main/java/org/jabref/model/search/rules/LuceneBasedSearchRule.java create mode 100644 src/test/java/org/jabref/model/search/rules/LuceneBasedSearchRuleTest.java create mode 100644 src/test/java/org/jabref/model/search/rules/SearchRulesTest.java diff --git a/CHANGELOG.md b/CHANGELOG.md index ac0adcfdd41..3052b8e6164 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ Note that this project **does not** adhere to [Semantic Versioning](http://semve ### Added - We added import support for CFF files. [#7945](https://github.com/JabRef/jabref/issues/7945) +- We added support to use Lucence search syntax also for the searchin the library or in dynamic groups. - We added the option to copy the DOI of an entry directly from the context menu copy submenu. [#7826](https://github.com/JabRef/jabref/issues/7826) - We added a fulltext search feature. [#2838](https://github.com/JabRef/jabref/pull/2838) - We improved the deduction of bib-entries from imported fulltext pdfs. [#7947](https://github.com/JabRef/jabref/pull/7947) diff --git a/src/main/java/org/jabref/gui/search/GlobalSearchBar.java b/src/main/java/org/jabref/gui/search/GlobalSearchBar.java index ab2343e69ac..957277e8d61 100644 --- a/src/main/java/org/jabref/gui/search/GlobalSearchBar.java +++ b/src/main/java/org/jabref/gui/search/GlobalSearchBar.java @@ -363,7 +363,7 @@ private void updateResults(int matched, TextFlow description, boolean grammarBas private void setSearchFieldHintTooltip(TextFlow description) { if (preferencesService.getGeneralPreferences().shouldShowAdvancedHints()) { - String genericDescription = Localization.lang("Hint:\n\nTo search all fields for Smith, enter:\nsmith\n\nTo search the field author for Smith and the field title for electrical, enter:\nauthor=Smith and title=electrical"); + String genericDescription = Localization.lang("Hint:\n\nTo search all fields for Smith, enter:\nsmith\n\nTo search the field author for Smith and the field title for electrical, enter:\nauthor:Smith and title:electrical"); List genericDescriptionTexts = TooltipTextUtil.createTextsFromHtml(genericDescription); if (description == null) { diff --git a/src/main/java/org/jabref/gui/search/rules/describer/LuceneBasedSearchRuleDescriber.java b/src/main/java/org/jabref/gui/search/rules/describer/LuceneBasedSearchRuleDescriber.java new file mode 100644 index 00000000000..ecd132e9bac --- /dev/null +++ b/src/main/java/org/jabref/gui/search/rules/describer/LuceneBasedSearchRuleDescriber.java @@ -0,0 +1,24 @@ +package org.jabref.gui.search.rules.describer; + +import java.util.EnumSet; + +import javafx.scene.text.TextFlow; + +import org.jabref.model.search.rules.SearchRules.SearchFlags; + +public class LuceneBasedSearchRuleDescriber implements SearchDescriber { + + private final EnumSet searchFlags; + private final String query; + + public LuceneBasedSearchRuleDescriber(EnumSet searchFlags, String query) { + this.searchFlags = searchFlags; + this.query = query; + } + + @Override + public TextFlow getDescription() { + TextFlow searchDescription = new TextFlow(); + return searchDescription; + } +} diff --git a/src/main/java/org/jabref/gui/search/rules/describer/SearchDescribers.java b/src/main/java/org/jabref/gui/search/rules/describer/SearchDescribers.java index de696f03632..06155b580fa 100644 --- a/src/main/java/org/jabref/gui/search/rules/describer/SearchDescribers.java +++ b/src/main/java/org/jabref/gui/search/rules/describer/SearchDescribers.java @@ -3,6 +3,7 @@ import org.jabref.logic.search.SearchQuery; import org.jabref.model.search.rules.ContainsBasedSearchRule; import org.jabref.model.search.rules.GrammarBasedSearchRule; +import org.jabref.model.search.rules.LuceneBasedSearchRule; import org.jabref.model.search.rules.RegexBasedSearchRule; public class SearchDescribers { @@ -17,12 +18,14 @@ private SearchDescribers() { * @return the search describer to turn the search into something human understandable */ public static SearchDescriber getSearchDescriberFor(SearchQuery searchQuery) { - if (searchQuery.getRule() instanceof GrammarBasedSearchRule grammarBasedSearchRule) { - return new GrammarBasedSearchRuleDescriber(grammarBasedSearchRule.getSearchFlags(), grammarBasedSearchRule.getTree()); + if (searchQuery.getRule() instanceof LuceneBasedSearchRule lucenceBasedSearchRule) { + return new LuceneBasedSearchRuleDescriber(lucenceBasedSearchRule.getSearchFlags(), searchQuery.getQuery()); } else if (searchQuery.getRule() instanceof ContainsBasedSearchRule containBasedSearchRule) { return new ContainsAndRegexBasedSearchRuleDescriber(containBasedSearchRule.getSearchFlags(), searchQuery.getQuery()); } else if (searchQuery.getRule() instanceof RegexBasedSearchRule regexBasedSearchRule) { return new ContainsAndRegexBasedSearchRuleDescriber(regexBasedSearchRule.getSearchFlags(), searchQuery.getQuery()); + } else if (searchQuery.getRule() instanceof GrammarBasedSearchRule grammarBasedSearchRule) { + return new GrammarBasedSearchRuleDescriber(grammarBasedSearchRule.getSearchFlags(), grammarBasedSearchRule.getTree()); } else { throw new IllegalStateException("Cannot find a describer for searchRule " + searchQuery.getRule() + " and query " + searchQuery.getQuery()); } diff --git a/src/main/java/org/jabref/logic/importer/fetcher/transformers/AbstractQueryTransformer.java b/src/main/java/org/jabref/logic/importer/fetcher/transformers/AbstractQueryTransformer.java index 21d45a13952..563bbd8fc10 100644 --- a/src/main/java/org/jabref/logic/importer/fetcher/transformers/AbstractQueryTransformer.java +++ b/src/main/java/org/jabref/logic/importer/fetcher/transformers/AbstractQueryTransformer.java @@ -23,7 +23,7 @@ public abstract class AbstractQueryTransformer { public static final String NO_EXPLICIT_FIELD = "default"; private static final Logger LOGGER = LoggerFactory.getLogger(AbstractQueryTransformer.class); - // These can be used for filtering in post processing + // These can be used for filtering in post-processing protected int startYear = Integer.MAX_VALUE; protected int endYear = Integer.MIN_VALUE; diff --git a/src/main/java/org/jabref/model/search/rules/BibQueryVisitor.java b/src/main/java/org/jabref/model/search/rules/BibQueryVisitor.java new file mode 100644 index 00000000000..af8a30548ae --- /dev/null +++ b/src/main/java/org/jabref/model/search/rules/BibQueryVisitor.java @@ -0,0 +1,151 @@ +package org.jabref.model.search.rules; + +import java.util.EnumSet; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import java.util.Optional; +import java.util.regex.Pattern; +import java.util.regex.PatternSyntaxException; + +import org.jabref.model.entry.BibEntry; +import org.jabref.model.entry.field.Field; +import org.jabref.model.entry.field.FieldFactory; + +import org.apache.lucene.queryparser.flexible.core.nodes.BooleanQueryNode; +import org.apache.lucene.queryparser.flexible.core.nodes.FieldQueryNode; +import org.apache.lucene.queryparser.flexible.core.nodes.ModifierQueryNode; +import org.apache.lucene.queryparser.flexible.core.nodes.OrQueryNode; +import org.apache.lucene.queryparser.flexible.core.nodes.QueryNode; +import org.apache.lucene.queryparser.flexible.standard.nodes.RegexpQueryNode; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class BibQueryVisitor { + public static final String NO_EXPLICIT_FIELD = "default"; + private static final Logger LOGGER = LoggerFactory.getLogger(BibQueryVisitor.class); + + private final BibEntry bibEntry; + private EnumSet searchFlags; + + public BibQueryVisitor(BibEntry bibEntry, EnumSet searchFlags) { + this.bibEntry = bibEntry; + this.searchFlags = searchFlags; + } + + public boolean matchFound(QueryNode query) { + if (query instanceof FieldQueryNode) { + return matchFound((FieldQueryNode) query); + } else if (query instanceof BooleanQueryNode) { + return matchFound((BooleanQueryNode) query); + } else if (query instanceof ModifierQueryNode) { + return matchFound((ModifierQueryNode) query); + } else if (query instanceof RegexpQueryNode) { + return matchFound((RegexpQueryNode) query); + } else { + LOGGER.error("Unsupported case when transforming the query:\n {}", query); + return false; + } + } + + private boolean matchFound(String searchField, String searchString, boolean regExMode) { + Pattern pattern = null; + if (regExMode) { + try { + pattern = Pattern.compile(searchString, searchFlags.contains(SearchRules.SearchFlags.CASE_SENSITIVE) ? 0 : Pattern.CASE_INSENSITIVE); + } catch (PatternSyntaxException ex) { + LOGGER.error("Could not compile regex {}", searchString, ex); + return false; + } + } else { + if (!searchFlags.contains(SearchRules.SearchFlags.CASE_SENSITIVE)) { + searchString = searchString.toLowerCase(Locale.ROOT); + } + } + String finalSearchString = searchString; + + Pattern finalPattern = pattern; + + if (searchField.isEmpty()) { + return bibEntry.getFields().stream() + .map(field -> bibEntry.getLatexFreeField(field)) + .filter(content -> matchFound(finalSearchString, finalPattern, content)) + .findAny() + .isPresent(); + } else { + Field field = FieldFactory.parseField(searchField); + return matchFound(finalSearchString, finalPattern, bibEntry.getLatexFreeField(field)); + } + } + + private boolean matchFound(FieldQueryNode query) { + if (searchFlags.contains(SearchRules.SearchFlags.REGULAR_EXPRESSION)) { + LOGGER.info("RegEx search is not supported in lucene search"); + } + return matchFound(query.getFieldAsString(), query.getTextAsString(), false); + } + + private boolean matchFound(RegexpQueryNode query) { + return matchFound(query.getFieldAsString(), query.getText().toString(), true); + } + + /** + * @param finalPattern if not null, the RegEx pattern to match for. If null, a "normal" search is executed + */ + private boolean matchFound(String finalSearchString, Pattern finalPattern, Optional content) { + return content.map(value -> searchFlags.contains(SearchRules.SearchFlags.CASE_SENSITIVE) ? value : value.toLowerCase(Locale.ROOT)) + .filter(value -> { + if (finalPattern != null) { + return finalPattern.matcher(value).find(); + } else { + List unmatchedWords = new SentenceAnalyzer(finalSearchString).getWords(); + Iterator unmatchedWordsIterator = unmatchedWords.iterator(); + while (unmatchedWordsIterator.hasNext()) { + String word = unmatchedWordsIterator.next(); + if (value.contains(word)) { + unmatchedWordsIterator.remove(); + } + } + return unmatchedWords.isEmpty(); + } + }) + .isPresent(); + } + + private boolean matchFound(BooleanQueryNode query) { + if (query instanceof OrQueryNode) { + return matchFound((OrQueryNode) query); + } else { + // AND is the default + return matchFoundForAnd(query); + } + } + + private boolean matchFoundForAnd(BooleanQueryNode query) { + for (QueryNode child : query.getChildren()) { + if (!matchFound(child)) { + return false; + } + } + return true; + } + + private boolean matchFound(OrQueryNode query) { + for (QueryNode child : query.getChildren()) { + if (matchFound(child)) { + return true; + } + } + return false; + } + + private boolean matchFound(ModifierQueryNode query) { + ModifierQueryNode.Modifier modifier = query.getModifier(); + if (modifier == ModifierQueryNode.Modifier.MOD_NOT) { + return !matchFound(query.getChild()); + } else { + // optional not yet supported + return matchFound(query.getChild()); + } + } +} diff --git a/src/main/java/org/jabref/model/search/rules/LuceneBasedSearchRule.java b/src/main/java/org/jabref/model/search/rules/LuceneBasedSearchRule.java new file mode 100644 index 00000000000..90f838c2214 --- /dev/null +++ b/src/main/java/org/jabref/model/search/rules/LuceneBasedSearchRule.java @@ -0,0 +1,77 @@ +package org.jabref.model.search.rules; + +import java.util.EnumSet; +import java.util.Locale; +import java.util.concurrent.ExecutionException; + +import org.jabref.architecture.AllowedToUseLogic; +import org.jabref.model.entry.BibEntry; +import org.jabref.model.search.rules.SearchRules.SearchFlags; + +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; +import org.apache.lucene.queryparser.flexible.core.QueryNodeException; +import org.apache.lucene.queryparser.flexible.core.nodes.QueryNode; +import org.apache.lucene.queryparser.flexible.core.parser.SyntaxParser; +import org.apache.lucene.queryparser.flexible.standard.parser.StandardSyntaxParser; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Search rule for a search based on String.contains() + */ +@AllowedToUseLogic("Because access to the lucene index is needed") +public class LuceneBasedSearchRule extends FullTextSearchRule { + + private static final Logger LOGGER = LoggerFactory.getLogger(LuceneBasedSearchRule.class); + + // We use SyntaxParser to be consistent with org.jabref.logic.importer + // We do not use "PrecedenceQueryParser", because this parser keeps the term "AND" + private SyntaxParser parser = new StandardSyntaxParser(); + private LoadingCache cache = CacheBuilder.newBuilder() + .maximumSize(100) + .build( + new CacheLoader<>() { + @Override + public QueryNode load(String query) throws Exception { + return parser.parse(query, ""); + } + } + ); + + public LuceneBasedSearchRule(EnumSet searchFlags) { + super(searchFlags); + } + + @Override + public boolean validateSearchStrings(String query) { + // Using the Lucene parser and checking for an exception is the only way to check whether the query is valid + try { + parser.parse(query, ""); + } catch (QueryNodeException e) { + return false; + } + return true; + } + + @Override + public boolean applyRule(String queryString, BibEntry bibEntry) { + String searchString = queryString; + QueryNode query; + try { + query = cache.get(searchString); + } catch (ExecutionException e) { + LOGGER.error("Could not parse query {}", queryString, e); + return false; + } + + BibQueryVisitor bibQueryVisitor = new BibQueryVisitor(bibEntry, searchFlags); + if (bibQueryVisitor.matchFound(query)) { + return true; + } + + return getFulltextResults(queryString, bibEntry).numSearchResults() > 0; // Didn't match all words. + } + +} diff --git a/src/main/java/org/jabref/model/search/rules/SearchRules.java b/src/main/java/org/jabref/model/search/rules/SearchRules.java index 71c35a7e33e..c949f4af1ee 100644 --- a/src/main/java/org/jabref/model/search/rules/SearchRules.java +++ b/src/main/java/org/jabref/model/search/rules/SearchRules.java @@ -8,7 +8,11 @@ */ public class SearchRules { - private static final Pattern SIMPLE_EXPRESSION = Pattern.compile("[^\\p{Punct}]*"); + // In case Lucene keywords are contained, it is not a simple expression any more + private static final Pattern SIMPLE_EXPRESSION = Pattern.compile("^((?! AND | OR )[^\\p{Punct}])*$"); + + // used for checking the syntax of the query + private static LuceneBasedSearchRule luceneBasedSearchRule = new LuceneBasedSearchRule(EnumSet.noneOf(SearchFlags.class)); private SearchRules() { } @@ -21,6 +25,10 @@ public static SearchRule getSearchRuleByQuery(String query, EnumSet return new ContainsBasedSearchRule(searchFlags); } + if (luceneBasedSearchRule.validateSearchStrings(query)) { + return new LuceneBasedSearchRule(searchFlags); + } + // this searches specified fields if specified, // and all fields otherwise SearchRule searchExpression = new GrammarBasedSearchRule(searchFlags); diff --git a/src/main/resources/l10n/JabRef_en.properties b/src/main/resources/l10n/JabRef_en.properties index 03a69b52124..aa183a10337 100644 --- a/src/main/resources/l10n/JabRef_en.properties +++ b/src/main/resources/l10n/JabRef_en.properties @@ -2050,7 +2050,7 @@ Keyword\ delimiter=Keyword delimiter Hierarchical\ keyword\ delimiter=Hierarchical keyword delimiter Escape\ ampersands=Escape ampersands -Hint\:\n\nTo\ search\ all\ fields\ for\ Smith,\ enter\:\nsmith\n\nTo\ search\ the\ field\ author\ for\ Smith\ and\ the\ field\ title\ for\ electrical,\ enter\:\nauthor\=Smith\ and\ title\=electrical=Hint:\n\nTo search all fields for Smith, enter:\nsmith\n\nTo search the field author for Smith and the field title for electrical, enter:\nauthor=Smith and title=electrical +Hint\:\n\nTo\ search\ all\ fields\ for\ Smith,\ enter\:\nsmith\n\nTo\ search\ the\ field\ author\ for\ Smith\ and\ the\ field\ title\ for\ electrical,\ enter\:\nauthor\:Smith\ and\ title\:electrical=Hint:\n\nTo search all fields for Smith, enter:\nsmith\n\nTo search the field author for Smith and the field title for electrical, enter:\nauthor:Smith and title:electrical Copied\ '%0'\ to\ clipboard.=Copied '%0' to clipboard. This\ operation\ requires\ an\ open\ library.=This operation requires an open library. diff --git a/src/test/java/org/jabref/logic/l10n/LocalizationTest.java b/src/test/java/org/jabref/logic/l10n/LocalizationTest.java index 596139f8b5d..69d7dd00f4a 100644 --- a/src/test/java/org/jabref/logic/l10n/LocalizationTest.java +++ b/src/test/java/org/jabref/logic/l10n/LocalizationTest.java @@ -51,7 +51,7 @@ void testKnownGermanTranslation() { @Test void newLineIsAvailableAndKeptUnescaped() { Localization.setLanguage(Language.ENGLISH); - assertEquals("Hint: To search specific fields only, enter for example:\nauthor=smith and title=electrical", Localization.lang("Hint: To search specific fields only, enter for example:\nauthor=smith and title=electrical")); + assertEquals("Hint: To search specific fields only, enter for example:\nauthor:smith and title:electrical", Localization.lang("Hint: To search specific fields only, enter for example:\nauthor:ssmith and title:electrical")); } @Test diff --git a/src/test/java/org/jabref/model/search/rules/LuceneBasedSearchRuleTest.java b/src/test/java/org/jabref/model/search/rules/LuceneBasedSearchRuleTest.java new file mode 100644 index 00000000000..0caf0424aca --- /dev/null +++ b/src/test/java/org/jabref/model/search/rules/LuceneBasedSearchRuleTest.java @@ -0,0 +1,102 @@ +package org.jabref.model.search.rules; + +import java.util.EnumSet; + +import org.jabref.model.entry.BibEntry; +import org.jabref.model.entry.field.StandardField; +import org.jabref.model.entry.types.StandardEntryType; + +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; + +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class LuceneBasedSearchRuleTest { + + private final BibEntry bibEntry = new BibEntry(StandardEntryType.InCollection) + .withCitationKey("shields01") + .withField(StandardField.TITLE, "Marine finfish larviculture in Europe") + .withField(StandardField.YEAR, "2001") + .withField(StandardField.AUTHOR, "Kevin Shields"); + + private final LuceneBasedSearchRule luceneBasedSearchRuleCaseSensitive = new LuceneBasedSearchRule(EnumSet.of(SearchRules.SearchFlags.CASE_SENSITIVE)); + private final LuceneBasedSearchRule luceneBasedSearchRuleCaseInsensitive = new LuceneBasedSearchRule(EnumSet.noneOf(SearchRules.SearchFlags.class)); + + @ParameterizedTest + @ValueSource(strings = { + "year:2001", + "year=2001", + + // Current JabRef special feature: sub strings are also matched + "title:Marine", + "title=Marine", + + // TODO glob patterns: "title:Marine*" + + "year:2001 title:Marine", + "year=2001 title=Marine", + "year=2001 title:Marine", + + "year:2001 AND title:Marine", + + "year:2001 OR title:Marine", + + "Marine", + + // RegEx syntax of Lucene + "/M[a-z]+e/" + }) + public void findsCaseSensitive(String query) { + assertTrue(luceneBasedSearchRuleCaseSensitive.validateSearchStrings(query)); + assertTrue(luceneBasedSearchRuleCaseSensitive.applyRule(query, bibEntry)); + } + + @ParameterizedTest + @ValueSource(strings = { + "year:2002", + "year=2002", + + // Current JabRef special feature: sub strings are also matched + "title:Marie", + "title=Marie", + + // TODO glob patterns: "title:Marine*" + + "year:2002 title:Marine", + "year=2002 title=Marine", + "year=2002 title:Marine", + + "year:2002 AND title:Marine", + + "year:2002 OR title:Marie", + + "Marie", + + "/M[0-9]+e/" + }) + public void nofindsCaseSensitive(String query) { + assertTrue(luceneBasedSearchRuleCaseSensitive.validateSearchStrings(query)); + assertFalse(luceneBasedSearchRuleCaseSensitive.applyRule(query, bibEntry)); + } + + @ParameterizedTest + @ValueSource(strings = { + "year:2001", + + "title:Marine", + + "year:2001 title:Marine", + + "year:2001 AND title:Marine", + + "year:2001 OR title:Marine", + + "Marine" + }) + public void findsCaseInSensitive(String query) { + assertTrue(luceneBasedSearchRuleCaseInsensitive.validateSearchStrings(query)); + assertTrue(luceneBasedSearchRuleCaseInsensitive.applyRule(query, bibEntry)); + } + +} diff --git a/src/test/java/org/jabref/model/search/rules/SearchRulesTest.java b/src/test/java/org/jabref/model/search/rules/SearchRulesTest.java new file mode 100644 index 00000000000..5558794adc1 --- /dev/null +++ b/src/test/java/org/jabref/model/search/rules/SearchRulesTest.java @@ -0,0 +1,29 @@ +package org.jabref.model.search.rules; + +import java.util.EnumSet; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertInstanceOf; + +class SearchRulesTest { + + @Test + void simpleLuceneQueryReturnsContainsBasedSearchRule() { + SearchRule searchRule = SearchRules.getSearchRuleByQuery("test", EnumSet.noneOf(SearchRules.SearchFlags.class)); + assertInstanceOf(ContainsBasedSearchRule.class, searchRule); + } + + @Test + void andLuceneQueryReturnsLuceneBasedSearchRule() { + SearchRule searchRule = SearchRules.getSearchRuleByQuery("test AND lucene", EnumSet.noneOf(SearchRules.SearchFlags.class)); + assertInstanceOf(LuceneBasedSearchRule.class, searchRule); + } + + @Test + void simpleFieldedLuceneQueryReturnsLuceneBasedSearchRule() { + SearchRule searchRule = SearchRules.getSearchRuleByQuery("title:test", EnumSet.noneOf(SearchRules.SearchFlags.class)); + assertInstanceOf(LuceneBasedSearchRule.class, searchRule); + } + +} From 0224a9e759dd270da04b40d8b02a51beaf86753c Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Wed, 3 Nov 2021 06:17:36 +0100 Subject: [PATCH 07/31] Add support for grouping --- .../jabref/model/search/rules/BibQueryVisitor.java | 5 ++++- .../search/rules/LuceneBasedSearchRuleTest.java | 13 ++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/jabref/model/search/rules/BibQueryVisitor.java b/src/main/java/org/jabref/model/search/rules/BibQueryVisitor.java index af8a30548ae..d213920a7e0 100644 --- a/src/main/java/org/jabref/model/search/rules/BibQueryVisitor.java +++ b/src/main/java/org/jabref/model/search/rules/BibQueryVisitor.java @@ -14,6 +14,7 @@ import org.apache.lucene.queryparser.flexible.core.nodes.BooleanQueryNode; import org.apache.lucene.queryparser.flexible.core.nodes.FieldQueryNode; +import org.apache.lucene.queryparser.flexible.core.nodes.GroupQueryNode; import org.apache.lucene.queryparser.flexible.core.nodes.ModifierQueryNode; import org.apache.lucene.queryparser.flexible.core.nodes.OrQueryNode; import org.apache.lucene.queryparser.flexible.core.nodes.QueryNode; @@ -42,8 +43,10 @@ public boolean matchFound(QueryNode query) { return matchFound((ModifierQueryNode) query); } else if (query instanceof RegexpQueryNode) { return matchFound((RegexpQueryNode) query); + } else if (query instanceof GroupQueryNode) { + return matchFound(((GroupQueryNode) query).getChild()); } else { - LOGGER.error("Unsupported case when transforming the query:\n {}", query); + LOGGER.error("Unsupported case when evaluating the query:\n {}", query); return false; } } diff --git a/src/test/java/org/jabref/model/search/rules/LuceneBasedSearchRuleTest.java b/src/test/java/org/jabref/model/search/rules/LuceneBasedSearchRuleTest.java index 0caf0424aca..a4b804c3e4f 100644 --- a/src/test/java/org/jabref/model/search/rules/LuceneBasedSearchRuleTest.java +++ b/src/test/java/org/jabref/model/search/rules/LuceneBasedSearchRuleTest.java @@ -18,7 +18,8 @@ class LuceneBasedSearchRuleTest { .withCitationKey("shields01") .withField(StandardField.TITLE, "Marine finfish larviculture in Europe") .withField(StandardField.YEAR, "2001") - .withField(StandardField.AUTHOR, "Kevin Shields"); + .withField(StandardField.AUTHOR, "Kevin Shields") + .withField(StandardField.GROUPS, "included"); private final LuceneBasedSearchRule luceneBasedSearchRuleCaseSensitive = new LuceneBasedSearchRule(EnumSet.of(SearchRules.SearchFlags.CASE_SENSITIVE)); private final LuceneBasedSearchRule luceneBasedSearchRuleCaseInsensitive = new LuceneBasedSearchRule(EnumSet.noneOf(SearchRules.SearchFlags.class)); @@ -73,9 +74,15 @@ public void findsCaseSensitive(String query) { "Marie", - "/M[0-9]+e/" + "/M[0-9]+e/", + + // this tests for grouping (indicated the brackets) + "(groups=excluded)", + + // this tests for the NOT operator, grouping and Boolean AND + "NOT(groups=excluded) AND NOT(groups=included)" }) - public void nofindsCaseSensitive(String query) { + public void notFindsCaseSensitive(String query) { assertTrue(luceneBasedSearchRuleCaseSensitive.validateSearchStrings(query)); assertFalse(luceneBasedSearchRuleCaseSensitive.applyRule(query, bibEntry)); } From c57ea649df02819bb318aadfd270360ba65e92ae Mon Sep 17 00:00:00 2001 From: julianbopp Date: Sat, 13 Nov 2021 15:55:50 +0100 Subject: [PATCH 08/31] Add RecentSearch and DropDownMenu class --- .../org/jabref/gui/search/DropDownMenu.java | 186 ++++++++++++++++++ .../org/jabref/gui/search/RecentSearch.java | 31 +++ 2 files changed, 217 insertions(+) create mode 100644 src/main/java/org/jabref/gui/search/DropDownMenu.java create mode 100644 src/main/java/org/jabref/gui/search/RecentSearch.java diff --git a/src/main/java/org/jabref/gui/search/DropDownMenu.java b/src/main/java/org/jabref/gui/search/DropDownMenu.java new file mode 100644 index 00000000000..a200033dd0a --- /dev/null +++ b/src/main/java/org/jabref/gui/search/DropDownMenu.java @@ -0,0 +1,186 @@ +package org.jabref.gui.search; + +import javafx.scene.Node; +import javafx.scene.control.Button; +import javafx.scene.input.MouseEvent; +import javafx.scene.layout.HBox; +import javafx.scene.layout.VBox; +import javafx.scene.text.Text; + +import org.controlsfx.control.PopOver; +import org.controlsfx.control.textfield.CustomTextField; + +public class DropDownMenu { + // DropDown Searchbar + public PopOver searchbarDropDown; + public Button authorButton; + public Button journalButton; + public Button titleButton; + public Button yearButton; + public Button yearRangeButton; + public Button andButton; + public Button orButton; + public Button leftBracketButton; + public Button rightBracketButton; + public RecentSearch recentSearch; + // private final Button articleButton; + // private final Button bookButton; + // private final Button citationKeyButton; + + // test buttons + // private final Button testButton; + + public DropDownMenu(CustomTextField searchField, GlobalSearchBar globalSearchBar) { + // Testing dropdown for searchbar + + authorButton = new Button("Author"); + journalButton = new Button("Journal"); + titleButton = new Button("Title"); + yearButton = new Button("Year"); + yearRangeButton = new Button("Year-Range"); + andButton = new Button("AND"); + orButton = new Button("OR"); + leftBracketButton = new Button("("); + rightBracketButton = new Button(")"); + // articleButton = new Button("Article"); + // bookButton = new Button("Book"); + // citationKeyButton = new Button("CitationKey"); + Text titleLucene = new Text(" Lucene Search"); + Text titleRecent = new Text(" Recent Searches"); + recentSearch = new RecentSearch(globalSearchBar); + HBox recentSearchBox = recentSearch.getHBox(); + HBox buttonsLucene = new HBox(2, authorButton, journalButton, titleButton, + yearButton, yearRangeButton); + HBox andOrButtons = new HBox(2, andButton, orButton); + HBox bracketButtons = new HBox(2, leftBracketButton, rightBracketButton); + + VBox mainBox = new VBox(4, titleLucene, buttonsLucene, andOrButtons, bracketButtons, titleRecent, recentSearchBox); + mainBox.setMinHeight(500); + mainBox.setMinWidth(searchField.getWidth()); + Node buttonBox = mainBox; + + searchField.addEventFilter(MouseEvent.MOUSE_CLICKED, event -> { + if (searchbarDropDown == null) { + searchbarDropDown = new PopOver(buttonBox); + searchbarDropDown.setWidth(searchField.getWidth()); + searchbarDropDown.setArrowLocation(PopOver.ArrowLocation.TOP_CENTER); + searchbarDropDown.setContentNode(buttonBox); + searchbarDropDown.show(searchField); + } else if (searchbarDropDown.isShowing()) { + searchbarDropDown.hide(); + } else { + searchbarDropDown.setContentNode(buttonBox); + searchbarDropDown.show(searchField); + } + }); + + // authorButton action + authorButton.setOnAction(event -> { + if (searchField.getCaretPosition() != 0) { + if (!searchField.getText(searchField.getCaretPosition() - 1, searchField.getCaretPosition()).equals(" ")) { + searchField.insertText(searchField.getCaretPosition(), " "); + searchField.positionCaret(searchField.getText().length()); + } + } + searchField.insertText(searchField.getCaretPosition(), "author:"); + searchField.positionCaret(searchField.getText().length()); + }); + + // journalButton action + journalButton.setOnAction(event -> { + if (searchField.getCaretPosition() != 0) { + if (!searchField.getText(searchField.getCaretPosition() - 1, searchField.getCaretPosition()).equals(" ")) { + searchField.insertText(searchField.getCaretPosition(), " "); + searchField.positionCaret(searchField.getText().length()); + } + } + searchField.insertText(searchField.getCaretPosition(), "journal:"); + searchField.positionCaret(searchField.getText().length()); + }); + + // titleButton action + titleButton.setOnAction(event -> { + if (searchField.getCaretPosition() != 0) { + if (!searchField.getText(searchField.getCaretPosition() - 1, searchField.getCaretPosition()).equals(" ")) { + searchField.insertText(searchField.getCaretPosition(), " "); + searchField.positionCaret(searchField.getText().length()); + } + } + searchField.insertText(searchField.getCaretPosition(), "title:"); + searchField.positionCaret(searchField.getText().length()); + }); + + // yearButton action + yearButton.setOnAction(event -> { + if (searchField.getCaretPosition() != 0) { + if (!searchField.getText(searchField.getCaretPosition() - 1, searchField.getCaretPosition()).equals(" ")) { + searchField.insertText(searchField.getCaretPosition(), " "); + searchField.positionCaret(searchField.getText().length()); + } + } + searchField.insertText(searchField.getCaretPosition(), "year:"); + searchField.positionCaret(searchField.getText().length()); + }); + + // yearRangeButton action + yearRangeButton.setOnAction(event -> { + if (searchField.getCaretPosition() != 0) { + if (!searchField.getText(searchField.getCaretPosition() - 1, searchField.getCaretPosition()).equals(" ")) { + searchField.insertText(searchField.getCaretPosition(), " "); + searchField.positionCaret(searchField.getText().length()); + } + } + searchField.insertText(searchField.getCaretPosition(), "year:"); + searchField.positionCaret(searchField.getText().length()); + }); + + // andButton action + andButton.setOnAction(event -> { + if (searchField.getCaretPosition() != 0) { + if (!searchField.getText(searchField.getCaretPosition() - 1, searchField.getCaretPosition()).equals(" ")) { + searchField.insertText(searchField.getCaretPosition(), " "); + searchField.positionCaret(searchField.getText().length()); + } + } + searchField.insertText(searchField.getCaretPosition(), "AND "); + searchField.positionCaret(searchField.getText().length()); + }); + + // orButton action + orButton.setOnAction(event -> { + if (searchField.getCaretPosition() != 0) { + if (!searchField.getText(searchField.getCaretPosition() - 1, searchField.getCaretPosition()).equals(" ")) { + searchField.insertText(searchField.getCaretPosition(), " "); + searchField.positionCaret(searchField.getText().length()); + } + } + searchField.insertText(searchField.getCaretPosition(), "OR "); + searchField.positionCaret(searchField.getText().length()); + }); + + // leftBracketButton action + leftBracketButton.setOnAction(event -> { + if (searchField.getCaretPosition() != 0) { + if (!searchField.getText(searchField.getCaretPosition() - 1, searchField.getCaretPosition()).equals(" ")) { + searchField.insertText(searchField.getCaretPosition(), " "); + searchField.positionCaret(searchField.getText().length()); + } + } + searchField.insertText(searchField.getCaretPosition(), "( "); + searchField.positionCaret(searchField.getText().length()); + }); + + // orButton action + rightBracketButton.setOnAction(event -> { + if (searchField.getCaretPosition() != 0) { + if (!searchField.getText(searchField.getCaretPosition() - 1, searchField.getCaretPosition()).equals(" ")) { + searchField.insertText(searchField.getCaretPosition(), " "); + searchField.positionCaret(searchField.getText().length()); + } + } + searchField.insertText(searchField.getCaretPosition(), ") "); + searchField.positionCaret(searchField.getText().length()); + }); + } + +} diff --git a/src/main/java/org/jabref/gui/search/RecentSearch.java b/src/main/java/org/jabref/gui/search/RecentSearch.java new file mode 100644 index 00000000000..3abadbe29e4 --- /dev/null +++ b/src/main/java/org/jabref/gui/search/RecentSearch.java @@ -0,0 +1,31 @@ +package org.jabref.gui.search; + +import javafx.scene.control.ListView; +import javafx.scene.layout.HBox; +import javafx.scene.layout.VBox; + +public class RecentSearch { + private ListView RecentSearches = new ListView<>(); + + public RecentSearch(GlobalSearchBar searchBar) { + this.RecentSearches.setOnMouseClicked(event -> { + String query = this.RecentSearches.getSelectionModel().getSelectedItem(); + searchBar.setSearchTerm(query); + searchBar.performSearch(); + }); + } + + public void add(String Query) { + RecentSearches.getItems().removeIf(entry -> entry.equals(Query)); + + this.RecentSearches.getItems().add(Query); + } + + public HBox getHBox() { + return new HBox(RecentSearches); + } + + public VBox getVBox() { + return new VBox(RecentSearches); + } +} From 41b4f38b4a0dd42d281741fb9d030e4468c61839 Mon Sep 17 00:00:00 2001 From: julianbopp Date: Sat, 13 Nov 2021 16:08:19 +0100 Subject: [PATCH 09/31] Add DropDownMenu to GlobalSearchBar --- src/main/java/org/jabref/gui/search/GlobalSearchBar.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/org/jabref/gui/search/GlobalSearchBar.java b/src/main/java/org/jabref/gui/search/GlobalSearchBar.java index 30ef144e6a8..6af86a520af 100644 --- a/src/main/java/org/jabref/gui/search/GlobalSearchBar.java +++ b/src/main/java/org/jabref/gui/search/GlobalSearchBar.java @@ -106,6 +106,7 @@ public class GlobalSearchBar extends HBox { private final BooleanProperty globalSearchActive = new SimpleBooleanProperty(false); private GlobalSearchResultDialog globalSearchResultDialog; + private final DropDownMenu dropDownMenu; public GlobalSearchBar(JabRefFrame frame, StateManager stateManager, PreferencesService preferencesService, CountingUndoManager undoManager) { super(); this.stateManager = stateManager; @@ -123,6 +124,9 @@ public GlobalSearchBar(JabRefFrame frame, StateManager stateManager, Preferences searchFieldTooltip.setMaxHeight(10); updateHintVisibility(); + // Prototype DropDownMenu + dropDownMenu = new DropDownMenu(searchField, this); + KeyBindingRepository keyBindingRepository = Globals.getKeyPrefs(); searchField.addEventFilter(KeyEvent.KEY_PRESSED, event -> { Optional keyBinding = keyBindingRepository.mapToKeyBinding(event); @@ -272,6 +276,11 @@ public void performSearch() { LOGGER.debug("Flags: {}", searchPreferences.getSearchFlags()); LOGGER.debug("Run search " + searchField.getText()); + // Prototype DropDownMenu + if (!searchField.getText().isEmpty()) { + this.dropDownMenu.recentSearch.add(searchField.getText()); + } + // An empty search field should cause the search to be cleared. if (searchField.getText().isEmpty()) { currentResults.setText(""); From 89f99866457333ef272aaf8953d92e11c3a23cb3 Mon Sep 17 00:00:00 2001 From: Mark Joseph Starzynsi Date: Sat, 13 Nov 2021 19:37:43 +0100 Subject: [PATCH 10/31] Fix dropdown menu appearance and add test method to author button - Fixed odd behaviour where dropdown reapppears when repeatedly clicking search bar - Removed detachable attrubute (for now?) - Corrected Checkstyle - Added test method to author button (dont allow attributes without search terms) --- .../org/jabref/gui/search/DropDownMenu.java | 37 +++++++++++++------ 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/src/main/java/org/jabref/gui/search/DropDownMenu.java b/src/main/java/org/jabref/gui/search/DropDownMenu.java index a200033dd0a..4bcfe30562d 100644 --- a/src/main/java/org/jabref/gui/search/DropDownMenu.java +++ b/src/main/java/org/jabref/gui/search/DropDownMenu.java @@ -23,6 +23,7 @@ public class DropDownMenu { public Button leftBracketButton; public Button rightBracketButton; public RecentSearch recentSearch; + private boolean isPrevAttribute; // private final Button articleButton; // private final Button bookButton; // private final Button citationKeyButton; @@ -60,30 +61,34 @@ public DropDownMenu(CustomTextField searchField, GlobalSearchBar globalSearchBar Node buttonBox = mainBox; searchField.addEventFilter(MouseEvent.MOUSE_CLICKED, event -> { - if (searchbarDropDown == null) { + if (searchbarDropDown == null || !searchbarDropDown.isShowing()) { searchbarDropDown = new PopOver(buttonBox); searchbarDropDown.setWidth(searchField.getWidth()); searchbarDropDown.setArrowLocation(PopOver.ArrowLocation.TOP_CENTER); searchbarDropDown.setContentNode(buttonBox); + searchbarDropDown.setDetachable(false); // not detachable searchbarDropDown.show(searchField); - } else if (searchbarDropDown.isShowing()) { - searchbarDropDown.hide(); +// } else if (searchbarDropDown.isShowing()) { +// searchbarDropDown.hide(); // this makes the dropdown disappear if you re-click on searchbar } else { - searchbarDropDown.setContentNode(buttonBox); - searchbarDropDown.show(searchField); +// searchbarDropDown.setContentNode(buttonBox); + // this makes the drop down reappear every time you click on search bar, even if its shown already +// searchbarDropDown.show(searchField); } }); // authorButton action authorButton.setOnAction(event -> { - if (searchField.getCaretPosition() != 0) { - if (!searchField.getText(searchField.getCaretPosition() - 1, searchField.getCaretPosition()).equals(" ")) { - searchField.insertText(searchField.getCaretPosition(), " "); - searchField.positionCaret(searchField.getText().length()); + if (!isPrevAttribute(searchField)) { // checks if the search term prior is an attribute and wont queue another if so + if (searchField.getCaretPosition() != 0) { + if (!searchField.getText(searchField.getCaretPosition() - 1, searchField.getCaretPosition()).equals(" ")) { + searchField.insertText(searchField.getCaretPosition(), " "); + searchField.positionCaret(searchField.getText().length()); + } } + searchField.insertText(searchField.getCaretPosition(), "author:"); + searchField.positionCaret(searchField.getText().length()); } - searchField.insertText(searchField.getCaretPosition(), "author:"); - searchField.positionCaret(searchField.getText().length()); }); // journalButton action @@ -183,4 +188,14 @@ public DropDownMenu(CustomTextField searchField, GlobalSearchBar globalSearchBar }); } + private boolean isPrevAttribute(CustomTextField searchField) { + isPrevAttribute = false; + if (searchField.getCaretPosition() != 0) { + if (searchField.getText(searchField.getCaretPosition() - 1, searchField.getCaretPosition()).equals(":")) { + isPrevAttribute = true; + System.out.println("IS TRUEEEEEEEEEEEEEEEEEEEEEEEEEEEE"); + } + } + return isPrevAttribute; + } } From cd71654c3488b7b97f9f87ff7a3d843f32be4b51 Mon Sep 17 00:00:00 2001 From: Mark Joseph Starzynsi Date: Sat, 13 Nov 2021 20:02:53 +0100 Subject: [PATCH 11/31] Improve buttons and fix dropdown menu appearance - Fixed odd behaviour where dropdown reapppears when repeatedly clicking search bar - Removed detachable attrubute (for now?) - Corrected Checkstyle - Buttons dont allow adding attributes when prior ones are empty --- .../org/jabref/gui/search/DropDownMenu.java | 59 ++++++++----------- 1 file changed, 23 insertions(+), 36 deletions(-) diff --git a/src/main/java/org/jabref/gui/search/DropDownMenu.java b/src/main/java/org/jabref/gui/search/DropDownMenu.java index 4bcfe30562d..1340008bc24 100644 --- a/src/main/java/org/jabref/gui/search/DropDownMenu.java +++ b/src/main/java/org/jabref/gui/search/DropDownMenu.java @@ -80,12 +80,7 @@ public DropDownMenu(CustomTextField searchField, GlobalSearchBar globalSearchBar // authorButton action authorButton.setOnAction(event -> { if (!isPrevAttribute(searchField)) { // checks if the search term prior is an attribute and wont queue another if so - if (searchField.getCaretPosition() != 0) { - if (!searchField.getText(searchField.getCaretPosition() - 1, searchField.getCaretPosition()).equals(" ")) { - searchField.insertText(searchField.getCaretPosition(), " "); - searchField.positionCaret(searchField.getText().length()); - } - } + checkAndAddSpace(searchField); // checks if there is a space prior and if not adds it searchField.insertText(searchField.getCaretPosition(), "author:"); searchField.positionCaret(searchField.getText().length()); } @@ -93,50 +88,34 @@ public DropDownMenu(CustomTextField searchField, GlobalSearchBar globalSearchBar // journalButton action journalButton.setOnAction(event -> { - if (searchField.getCaretPosition() != 0) { - if (!searchField.getText(searchField.getCaretPosition() - 1, searchField.getCaretPosition()).equals(" ")) { - searchField.insertText(searchField.getCaretPosition(), " "); - searchField.positionCaret(searchField.getText().length()); - } + if (!isPrevAttribute(searchField)) { + checkAndAddSpace(searchField); + searchField.insertText(searchField.getCaretPosition(), "journal:"); + searchField.positionCaret(searchField.getText().length()); } - searchField.insertText(searchField.getCaretPosition(), "journal:"); - searchField.positionCaret(searchField.getText().length()); }); // titleButton action titleButton.setOnAction(event -> { - if (searchField.getCaretPosition() != 0) { - if (!searchField.getText(searchField.getCaretPosition() - 1, searchField.getCaretPosition()).equals(" ")) { - searchField.insertText(searchField.getCaretPosition(), " "); - searchField.positionCaret(searchField.getText().length()); - } + if (!isPrevAttribute(searchField)) { + checkAndAddSpace(searchField); + searchField.insertText(searchField.getCaretPosition(), "title:"); + searchField.positionCaret(searchField.getText().length()); } - searchField.insertText(searchField.getCaretPosition(), "title:"); - searchField.positionCaret(searchField.getText().length()); }); // yearButton action yearButton.setOnAction(event -> { - if (searchField.getCaretPosition() != 0) { - if (!searchField.getText(searchField.getCaretPosition() - 1, searchField.getCaretPosition()).equals(" ")) { - searchField.insertText(searchField.getCaretPosition(), " "); - searchField.positionCaret(searchField.getText().length()); - } + if (!isPrevAttribute(searchField)) { + checkAndAddSpace(searchField); + searchField.insertText(searchField.getCaretPosition(), "year:"); + searchField.positionCaret(searchField.getText().length()); } - searchField.insertText(searchField.getCaretPosition(), "year:"); - searchField.positionCaret(searchField.getText().length()); }); // yearRangeButton action yearRangeButton.setOnAction(event -> { - if (searchField.getCaretPosition() != 0) { - if (!searchField.getText(searchField.getCaretPosition() - 1, searchField.getCaretPosition()).equals(" ")) { - searchField.insertText(searchField.getCaretPosition(), " "); - searchField.positionCaret(searchField.getText().length()); - } - } - searchField.insertText(searchField.getCaretPosition(), "year:"); - searchField.positionCaret(searchField.getText().length()); + }); // andButton action @@ -188,12 +167,20 @@ public DropDownMenu(CustomTextField searchField, GlobalSearchBar globalSearchBar }); } + private void checkAndAddSpace(CustomTextField searchField) { + if (searchField.getCaretPosition() != 0) { + if (!searchField.getText(searchField.getCaretPosition() - 1, searchField.getCaretPosition()).equals(" ")) { + searchField.insertText(searchField.getCaretPosition(), " "); + searchField.positionCaret(searchField.getText().length()); + } + } + } + private boolean isPrevAttribute(CustomTextField searchField) { isPrevAttribute = false; if (searchField.getCaretPosition() != 0) { if (searchField.getText(searchField.getCaretPosition() - 1, searchField.getCaretPosition()).equals(":")) { isPrevAttribute = true; - System.out.println("IS TRUEEEEEEEEEEEEEEEEEEEEEEEEEEEE"); } } return isPrevAttribute; From c6f80668863c1e7d9cde45d94ce5cb5e52b3f780 Mon Sep 17 00:00:00 2001 From: dmadoery Date: Sun, 14 Nov 2021 19:40:59 +0100 Subject: [PATCH 12/31] add buttonEventHandler for DropDownMenu --- .../org/jabref/gui/search/DropDownMenu.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/jabref/gui/search/DropDownMenu.java b/src/main/java/org/jabref/gui/search/DropDownMenu.java index 1340008bc24..23a2c611162 100644 --- a/src/main/java/org/jabref/gui/search/DropDownMenu.java +++ b/src/main/java/org/jabref/gui/search/DropDownMenu.java @@ -78,7 +78,7 @@ public DropDownMenu(CustomTextField searchField, GlobalSearchBar globalSearchBar }); // authorButton action - authorButton.setOnAction(event -> { + authorButton.addEventFilter(MouseEvent.MOUSE_CLICKED, event -> { if (!isPrevAttribute(searchField)) { // checks if the search term prior is an attribute and wont queue another if so checkAndAddSpace(searchField); // checks if there is a space prior and if not adds it searchField.insertText(searchField.getCaretPosition(), "author:"); @@ -87,7 +87,7 @@ public DropDownMenu(CustomTextField searchField, GlobalSearchBar globalSearchBar }); // journalButton action - journalButton.setOnAction(event -> { + journalButton.addEventFilter(MouseEvent.MOUSE_CLICKED, event ->{ if (!isPrevAttribute(searchField)) { checkAndAddSpace(searchField); searchField.insertText(searchField.getCaretPosition(), "journal:"); @@ -96,7 +96,7 @@ public DropDownMenu(CustomTextField searchField, GlobalSearchBar globalSearchBar }); // titleButton action - titleButton.setOnAction(event -> { + titleButton.addEventFilter(MouseEvent.MOUSE_CLICKED, event ->{ if (!isPrevAttribute(searchField)) { checkAndAddSpace(searchField); searchField.insertText(searchField.getCaretPosition(), "title:"); @@ -105,7 +105,7 @@ public DropDownMenu(CustomTextField searchField, GlobalSearchBar globalSearchBar }); // yearButton action - yearButton.setOnAction(event -> { + yearButton.addEventFilter(MouseEvent.MOUSE_CLICKED, event ->{ if (!isPrevAttribute(searchField)) { checkAndAddSpace(searchField); searchField.insertText(searchField.getCaretPosition(), "year:"); @@ -114,12 +114,12 @@ public DropDownMenu(CustomTextField searchField, GlobalSearchBar globalSearchBar }); // yearRangeButton action - yearRangeButton.setOnAction(event -> { + yearRangeButton.addEventFilter(MouseEvent.MOUSE_CLICKED, event ->{ }); // andButton action - andButton.setOnAction(event -> { + andButton.addEventFilter(MouseEvent.MOUSE_CLICKED, event ->{ if (searchField.getCaretPosition() != 0) { if (!searchField.getText(searchField.getCaretPosition() - 1, searchField.getCaretPosition()).equals(" ")) { searchField.insertText(searchField.getCaretPosition(), " "); @@ -131,7 +131,7 @@ public DropDownMenu(CustomTextField searchField, GlobalSearchBar globalSearchBar }); // orButton action - orButton.setOnAction(event -> { + orButton.addEventFilter(MouseEvent.MOUSE_CLICKED, event ->{ if (searchField.getCaretPosition() != 0) { if (!searchField.getText(searchField.getCaretPosition() - 1, searchField.getCaretPosition()).equals(" ")) { searchField.insertText(searchField.getCaretPosition(), " "); @@ -143,7 +143,7 @@ public DropDownMenu(CustomTextField searchField, GlobalSearchBar globalSearchBar }); // leftBracketButton action - leftBracketButton.setOnAction(event -> { + leftBracketButton.addEventFilter(MouseEvent.MOUSE_CLICKED, event ->{ if (searchField.getCaretPosition() != 0) { if (!searchField.getText(searchField.getCaretPosition() - 1, searchField.getCaretPosition()).equals(" ")) { searchField.insertText(searchField.getCaretPosition(), " "); @@ -155,7 +155,7 @@ public DropDownMenu(CustomTextField searchField, GlobalSearchBar globalSearchBar }); // orButton action - rightBracketButton.setOnAction(event -> { + rightBracketButton.addEventFilter(MouseEvent.MOUSE_CLICKED, event ->{ if (searchField.getCaretPosition() != 0) { if (!searchField.getText(searchField.getCaretPosition() - 1, searchField.getCaretPosition()).equals(" ")) { searchField.insertText(searchField.getCaretPosition(), " "); From 2c9c5a6f8e76682e9285bc705405b027fa320062 Mon Sep 17 00:00:00 2001 From: Mark Joseph Starzynsi Date: Sun, 14 Nov 2021 23:14:00 +0100 Subject: [PATCH 13/31] Add technical documentation --- docs/sweng/diagrams.pu | 246 ++++++++++++++++++++++ docs/sweng/diagrams/autocomplete.png | Bin 0 -> 23024 bytes docs/sweng/diagrams/chip-view.png | Bin 0 -> 20388 bytes docs/sweng/diagrams/class-diagram.png | Bin 0 -> 93474 bytes docs/sweng/diagrams/logic-operators.png | Bin 0 -> 86200 bytes docs/sweng/diagrams/recent-search.png | Bin 0 -> 18154 bytes docs/sweng/diagrams/user-search-input.png | Bin 0 -> 39585 bytes docs/sweng/technical-documentation.md | 112 ++++++++++ 8 files changed, 358 insertions(+) create mode 100644 docs/sweng/diagrams.pu create mode 100644 docs/sweng/diagrams/autocomplete.png create mode 100644 docs/sweng/diagrams/chip-view.png create mode 100644 docs/sweng/diagrams/class-diagram.png create mode 100644 docs/sweng/diagrams/logic-operators.png create mode 100644 docs/sweng/diagrams/recent-search.png create mode 100644 docs/sweng/diagrams/user-search-input.png create mode 100644 docs/sweng/technical-documentation.md diff --git a/docs/sweng/diagrams.pu b/docs/sweng/diagrams.pu new file mode 100644 index 00000000000..4be9ac87477 --- /dev/null +++ b/docs/sweng/diagrams.pu @@ -0,0 +1,246 @@ +' +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +@startuml class-diagram +mainframe **Class Diagram: "Better Search" Implementation ** +' ======================================================= +' Grouping +' ======================================================= +together { + class DropDownMenu + class SearchFieldSynchronizer +} + +' ======================================================= +' Relations +' ======================================================= +CustomTextField - GlobalSearchbar +SearchItem *- itemType +RecentSearch <- SearchFieldSynchronizer +GlobalSearchbar -- Highlighting +GlobalSearchbar <-- Autocomplete +DropDownMenu <-- RecentSearch + +SearchFieldSynchronizer -- LuceneBasedSearchRule +SearchItem "0...*" -> "1 " SearchFieldSynchronizer +JFXChipView -- SearchFieldSynchronizer +DropDownMenu --> SearchFieldSynchronizer +CustomTextField <-- TextInputControl +Autocomplete <-- TextInputControl +TextInputControl <-- SearchFieldSynchronizer +RecentSearch "1 " <-- "0...*" SearchItem + +' ======================================================= +' Classes +' ======================================================= +class GlobalSearchbar { + searchField: CustomTextField + updateSearchResultsForQuery() + ' initSearchModifierButtons() + ' initSearchModifierButton() + ' focus() + performSearch() + ' validRegex() + ' informUserAboutInvalidSearchQuery() + updateResults() + ' setSearchFieldHintTooltip() + ' updateHintVisibility() + ' registerEventListener() + ' onSuggestionChosen() +} + +class RecentSearch { + pastSearchItemList: ArrayList + ListView authors + ListView titles + show() + hide() + add() + checkSearchItemExists() + +} + +class DropDownMenu { + authorBtn: Button + journalBtn: Button + titleBtn: Button + yearBtn: Button + andBtn: Button + orBtn: Button + andMinusBtn: Button + orMinusBtn: Button + isPrevAttribute: boolean + checkAndAddSpace() + isPrevAttribute() +} + +class LuceneBasedSearchRule { + validateSearchStrings() +} + +class Autocomplete { + AutoCompletionTextFieldBinding String + AutoCompletePopup autoCompletionPopup + bindAutoCompletion() +} + +class SearchFieldSynchronizer { + searchItemList: ArrayList + searchString: String + compare() + updateList() + addSearchItemToList() + removeSearchItemToList() + insertSearchItemToList() + SearchStringBuilder() + validateButton() +} + +class SearchItem { + itemType: enum + item: String + getType() + get() + setType() + set() +} + +enum itemType { + logicalOperator + attribute + bracket +} + +class CustomTextField { + get() + get(int start, int end) + length() + addListener() +} + +class TextInputControl { + getText() + insertText() + deleteText() + replaceText() + positionCaret() + getCarretPosition() + getLength() +} + +class JFXChipView { + chips + StringConverter() +} +@enduml + +' +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +' Julian: Recent Search +@startuml recent-search +mainframe **Sequence Diagram: Recent Search ** +actor User +User -> GlobalSearchBar: performSearch() +GlobalSearchBar -> RecentSearch: addQueryToRecentSearches +User -> RecentSearch: clickOnRecentSearchEntry +RecentSearch -> GlobalSearchBar: performSearch() +@enduml + +' +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +' Mark: User Search Input +@startuml user-search-input +mainframe **Sequence Diagram: User Search Input ** +actor User +User -> DropDownMenu: Button Input +box **SearchFieldSynchronizer** +DropDownMenu -> SearchFieldSynchronizer: ActionEvent +entity searchItemList +SearchFieldSynchronizer -> searchItemList: addSearchItemToList() +searchItemList --> SearchFieldSynchronizer: SearchStringBuilder() +end box +box **CustomTextField** #White +entity searchField +SearchFieldSynchronizer -> searchField: replaceText() +end box + +User -> searchField: Text Input +searchField --> SearchFieldSynchronizer: EventListener +SearchFieldSynchronizer -> searchItemList: updateList() +searchItemList --> SearchFieldSynchronizer: SearchStringBuilder() +SearchFieldSynchronizer -> searchField: replaceText() +@enduml + +' +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +' Albert: Autocomplete +@startuml +mainframe **Sequence Diagram: Autocomplete ** +actor User +User -> AutoCompletePopup: bindAutoCompletion() +AutoCompletePopup -> AutoCompletionTextInputBinding: convertSuggestionsToStrings +AutoCompletionTextInputBinding -> GlobalSearchBar: provideSuggestionsInGlobalSearch +GlobalSearchBar -> AutoCompletePopup: bindAutoCompletion() +@enduml + +' +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +' Dani: ChipView +@startuml +mainframe Sequence Diagram: ChipView +actor User +User->GlobalSearchBar: performSearch() +GlobalSearchBar->ChipView: addChipViewToSearchField() +User->ChipView: clickOnChipInSearchField +ChipView->GlobalSearchBar:deleteChosenSearchkey() +@enduml + +' +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +' Mark: Logical Operators +@startuml logic-operators +mainframe **Activity Diagram: Logic Operators ** +start +switch ( Button Press ) +case ( ) + :Attribute; + if (leftSideExists?) then + if (isLeftAttribute?) then + if (isLeftAttributeWithoutSearchString?) then + #pink:do nothing; + kill + endif + #palegreen:Add OR; + endif + endif + #palegreen:Add attribute; + stop +case ( ) + switch ( Logic Operator ) + case ( ) + :1; + if (leftSideExists?) then + if (isLeftAttribute?) then + if (isLeftAttributeWithSearchString?) then + #palegreen:Add logic operator; + kill + endif + endif + endif + #pink:do nothing; + stop + case ( ) + :-1; + if (!MinusOneExists?) then + if (leftSideExists?) then + if (isLeftAttribute?) then + if (isLeftAttributeWithSearchString?) then + #palegreen:Add right bracket; + #palegreen:Add logic operator; + #palegreen:Add left bracket; + :positionCarret to start; + #palegreen:Add left bracket; + :positionCarret to end; + #palegreen:Add right bracket; + :positionCarret to end - 1; + kill + endif + endif + endif + endif + #pink:do nothing; + stop +@enduml diff --git a/docs/sweng/diagrams/autocomplete.png b/docs/sweng/diagrams/autocomplete.png new file mode 100644 index 0000000000000000000000000000000000000000..e9c7a68c40fc19588e19478d363f7dd3b87a6fe8 GIT binary patch literal 23024 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
Y(Sr`la-8*LvdE}pRb1EA@xM&B9 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 literal 0 HcmV?d00001 diff --git a/docs/sweng/diagrams/chip-view.png b/docs/sweng/diagrams/chip-view.png new file mode 100644 index 0000000000000000000000000000000000000000..22757991b4ccfc1026c6b3033df4d9fab80d7b45 GIT binary patch literal 20388 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 literal 0 HcmV?d00001 diff --git a/docs/sweng/diagrams/class-diagram.png b/docs/sweng/diagrams/class-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..b9b0dd8db6876f9003c85f70479b3f613439aead GIT binary patch literal 93474 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ⅅMOt19^w2WJKHPONt>3(&)c?f(BCd+NgH8ZP`C)+LF~5nzDITkq z`O>R|lC=3HsVhjgVL0a)4o3syOCc*IqJno4fiBYIZ|~F3=62GYNQk>sQ(^v%bTGgGb*}QW~f%DoSpK{b8-(; zx)onPb2T2qL!QV!2xfFrL{NSZa@oTN|P8a&!bw9EE=L}7(IrHbyPPdU4W{2J=$ZWFa zc38YWxVte{#Zxc(RAu`{3I(N6;+k>ouz3L3hNb>|rn`5!S+=j@G&keFFS`3Bh8N@0 zCCxH+2^|M`f2F3IVmn(Pi)&0%RV{yYeKZQ8Bhk{wI*UGAZI$I@8wzk@nDEJ}Rz`#fI+v}59YX0d^Y#fy=L9pR7TJBf_FpxaKAS-Lpev+;vvpAVu z%gBgA<7J?1Rh8qN?o8D|0FN{lD?{f7+S}XX_}w`R@KuDo>2RwSeIQ0V>A&&W8XoeEoj_-lCSp&-72cA{J~CrgN|BgM#~WOTEKt;rLi zQt3CYs>LUT^$2ly3N{TG9`bd{Z_QX=Yo>m`)P{;A&54kRm$XlwJZX;lr4&zg`8Y!+%Mo6c8!V1fO8BU3|;a&_wwDG0B6NCikc%WO3&)wL8WQeu?tF_51qOi6v&0>jH2)6lw;Tyc12sz}S!f(^62wf$Fg9JW{<6xC;L_OHX00%>I|YzCP8s;-O-z+Cqy8 zf#eN)lpodTnOSe&T%l_pPjVOcjJRf}h>I)RP8N7tHmTmmv~03pekjmM=0`kiyT74- z=gxD_YsWRt8gyF`YW96OBdn}JU0rSPtl!XgC?fw7!RtzROO3WUa(7>f_wLxBO1|#O z>x-JgtPc(3M%MA2NcqnG*b&}C@su975_ z-{i7E5~!z7cuk$OK_;q(_g$UP+oM7R3?e2b&hj&rEFV}9de4d@PhaxSb`0@Cb zzlU8jI#LokjH5|vY8ctqEFN#Xud41F;TjR*zvX}vmozlAMEKM2?U^G)7V$nBtIFkf zr@xAh&S}jwTQNsvlbf4+a(rN&@l+v}d!jpo*u$vMe)EP!Lw`T!l*&E4uV{K{P@$-Ou5;ZW`ulQWAGOQ;JrsX*e@|Xikqc`3y%$zbftW!D`1i`*Da9P zE5@0&(LEnWj0lEk6jq4VX74hs&w8o98m?$|4kt}LUx1UuWcO{z(D201Ck%t)u7$mS zdsx_$_wTDRpR!0u@W6OJ=yo1Y5c*NuO+i^uk5c)xPVEzpN`KX{u4YvE_;&0~BtA*R zud7?gb`E81VGEM!Wuf0S`)xzBGXBEs+UmR@#8LMnm6+qj=4yFX;8;_F*EcF;l7G*^# zxO#wkz(Ta&SLwtvcokp(ZM*=Ltm(+6{xh6ef<|}>l@b{yG5Q2VhGPDFagels&FK6~ zlJ!p=579I8CNy*2=XoazC|bv6X`F-dIN!815wkT7a}Tmc1Tio4Dgpdl2PozXjoLrGAe5PEwo<+s5I2d#zDVMwkYB46Pj~~Ch)+hsjye- z)S9`&Ra9;}=Cvj$ma6vsf}La;H}qt2ylB{p(BT!$8%i|smoQfNsk$4}@kqv(O-UaX z`^(ELaJv#~>Gr&HRJ&X*8*XnAbFi(58*XQ_5D!--(sAGDJd(5;oJ;$?{x-Su5BDb0 zk4<4`x4fc;Ce^8iPrBVDf@LV~GU>rA7$RDQ^wez4631Pe6sgnJA0mvJF)a5|zY7o& z;@U0`ylsSNlH@-w8eA5JPT9yitsxIpK4Exk3WljtH@}|tBr-^ru7L0 zW_8syIPFZN?x#%K9IL~VEIr8CUqc&|PIa+#0v^#bg-_m*6P%jSumX?`$KWTY4a&!9 zeXx7WT3%AJ)iw1;UoJ90v46d)*AZX`5|@vUJ-~ICV^ou8YF0iw*y@mnw>75fd`2%j zYNI(dsrhS!(T6|5wD_7JxQ(NT+cQ4mh4L7=!l^$bn}lfj`||5c3Rk_whmMDPv-?v& z6kmYrv^$&6hsG33L2SI)ubHuvgBqt(!%581W1^;^%Nj{ziLDh-WKwval{Mmi^+6*J zn+KVfHx>@9{5>{PeEhF|-fI};35{wOzqhx$k-^|Z!1pXTP@hkLGu^CU*xR}^)i5l7 z8Ev42r#pN#;Lh4zOMZuG(;#>s>T6D3&b3`d?vLpT+hCa2x6_(ySyCrdv?uBgkePY& zH52ntk-n+MBMvmwALo>8%$?CpGjGRo#XAH~FHKEraF&4*%aVHx zSt3kK={rmPBFT?_5eZ3;Jwt~E>xHRDN-WHJ!cB$L#+tSod1_YnH~nFqsEhvkGmB=J z>(9~^G9v!+QwvJDcbUxX=NYN#lS8UQ%Fg-Y0f~WB;JH*Y1!5?`cn~guWDKmr^1Jyt zAq`Tacq5s20w!H`KWlZIB_$Kxt0w^e?G+bOrTokPxeNgCW7unA9F>ihh{QEFoozWh zN{Pi?i~OweAguIU!XpnfKm^}kCnAPu4Hg>4K*jdKQa(R+ntWP(O3LGZnTPdfoVKi$ zF30yqsY2{0v+jh{kYV8^pO`tUofnW~fcKEFVdfiBfp=8mPpsjTCoRM8wgU^pYc`e2 z7cnGV_dZAjlcMF;kB=WVJW>3-$1wY3AF+O9Qo1+_^-Z- z;n0j~QwHJ>fLpB>XEu#x`ys?XRV1hVB%nBR=eyutbdsX;7}V$E`oQ+aSx+SveZS70Vd-C<_=?8ET;qqEq_xcT26w&|n4L{RvJk=&+d~hf~sv=|AI4nnc z&i@Kx+W|ubAI4nr+g!9#>S+%(uXM@O6Qbciy8Fk7BplUBQ_^ zGf-@}yTN-D2DW8i8sMv&ybyay5mhfc=RFgD zNnZT`l?pxlndbQ&Q;wY;RyKr2VId48qo~J3r<14KwaEsrT#h)RnthLb7NYPV`AfZh z5aPv6<<&nKD5tLQ5gM{Ydj^K%5imx4gC!?jE|t0oVB}w5@o~lRzG!vP`XOjd0=`33 z&|5rFt#t8t#Q%p-8>ohx0m4R}(<1U~$6;7M0xG%yNkGwt?+2>u>b5Qx=QX_mQv~5*+u&t?+yu~6= zv(EF0Ia*&?uW?~DiH#vfUl!?TvU;A%qE@>%dMNtw=&SG9?WRr6VSJpP5P0jtvvinn zUUN5YnWF+T@pUb!oQ%t}<(!12%S8GWxuyP>;kUWDhkAQ^Avq~?*jMSY_~`(-|K+XM z*SLtB4lrx#>hgF$7R~NlvpvOq!4zALILltdS^lUOYvX<}GZ=JwNJ~fhzU7=x;33l_ z80B0P-#pY|YEI6Gtm_&Y8rr=(hPPauimFQX%~+o*#vx03Mqhh)e0gGGqK`y8xA?2W z>Ut|yZUhCA2NW2(U5l4LDOu_T##S!tN8X({nZT@}o%9DZaCDLF=5qtrF){h^P&G9* z*^H}A%EeOJ`ktx0y2egq!@0LbE-dVCy#6D#1lqv&IT^8}sLu0IB6d#;YeHPZ4ZBwo zNIn*NMZLK;lN(HVeQy}B0N00k&dtrOt*r$;eOtLqwfagkwLBBCN)%9BFQ7_4*v!!84|Onl!NouFH%K8lip z!e7kW$EQ3=CrYJa`R7!KQNd?El&D|ls;$$oZyQENy}LDb5wpt$;o8n4#Lc*KrH;t( z(EjI;Pva0bD+==yNznn!2aApy9$S+eKa)Z?dQX(A4WJ#4=#hW!Q4H* zTW(kT^)ozD4qCtC?Gbt4v-?|ZKY@v{tzJUhOKo1MPnEf*M%?vONHn_$ zG=?ipi|xuVI^S!hEo*f(5*dGD=h`l))w)k=C)LsB^e)E5JQ-__+6Ba!eYmZ)t4G&5f$@F_mJ)aq<;#7%I~^szy+GpMtl)1&?i zNYgh#AsVq8T!%S2hYmJ6HP-~JjonJ`+=?|1r3KM+Fkim}e}hW&_yC#f3=8oAH*?D^ zPjJWkr$7IuaDSVQDj6DfBwm<_LwBKg`L>$`Quvx7C)08kciT^zS#B=tj?$B7L!U1q zp#bRDxvmp40iW?@E|NUiycUUUFuRjYe2$2kCeKXHB5h2j9D^8}8V`dNQUodT{m|;hrH<(&2ANeuh=f3P8@Fu5;zg#y*M%p5{aT5#p z2h9(ze6K8kZ9|&&Na4qPi2gb2v>;XjiN(UDbK#2SK)#H$8nJ!sHGJMBr)1l7*-UF;#IMPNdg*z ziqdVjI=qX(dNv|(Y%n7bqG2;!g!(2v-BK(9jXuhN)Rg_Ca7~Q3FC#0ZYgY>M^tce7 z9A0Q7Mf`su;^LUKEWP(_Of0oLDM+WGFD&J{`Y+gtW%Vr=SM&tx zNYbzDQQrk59Xy0MGQvg>P8}kTM7pAWLK+=xmHr=GQe}lLJ`!$4;}D*36AJN^6r^V{bl1 zb~D_yH=H8UiAeeOm|eJ}EQ9Og00Ht@DT><@!Yd7eSi!dQlW3A{XKd zjS&}widrK6ZbL>}N2q1k4tBj+zi4zVmgEnI7op10@fVRa`7w@yMFbID<8wr0M} zEpxl4)HIMPMMlzCUo*?G)>*aQa zaNm1}7lNOIOd`?4{M9DbK_>!qR|lrRmRFtQBHuVhcRh6;Izkjt`PUNXq~TqlOGv_-TQwJ%jKjiC;_Dl9EaR~E45wGdPAr4bE=D5J3V*dY zR6aC^zrCUpLuR!%VTq+UF6kgm1&#%zk8BlHhZ9UStt zjrbTA-a_?lQB8B!4q?!-U!FfmX#Jr*_t;Mkta~)rL8LWYZk}5J3+%wccr6jKqD+xH z4SBuO=gpH@WEkDZ;=S24=EejiCP-t;^)4|Mbq9k$Xnk{c74rk! z_QIIA^01UK66rhx5GAXlPJJ}(gb>z_Y}0G1l~qw8weuscvzBz{n+&LHuj@c|b2XVx z(j(aQzR6^#1napIa-*q01SrRT8O%N^4Mslg{x0HF;k`4YxQ~gvcKAcClG1+jjH}$* zmVDQUi!Ty^y$pKu<4DvpZ?}1`D-1r$oa-xe6ye)!husDrg<)IgkSO`mKJ+gHR#FT} zO0iy?x_uCN_fs|AWXIJ&LgP)9jqb{Rn)dT1CY*MkmuDe*1x5af*k)W};z$`@-*Qve zV_e-DN-zOT2x%|Zeb%8O0;L3j>o?^j#Y#4ocd$q#S|pkP#mvFWOh`z#q-SQ-k5AYT z_Fhd2@pp3=7+@rnY4|>aBxbx!Ov=es~@f^IoiiFf}XTDz7!5Zt~T0waF zEF=sB3`{EM$P29Lk3&DL{1%*HZ&bndUJnwC=ibE0kBOD@!CPjRkm^M=bZxfcW1aDz z@^BM2&+wrZpLCtX5qGV>B9wZ%^rDiA9R89COb|G6uZVmAD{iV^_gF z!(WEsN4-R>GAG5WH-tC6e9jwF-rdPHO&H%p#+bVfhvL>r2|>a}U?!Xd-~uhnvE`Ck z?6FZTamfuaR+-k~^6KL=C;IX}#OXVbdn6t`zv!tnrpFJf(`M1TWhD5Fs@NWT%r;NtJud zIe@^#-T|!AUJakZ?0*tI^JzBikRe;Q6}0}v7s83rI#0orx}n+8^O@7@xn`@oZvpc+ z!SBEmU+_EA_BDl|DVK@9&>UCEv7&g1&jdXI6BaP|3`-|$DD0M}4+@2PNlQ5oufFw? zi)$7k$qj3B)=-?TTPs{7yT;sP%OhBz?W_PKkfhl_+YNbFHq#C59X%cGOI7&8FrVJ&j=#XE`R1CSBM6N^q~F0W`57+xz&V`4vxs z|B-o_pin+M<(VbYOMGz4Zi;53`^CGCkK^%75z1;AC#`XETwi)J_9kDc?}^G3n0Df< z{#Z38YVas#N}N6jAnosgm)tjLh{`v3c3M~Z-#5%syRJgMi9Gu{D+=25dPjc6Dn^r2 zU_DhM;rrQ>_(~LZ*QMl9x>m*yndhv0%C?%ZaJzsrN66KgsxOnBY$YWaKfFRz!G3q= zek5{w$-%KHB74fj<|h$+HyF)BY57%@z{3&q^O2XniU3l5vHW8g;bCEfI6|VHdcx8U zo(g4ix&!DU(VV2C71f!`5eUOI(Vf)sg$T@fgk(XZMDGlIbBYP7eaGzTa6O%YXs{ij zSx9#&mrc~>+D&~6kGUT*N3_g8CDsd1Tb$n zDYs=o>ukQvUk1`_OaJBen%O-NA}oX@DTwflNdXUCd9U^%*ZuI8c_wY0z11jw{|{am z@3r(ISNs9Sf-ma|3IO#iL^!Q>8w*X{CqTzAMD3rxxl5<%I7`3LayK&OVrhK_^*Psf z?mFUZY^K;KpCTjK=D!M@q>K$-{>PU{Ga@!Ie0zQ)6At&aLyPdq;n;f3T@EW_miQa_(TG0p4O>nxMD%Hd8)6KHkyM zVI=@f=VBrvY>u9uFE0_nSjA_Y!p;XJ~qywI+#WargqQGZBcAFFGLa1#`z?A}XX z2C8~{!?NaJ9=?@~l(6tK>R8|FoB2&Ln^O5V0>PmeKxr*fT#$clVv}B9J>~pvYz~Jy zAFKE0cMiA{_~kEE_&*JmT__3(dp`Q8&lkhtzOuYb%7kRxY zh0ojA*kanrT$3Stl^fpTE^JnP1uu@N9p9FE8{f|`vn|rlBrH0*!BEniA^vpA741ax ziR&fJj|Y##RW>o_E+Br0>5<9Py4WV$nNi!^ag1eGBWn@*jiifT&LLAd3LfT|D2K#5 z*He17JS8(hqZOmgzzql1;pzg%B)A&H4iWskbh4fO>~qkmlgx+q5O_v*QF$2$#9rXs zXD!;GZJhn_DB9ZA*vNi$j%4D}C#D1@BcN*RbREB;XsT&0B2YFFLQ{48f1KzYtA0Qw zC}dvF3U!ID{D`Z9XtJOe=>{2I{ile^5d{k z*p0aaw&({>s7%cXG)eYb1n^g3<+q27F2c9>Tr<#5Hap}xLMVR}VwZpVjP zJ!xrrHP)hJ_#d>Tg-KaFBC&4-+cHud(#B{TrC(2LA)BR0>b%esyt1;%WyC#J_m;Qj z&gDiCmxk8f2?R%sM6+2FTY=sF{HVdNQqs%!xh4LDN-n*{vtB9RlH4 zE%>aeOV=R|||>XfwTz_5l`Qut#WFZPIb=39)E&uXF${2z8eZ7OV-xG_&2Dy` z0S0=cukRflR4A*c?ml2jXN7EJaPU0_802;CiZ=#i|L~bpC+A+aUDUt2vy;zd&6HvR znT)|NEl|QZJzEsg#>tVHsXmx0o8;w*!L`Qkf>gE_r`_ws`tU>^Dmo2*-Ww|2<$6d{ zf(NO#a?2lnXhkOb1t!BE3~Q>Mo9F9NeXqiHZay-hqPm1Z&=XmA&uQ-zN-oCf-Vw|S zrc%cNLoM2USZ}+oD4Q=(QKEw-@l0Y~KN_?#rE^*vSn%Ul`x4nOYD6V7^;e)1;1Y9vNwDAC z-CruRk4;JPaI`ZbTdha&aK6vqkhQ;5pr7!?IG@s6U+(9GXG+PUI#m>1 zeqBC&Vuly=3JE**rz*xHPsSb7`!fMjG?8+6wGVDRL`QLm=B|Ogj@WxjPMd@&FVZWL z#*$G}Txg5ZA5IIh_dvs`KPM!>VYyBvfj>3%M3$6sH9jp3HDAHT=7Q-->e`n6btS4% z7!fP-T%r+;S8w_X_xA`j{yf8ngK_*stxryli%3Xl?30!m(b$Rb58tw4_exiE zKA1*dvYwZ(aA?EOl4^cB~yVmVmEHaVi0Cd)DU4OhCvf|5a4^5=-l zmqP1G-4^jT4ASePUKTiX6_JsVrswQYdEyhzvGpiRXY!r!R8;V4mM`zV9@2wMR>Mh8 zhF(;-y++?VZTE@boX^yK68NOER{D<{Fg|#wntKEX=lJoi+#qrFG99l}cQPi~XBZL9 zsh76LWjh^KZ zMk{}fx?j=LRo9tTrW^hAO7GnfydzK5;9lG|X#Ckt13@TsbSGqGM(-k!L4^2xgY9*G=i)afr2wq{kGsG_16TI~F-YmD_29d?DEDV_2Z znF!`KeGSV(q>fOj(?qw~_2qX(4RLN+vF(g_wYg@+D_)VOu6>#CR{74xMtlPa5fKrd z(oxd-Ho}EWM=jx{0kVT~H~Zt1W3SIftm>TDZQAXWL)pVLb$gteW?^bunTtP2m{`b6EJhFK}5*v6g9ofIvw%oRa$xg2*=posZ43AbSnwUczW#@>NR zrhM8&b|u4$vjfmwFd41r25q!9Q|7kcFf+fXOGlkj=#3{emEXv=JUNJlyYJ(0V{U4+ zY9PNw*sny4C(6d*0&(K#6^Ep}-6PZTK_9d^_O}b~*xnRq4ju76D}6h|TcWM0ISLed zU!Stg0q!kCCJ*U0kXUwg2db6HEJS*GLzH|jStRM$%bjtD5?w#2I+25LRz{(P(-@BM7m)Siw2SIl?`()oNmuFPO(^6wxeEtkq0tUBBsNc;YJMJYar(S{Y?r7=pDBi9lwMVWA{hQqaY4_l!bil~`!b9bFMj|#=m!lkAa4hWBQT5EKI zMT8m}0eP@kT^liwaHBm36-R35s)H%xrJ&I;F%m3%Ei z^byyPHp3?${(4Z+;0?{FHiO(?eZ9HFdY>g__dP%Nj5h~3BNQbWP3=sakU zHjTYS{k%-o%&E60E033shO*2aJY$}%8ZYbnQQY_~&bX{lN8Nlx`iSC(XH9)Aj55w%`N}f#N_?^&8xM^mKsd=q#9!-qaX z1p;XIq7XHsYQ>*e-+8yhIIZBI3WbvJ@f^2f@iL(%;9^~Zm;RlGC& zMR14Jf%z$^i2`YZc#tuymLxPd_-9u32_~jI7Gs8~sOVD+AI~k5kzzYgK5}|mj4tCF z1$5PDR-{O>C>k=J^&|nd+%K3nXAZ0u@aED2QaWPUxpT&@DmlS0C&!a3*DW0Tu}*Bv zFVJ#QcaU=yMy<|qwJ8&yA4c96R(w$|Am#qBT_e1O z;}wlPZNtHs*GABZndj!4>BnV@b1KOmCCUk((OD^0YQw0+j`!CZD%JBQy(tt&>F7Fw z$3RI79mWf!a;=}W?;5Q)JIz9}1lv1ePlj5<^*CNJ1xo516WoF6}=4B1rTiM}hJOF{I3CuC>dDJ~41dR4s@Xqd~(KOKDZf_8f)ej87t@)s=) zN3eM27kW%uRi zRxK{hX{q~@L_WpD2$RpwsWUJ#PPu8z#B;Ed8Sy}#73~A3NK+S9BtfsIVzaERk-&>! zUL!5t;m%M`!OqS*2VA<|sf87t4` zu`*4gQDvq25*^4ENMyUOpl=|Z|DOE`zw(GTZMbAs|)3$?6=}eylLhd_!9DZ#v9#Zs-UWR7M=77z zyggnFm4}J_qgo(4T|0f`ZxO54L$ zBH3stBmGN;$v9j({cco5#1-su$dnRFTuviP6DYA(ftrMcp-arw)lCA%0l7?tBG5FE zsmM`+2&z}th9moPHAf~~urLC%i1lT-PK>1bGmcx_tmr|rr?HWd_8Tdk!_ABOdIa>I zkn)oTPyiEkSt&`WA6U;9^sk#C!xNcWQr_8_yVL}r)E5GcFO}87qWvxxJr-4o4F9l< zsd)F*N=L~o^J3P?lrA5z%$``E3uUhj6{!H~5G%B}{DdKo?PLi8pjJmU= z(s&niHzJkAM(v%ZFxP$_zmfOa-#WMD?Q>K$lMVO$ZjyHf#tUZ5GN z_P4m$-qSr_3y0YqHf9I3Qt2CEn)Bten*@$w*z3-RGxzZMQo9wVQ=VssuI}IgECa3& zmhT5;Vz&L5mH^ASgPUsEs?9x2bE(%m2q=)$%)tyJ-#gwLV(8>tBbH6|N5z|sY$Vrq zF)b8SPk{szeqt7GF#dVQ0}M>2ENF@OluUn!lBv-ss7y3onTBY@kbkNB`ACQbjV=!~ z?wsr{8N887c0L;hgsw@@X}0{y%nZsXmUBTgr(ot^fcgj4d#IpLS(pBH z(RU0jS+_Mz98|nVhM~uS&O$`cj#X#ng>UBn=e34`JIOG}&E8}j>Kxl(%k)&3oi|sA z&9}0oi`vBr%ABovLqGf4G=IDCLi`J;-vSn5Z;!%eV|;ygX@YEfv3tuEo-0Ek+hAin z)?{KoxvA9R4kab$O9qDbUEllwksYMQh?RwMeYogB=zn%2P>c09T}ZcjATQ7iWRP$} zki0g=PSp37zpz^m8jn|eKAvVq^$YWV`4gRqdi*mW&izy57*pLup%^@Yq@`R@y*3g( zR$>-`2#UI2zh0i3<@a*1o2g+5#2PO$6bPrzPB$_#vRvxHPr=#xf#NU3GAzS!&LHuO z>Z0auK1?$N#8f^?Qf}tFKytQ2GDL()$*fS1c0gn_oesarx&WvJ9ZijR*ZA;*wMKZL z**NGO`FLZDtf$P1-sZp;)GCA8a;xP&IdqncvlAC#iHC{XO@U4zF6W*D+$}+3GZ4@n zOU$)AmG7zc3}Z@@sQeqMGOa8yXtIK6oK)3*F?cB+R zp8J>enG8>4KigLZ?642b1|hj`3}kekx7h?m4xbg^J_W#3uUu;L<3I*XRp{_jEUfkj zEvGrJ=~_Ayl&z(^df7 zaK-NhCjD1QWeCCw?%-8B^}|k3PU+Q`rX{?;xYYY?YbLu6-FSDg3dE~oBKHXIG&^x; zwtSaQlLAB=N)RM@bn!s|rQtG7lqdo3<-AuC=@4r8s|{^}5}(rhAiVIMhkB)b1J^l= zkecRGa0wQos2>1ffMH{ZY-esX40uPUk zjjjYRka*!vOuW~$?@2ZM=}zPA2M}=O7yFuH z%Ig(E1qwi2WxJ?#Ld*B1%7=Iu$kC=TrmnKr{h=d|f7kVAk-?VD|8OtXW;`KqXU~0; z3YG3<{^AGUXZ=u-;M<_J6bwpuN!*}HX7!unMzBHw!R&c!5UH0-ysoe2q3Y? zIczp0pr$7>vjCezN5^~m>>0y*sYWnTN%=#*83-(j46(?$9G||?*Vh785VT=`{rX8Q zETenRUxm|=`w19yrZo~RzS@>tNPVh z28-l{J2Z|l5$^ z(>^%tHA8mlf(>>6_kq7{nJT>Ut9^8gSyxYpUy!XoT{gJuAA2vHXtm4`L((!sqr(a z-!#H#;svb$l}(*#lQ2gm_dhy*Nsph4EK0w)SoX`q_6z1R+Z-=FmW$xfn3u`47e_}a z8AzgmXo>rPctF&N77MXn0C9*+nzO&#z6O+G>=kkoi_ZR3g671lhhztCqp_7^i%laDz2j4f`Ujcy}su!uw z4M1%Ceg=BjIKal1j&=un7FF;ig=G-_)_hY(FPhnL<|pQ^3h?=C8S*Qmg5 zLyeL0Iooq&fuIjbeJ73EX$#8>CfORlrJ{Q_sn#1KRlZ$*>psT0cKwqShWYAEc?c4D zz`MjLX?%(mH`^y#GXRDQQJTd8vt-5HzkM598(BCJHhD62x&Va0*LTmfw;=>EmOa`+ zLV9!z*jo4IU=IMvBSCw%XF5F_UK3&n+5+Wp2}yFF2}j+Rc{AD3pIOaBZ&;`P-Nz?` z!@*ic>F-Xmw)!u?JAcrju>DxKejxPlP`1zgB~cEIUtgAT?20=R29zue=zwc~WS5@6 zB8&1cI7RRQUvi(Cyq9jttYla`?Cc`5>(syMrI!$<@Jd^IJ&9DQ9Psoq*JVNhzCtSk zGR|@HXhnJn=M!nhm(Ol1>&eOnyCYS9_0#R-9kx5wk6}=GM(>Lq4-3;H1$wj#_1`T| zLpVuDdO+@EZCJ3yZNurB>O+wQz@ntQ^Pi}Z0Zsv0B7t)8{oR^oi7?0c?Xl+f#b-a& z-+h(dlxmf8)X$uo_H96Mfd%IuEj5&C68mJZ!{U z__~5bXo~$5hjiF*UCQucD-~ZFXA~AJ=wOQkqu^FmgYF4{(W|D*2*83n2+$``(66zy z{Q;nx0wAYy&Hquh>PaJwjEjxM&;&X`zR8kUtfTX75qV7m0N=PL$+gOP?);1k;3g^0 zBe9kRAXO|d-Y%a zfb)!1Q}gZwFFyPeu@nCbtlyaE9-%&+rI@AqL|Olr6E?>s5su1`2iJa{_u{*6K@=>u zrhvnsZp)ndI)-@WcQ3>3J>$vP095H;5I_wg@+2>Uu{r#GV`@+_+=eZ6c=_mY-BUpk_3Ur>t z{=yeV9~-R@(Ev`JlD06?9xBYCYk`Yt{`h=|C=p-?Ndo9D>XO(~3`R=lGwCxkl95qS zAj`B3I>0hO8wWDp?X=-dW2+;GAs~Kva6h9Dn2M%=xLt)K%?+Q~at@^wQb_@B)PDo|WKD*5`K;nCjtCz*jqxX6{-$zSIwH=|GP0 zA@0&1kbMT@;egw1b_at>F3+sbj*FnC(79!)*1oD)`f&i*z0uloO-SJRblVD0wjb$6 z<{VX}J&d%i%Dsc^x3@OpyAO4_Ku&M#pAu@q7Bt%kSly|f)RR+^h3(gKt{`G~H_=PD z^Mzh+*F!|Y*=4{<9~kY>-EREp&|(zy1WkaxGUd$})_LO3fXsn~Jr^W9H)ad1Yd)@{ zDpww_fL<@@9}T)7n%MwMP_8Z71`C~dLhc~T5=oyO%}AdBjiI-;QkPucpYbnuyg1A1 z>T;@WD6It-?FGpK*NPuBd%}sCp5rXWqmg(!5f$^2E~7WC1GH6_u=UXunHm`II+;lt z&G%o$V%opRBy!XT!}E~N!PvcE{oJD}LEq(aBV}hzUZfSjf`rESuy8AA< z=e5$!pxg$eJYcWsb(J(rr&FZ(X&K?+ZE`@HHzJ5gK`!ixiLmMtta18=fXOIJ8;87K zTUz{tLI;`kvbOWqcY0_)n8?uEQ+w19iXf?XA8ACWq3qgl?Mon>D|e|$VW%r(lb0%y zgBC&pY^FV4r+b7+zl~s1%FcsrWnx~0?de+7wGCj&(z$a51^Y`_xNxu6{m1D1S-6iT zs$kO{FvE|LRiz=x9H`dNXoo;-l8w_6MC~U4d2B8mO5ke+mJS#-*-|G5dYasJ;}NC> z84$V7J{K1kN2fj|V2e6y_wwheKarr8`RX#)%4n#tKuKrZA&{nH5O1GQ6(Jeu@K;pD zAeIt*`s@Pp_F@7p&K8Z^qwZxt~5ok^ExwC$@Pd$h|$XjtY7#xW|etE*NH! zkBPYef7AK{PnAu+2-@FPr$!(R#XxggWA+*2{q*wd{$?;e1%x%d__VaPUC)uIWrR0= zdR&+eLG&5UO{>p(dV1W_2|0Zp5&l+Vf8Fy9tCG8wUw(&3=FZZ}oB3t{RXhCxlD=uY zy7P8gvMp}8Fe(6FgCL4Z`~FX2pi)F^D4Mx4&2c5HvwTCrc6X7b8b1-R4F7kWvk1I_ z;14ymcNxb4ZH2)PaNAsY(9AG+jYo7IHakFnr+e=S;$eLV6as$ToT}p|TLA+}V z*p5>C4qx*6096ZUTj1cnIRnh5VQ#iCOx4P;_7(-XHwE`FB`jnqwAc@eyW%sMQfU5I zsPH?AP}WnmMg zGpTaC_8MfWZz!3y$cjnGJJ?2n?+9@8D%joKb9?dQNKkEx3emC31>5VQ9aF&q* zJ)%7^_%%wh%s04`2>Gup&O^CJ(Xou~e#ch0Edi{bSz_w6IvTN?;XPxl% zgKa?AUx30TI>_)bsW}Z?Pz%#fvoh(khM*IeTw6zdl37P={i{#m&=>mG`PE#2-wd+c8@zpQw zX;1-%8^b?YLYRf7wYQv@Yu&*R!-Cx@=EhN=Wm&+F@zH*$fqMHFCB_*2OLtfZ4 zEuhDK)k~@Add02AJ4{nb$=l*P2*_xZ?}->qa{(>>!8+aR!!#}f4xUR(U*8K7k|2Ky zRB51^oey7f_kS_X1W;wEP9LB<;?NeBT<0V>rybyJ?jhWPGoGiC8xAr&-+`4le!LAk z>%Uy3l^u7=Q1ap?hyAQ9jj<0k(~j6JaB%N2MfiE-KCYXYxr(OCtGI_7Y<({PiKBt+ z=uX9NmjpaiNoSx(ug-%XCx>HmHvr+XMjWjGx+oZs%lhsM1c}7z^e^lXF)CH2 z1Wm8P!p*)udbvqlCG}mis_clc`sxg+bbw%V!b*bSo^khRhwu|s-zOoy4PurM2cxHz zOvb}`0UmVRDx`K)H%qmVfBL8Y_*ry(u{VaR6Xzx=(xI_+f0iIF?qMjoeBVIsXr)7W zZ>r0{39`-)7xI$aFmpg?=XKH=(CUSut`A~^6Ct7hX|82$VCMQ+1I%2D8rP2R-9oC^ z48(JZ;iHcScG~7xEa;1RwX^a05FRjIG|pwXy>vSYWJT<4fm+W#k1K39JmRE zqkMwCmfsJT0=YIYH!`snkk#01XyE6-=@$TNH5RLLlr|g={ABP!tXoRYQ?b|rdX00{+5Hhg4G|WzvuXGD zdo6B4GM({Ueu%&tfSeSwp)Ri}D-2VN8(nL}vpG6HQBFuW`Rr?f;OvSq-U`NgwgKqx zl$RC^76W{oE+UbDZNkh7n28Ax{vA)pnY4=yLJqTSZR&(>1M7N~+l2whw{L~=LsUPz zAgVz?*9>SSkZL`$Pj!&$Tml8TRB@I6Cl;7g!*UJ;>0{+kS#-+xi=bevAT*XOQnO;Q z&6v?{d$X|cLzS7%k55}5ZVb#{AIt}Y^R4ccEBDZCr`)E60eo3%+Qs?D`o3R@QJYA4`IAeFFo?hbfHi?p0F-$5S%rA%1EC z?AwayLI%IGI+V4CW4wXW#tD3Z%Kp@*pz@#CU@dO2OfUpgJzk*L7O6IDnswokVh{S$CAYe-(zJBeE87YaDeH%FeuF`VXR;UL!XaZX@pkC zPH+kmY`f8Pei)MFz&L8i`+{*j`1KSY%Lx1@!7d?gT3VWMET$& zZ$hA9l=9ym$Fe&E{_9DCzPm*nKxix2rwQS~VO|v>biu)Dhe6~Mz-7(6xTa8= zsu;_2J|90iwvgJ?axPTA+V6lv&6^9Fwb?D-E9Xy_gPXRy+jj9VCR9Ebrbr(YK&Yh< zrlLjxO1tGuf!S9ecGR zEN`?vKilX{r6>a2k3VX@d6gg~M1)2D_pt)3+mvDoO`WtkR8!uV!0*FjrfHaU^u4x@ ze8bP}sCcWms7n$E>deOhjZ$q0Wr3ncNGwjiRptYz=JFoZd9aYKLZOP^hjd zqoHoCX+0x>hL`-HdmiD|<7~(FKl}-d2>Q`~J@k(+IUX8>Ki^Jm^JEiLaRH_ta-=w& znlZ#Sn!e#o#YRmRb?fQ6oQS8U&J;N~TQXT0ln|LhehR!)T=&ce+S)OxcYE(9J%9!0 zZqb#0BlZ8-Yk~P+&Z4jH<1#e4F_(i(+WG{S?mK$B)xjI6n2Z@4An3?Z-vQ&BXcaxO zEVPq)L5VF0>da7_c@(Z*XzQs^71$Bmo~y~#HjoNq&WRL!Zrmlir=ooqz{xDvaI&z9 zHnP9?Y>;7pM!r)ym1*F?slw5T^H13v=O`0TcIf>15c|rKFa`&v8X{qV-OZ^KTf+ntT>Fa-ka51ps%y6Fj+_4k8R(Q-$0(vlRscttl+vSPJw1bMq)X{$XuD-o+=*jlXm@a|@DLFQ0#wvfuOO;%V`;6-tMdR&NH znJh%`%QP8jm2P{RN)a}g&ZG)?5z$fqQ2VVAZ7f&y&(2(WoRNYB3%PlNxwR)x2$yae z85@FB>VA!@=`6-06k4WNjv;-VltwQEN+hyGVY^MLn@egYfu~@LaZ6s!zS9NP@e218 zS0K1ML%#R$P@ukEe`!hDYK2WUNfK`YlU@)56&vv$X2*Sxr}(*}-*{p%G#vpPz{O(w zfojE|>-ojv;t|vo&)X|%VPird--6BY?3k6=6!*J1s0Akxf5to4p9zK?>K4hS+^;s9 zd0w7y&s*5vEA<;-LrIanh>Kgdq+a4CF4bC|nD8H^ilt_-ycHXj844w_c=eWl;^e@; zv7SmBFF=f{vO=Y$T0STelMf~5NoLSEmD@9~q1MXCZt}|3#}m(rK!y2O`Bqm#QJ?e0 zd2V`4Xi=n0h&kGZ+cz(s)lrMgx!yhh7;N{nmA3C#_d;{^x_ku z&Bi&YXp;oYlU+{VmUu@xliJVFLU24BK0wr9-C%GpUwIM#Y)t*> zg*F8o_?DL8HlJ^^YPo7hJX8c22$3^MjjiDaOY3URCEjAj^A$v%>tXDouiWK`&`Tf% z7F1w>WlVZ_ti>kk zEftJMlQWHpMgO&^L~CP@-QBc`ipo!S?$C*KS66F(*vzBXdmQgvmameeOwY_FsydHi zv#vIt|8A+#h=->NAOB~wOhESTzDe$2>1gP~r<2Ua!)b1Ae8AZq&KaA~EDQj$40z$f z;^V*DA}&43uL;$(OIEeDU0ORK@TAz$w2x{Qm8syrOZCF zJux}g&TFJU@{uX;LQfc44;6e7RaEIv{nk#b6sq4F1m?{YkXInNkyHQH5B}eqm5M3* z>XVD3Rh=N8+GNy9@_GjbGVOLq{IQi&(OJ#j5+2QiLi*w1UyDOKrCC|+sBO(dQzc1At*LEZE_7}zj*X1`_|egtNp!Lmzi2x6?#(x3tIX?*t|uym7vpaG11<5>=F(b6JJPE{bSRK3NBTA=7iPuNj) z_)A!IzsT!&Pkkw{#bVya!rWXf?+rm_ZTa)G=^lr3Ls*1Tvq>6te=)&w&%i4+)d8mH zdK1eX62Y)B&-N^#YdvtND+oeURl=U3f@ZmsR+{Lv)0JFRFhV7Y!T%ria4CK_y@=uM zm9kYaXpNK}p#e?1)34ZDe_MeFwyyhOm4E;9ZF7T}2ii2+Zr~GOMT#F$fO*=bhP@%6GT@%*KR38$k$7enoD`HB z;HDbRM+iq8ZRCVU#J9JFr2=vXm7omB1Wa#?TYO(O(>y0P81G7ON_(j-{5-V2L6`h` zAF+?T_+Kb5Cvo2n9^cWtbQZq|b!$JB0im`s$j@i1rn|d)q}Qw)DA;-8eif**MMys3 z9xL*q%2gkcq){kq#0o8CH;vBSH9_f`X3U5npWw<88+X_^I=UuFOtv=`*IRaufAiHi2L~+Wku#BBJ+N?8L8M zhJJg3iK%~RPG6fej(5$9Ha{_*`#A6K3 zcRq`WW=58_`wvUt-k+nw$iczU(%Z|y=`77#`*xdP7@{f@T=^}LmrrPSWk6lkx*P%~ zmv6{3nT{WNKABKh^*t4Z9jfEjkU!V?pvQS#k<%wT{asl+-ROFr$J#_ZK;2k5tqY$GF{fJub?8ivNGG!{RO!g{M+?QBSPhXmKygZ z+_9i|mGe0z!Td)ANkr|JOB@%BFl6zKZQtuJa>PisN86nBDmjy@YTlSa=9#m~%JKs_ zokk=3_4J*EQY+#)6pGGo{A7*hXL_~jy*5EPl#Y&Z*aADNsS|MhDt5$8vT-82GFDXbJn=qx3~8n;$o8?aJ&X%6~&_!?3aD9xQqwZ zH)vFZi?;Vc(+n8SC=HW{$F0*8q2N29CS#Pux<4u%mcYea=`-tTq5i0`B*{f2vX)L+ z8Tir$Civ1O`z@(eE-uxRlUjNmFF4OE-~I3Jh>2MPA$KtpN_6ny*wU>cj6zDR*eUv2 zuP<-UITaT(g5hO}zea!u*j&z_-xCnEw|bWJwmGoI#WJ+qtt~*3@#7}gW zL!qBO#fB@2?ay#A#-l!6HRah-ge4g2 z@ou3r{`sEB9JstavISu{h0$h07|T?($MQ9E=VLGB(YiU zQ`tdAwY0K&YqJ|5_G*8z`@#758V>gAmDc}U!E8K~jd$~A#oDStvGGb^*gj5XvhHkk zGDV0)O9w@q+cYRV%aU)^I@-=75_4NpTjeIUM(sV?VLv@(>&@qI;1tpU&T1SMI@lwA zp9jczL`BF*SR%l=ZVkS2t|@e-feG*e<9-_&sNd`m2xeKNe9H*3&Uim?TVut}*}SHInUZCTdU zg<@#{zD@%hJv|v*sw1c<9sN7fTC2Bq*DiQH&8KOKee7ptt4yzoDc1_%{|1%qFG zeg(1AhXrzr-SCpJUKC`_U13hIvX1WDxx-$c7|{g5W-GM*6EtiMo}Pw${hAMdXaD_h zpDzx@MtgU6+{p-Yf6%A!c(L;|TSQRmlH#3OJ66usf@Pt@rf^(P9vn=lNMTCz(7Uf^ zd|aW77mT*iQ7XRjE;MMp-?uF}g%q#O+Zmv&#E_+t1KTuk3G`1%GhntcklHr_Li&!l zvnr29*|zy0n+iv}c-t(cFw40X-3D4`%7@M!qk$)JCPJ z$&$!{gB=@dNbCK&DrS^bv9)O7i-1?JtIaxg@Nh7@p1Sg%btEw>hB&YhD6m}Z(;r>J zl1LV+3N=B0QZPAQx!cs#Y_-gy-&$;P_a3H(oMlK>0@TJ~9d=k?BCJ%xKT3UP@LH+Y zqWgn}V%Mm-xiy?uEK(I;Zor=cB6E4E5ASChBu9!)PQ1}&vMVYrHMUTD@ZY*pRBwwy zH#d8F#bb{pxIZ#q?VaU~T~U`~G7$sGIlVajAAcS7!~_kC?O-ImrzF>y64mcJ`a8Pf zD@@Ib0UFkk?~jHJRh8)22cr*0Mn-~uvN*B1vXj5;^2kX0FkL4|M+9aV6aqI21m9p! z(frkahYs6O(~L1()rmHyra(k!a>G^|U8d0>LQ553v-#?7DyF;}613vv#DNq*^Ho@7 z9L$uGkiLF>%I6II{8orrp8qig|_Ey3cOd^{u0oruum`t*K6(^+1r=7C(p*(O4D4qg?Xx)5jsn z4#0WLe_%+=;k9LshQ?^R*u^RLlWTIaWgz1k8in1>}ryFg-}0`6{(yV_H%nqODybGZ)p;IX)7ql zikFE(+(n+shH3;2zaSRuSppbTS9L5bx`_A7>>(Jz)A%>e#M4S1+3_zB38}{%3y0%k zf9)MW@lMamrIG+Jw6*2k)I%gaxcqe~em5dmYjPaY!1vjH9f2V@(f_N#ws{jY~_86n<+rR_XUzt1FmeJYGB=y1;s5=QO_Tr;K_a#k(ZM1%O1I)Znw$3LXZbRN$l~#u4Sr4 zGja%DAb?*0{It5ebc+q6oRG~s7#{b^2sX1>xRjw}0{Nr(xBLMUa?4?{YuIk5!Dex? z)O?P?cqsLK&+^LT8zB@GOTyoQLUEk|pgvyt0ka{WDEouTLt6|;f-+_+J0gyNchQpgTYbFnU0QZSxP8XdYu^nDw!r&o0f?_k`UQe zF=Gvvcp>k(R{s@XQ`YEgYDN|SjLlYgxIMYIa%Z-EFi~4ANdm~|M%eHKz^Lp+o!tqx z8x$_F0MvqimR_Li8_BkZV;7JvdLjKm$TKw{qr|O(LPR@|jFs8sG=yFIU_BJzYa3Hr zs0USYS-izuS${$iFXF^&Gc;sgVzIF8ha+~8^9*$s>oHwL+9D}c4Dhwcz{pj2#@5ym zcH0l%N`#SrLsf;ZpoRwr6Cuee3JR~J0Soc03u+h?gYeVsBgy#l^->Gfa%-nAhI}i> zsqqr`@9!o+e8uY9L_wm;YpV}9pjjQak8oy%fbUsRp#qs;^)%t$;@37sk$FSFU;=cucv zDlEusp1w~rlKc0qty&l0zJ9@6b$!^%OLqo%!{XpwXs zgJpY2X@4eH$2ePyB#8q42%f^fwT+fFIkkjp8N=+5o~oz3e8PX2%0O9+Xyt6!yYqZj z8O^SLeFb{Wo6v#U?}cfZa={1DU?}=m2Xpz@U)kPInJB*^0*Z^H<; zHYwg0^>}GylmRtbq8_{VI{OZeIvM$27})Iq=TJQ*@B2K&q#Re&B2QgKRkWp%vBDL{ zN-aQu>9gU*L28|jJP1se`&aD1 z;7Co)+ycGeWQjtZ5iD3{r_K-9^6NYdF#_`JIe^S0c=m z0)w?89jK4rzvCaJ&=?Sm&8?MMG$R2e5O`K;wFMd0D5IH-31lI-S(+DPi+R3Q_7JXPA+8f*%?BB{q5`7A zqGF;QqoZn^Iut%vX)pipuq|y^mm4Uxi1zV$PY&`QAl$>bN`RREY{3QB8Wc;WQI(@$ zc&8PSl$Np4QoQbR-OebtaTzVM(gy|Bvpnl+YKlF~q@c-H8I9G-jvfYix5+5V>5{l- zNC@UP^|`31Jc}h|Wo3Oxsf;PRQXio*c7ASMC9bTD6jVomy>rgMGFUOqxH=2^7oSoh+ZTU5$W;p+=z#uU2dDt$0&jGY47yi z3otY^c(8Z42&bnv@fvhenLR%{171ZeYw+Q2udgz{k!H3EXw*kF9&$zn`3-L`Kaf9a zA1SZw^DJInu#b0UqXm&e3qWK+jxJY2d}(YXdWDC);xdYn2EgN0VncO2R1Va`%)u}z z9&)iNybJ=&dV*kt=FUzMnxNp|olL6&y*D4+#Fi8(nK*_>ev}Hi1#7O(jFUXE-dy8G z<4YI5C!#OXYHm6VYB{|QL(*rQTH@<~~OE7LV<^0f*!#z>P=N%+EIBTsUK zE*KGX5w7;j5R}TeB6u62imszu1kRFtGMPK&LD+8hl;EhlT|)_@Rs_jw@B2&Yc}*$Y zTYJ2a`is(EF`7z#YA^4LV;#ri zh@hMVPg(!(Axo9>_MNNG?pQM5)L@)Lw9@;Oh zH`R<@Vv~e?7dt7*$=xnLfPOaP{y2({2O)kts^OL1z2~BtoVJcLGl?Zzt+=|GZf3~5 znce!0|GVY)r0;z#ot+C$9xftx5KOcj5gs)^x4RW_$-VeS+uXupiEE;*t*x)G&x!k^ zBkYmIzR^!67Kygl8uSM`(8gFlPCF)pagKZao}}Ad$$LiN`GPHO1%lc3X5YKt>)F`e!uCdA$X!3A3m<8 zVjoq$_o#Gs1+%&-3XafXrf&$xcziao#^}#K)(;>~8#~PgdaFJ(ah{&Tid5cy{*s_t zXoGFro&^s<_xj6jqeq$b#?|p2(!9x3?5dkj!;IT+qw1b@2)PbjZ&p69_vxrb=h*_+Mfx`ZVrTE+()w)4 zDVpjnv>K_=YAg01Qvz$6MBqiLFj0n!U{H7;2uAtHi?QUC5R7GOGwXu^g5Q z^#VJ?;3_D@;s{ZyUR&b$bO8bDko2YA^=tE*kn2n3MO4R5##)X(<-*A~pO4R63_5@I zziDx4jXsLNd!OdTsN+^=4}JVTL9>PStz~ff*By8ht>0&j=c-x#b?lepn{M}3u#lTx zxfsN3dy|PZZNCqX>sd9W=lJ<Y>S2ceiY8ycv-Xy_~_#|vSZ_iG2`2p z3Kk}mEAB3mnngR2Kk5}tx6!_tkCs|m0nz6~Y=aSq!od+gpaflBXvL1<16|WA?%<F-?pxOqWTG>?FshD==r@&wTaTdh7v@_P}TVk^# zS#|T(WBrW|4k)>&|IMB2eS!DRvXOZGb#&*n>BL>Y5y95>{fiyscyKdLe{ZfL0@#Li zpdHV+On1;G6S@qZ7@kadQ=r3`fx%tBjb19+WzaiuVHpn!eocQ6aj`+o&xM`ozWU$v z2BreG|M1>w^6!iE6BpJTw$7@();Hz9y`42-cbrW2bVOBx@rA-Jfzm8Ff99FlY)lC5 zyNfcX@Z6hdlc|ye@%J@agj@wKZOWzG$rKV1HGXlas2=ce86%rt;kLuZp`*|nW8y@l zgw1BT+(C1BK!KGte*W$0u~BvoB2Pt5}X=u7;KtJ_QBQcEZ^Lvhd;N)nldaL9QR|0hCMG7Li;73&UA=c!@cghyT*kWR#lc?R z{ry^$qm})!khmFVY!s~<)TN;LBuL}o&|4^{{^kY6VqD4CZh+P7aHK6{aI-A-2)`=eOv#Qr_~X;FQ0&Ep2#jP z7hr@SD+|jmD5w7R?PGoOJrU!+7VHC)^GK=8a%Gp4hb^!H0#`!9HcC-al-m0B2_DrH zMV8O$PZE9XL()9T-@8p*Uy0=o6b2V&MM!QQaYwc&`Pmsk-enjFj0Eud1h@8TfiZ}S zIwsQ8V$}9gjVNOH;(xOhM!S6V5;s&$ioqeRrs~w}S&FPrPGb#f=TpEwhFvPVWSI0rP`v5rxf{L}=pwdI)5+(%eaC1S%oq*siF=Ah57g%zy|sWBT{0Mbp_( zYhG0KujtL6d*|kRJI4er9KP=c7$EO3mF3KP>e0 z11*16@dh44kAM2duT}dQoF*DN`j^k2U&nLCnr^vV*qr#E zu2J1SgB-HkHy*Z_di=iZ847S}-|w3c1$*5f*Biip|<|*;FM~ zcJ^|;&N$>>7wv1_ip6&K+m26NR1@ar=6rG3e>FFI;?ihVQ5v3bt&fpb!~|(+3=bDx zxKxi5G-L{cV{P_-_VRLi0Zbig&&cFzRMyt=Do_KkqwCv`PkR@Mi;m;Py712G=#6n2 zB_F1a7UDabn-dx*oKMz%6ua=D2h3yiBv72tA4sHjpT;_mK` z<2xmLBgxs~C-LfmHHv99l-o4%R8=vL-%*2V0_pn-?#{}Pr|3gpf6KM6*xqtKk#|A=vEIug=SGYSIIJv1ndbT^0y3@u1^4Ba6ezda0c_5Qx^`+5CK9fq^dK6^j= zdDgSmI#2CHzI~x0yL!4?%~L^CP*Awa49FEl@Pl1~ZswI~1iPt8$5xfL*%zYYcciShaQ$mr;nMmsy;8)xm1trafPrX>lV z3t2#zOfplPBZj(%iTOs7het)p5(9fZ9}P7)Tv+78N7(6lA`1n?n>QT^QaxGPz;_b^ z({ljwUZv|rS7;Tz2x)=?B7cq5LaJ`^Ag5mB;=r)^_ayO()K$Zx;WB{=BtK)+xN=ib z(QOW|eUsjDu;PGEM1V{aNW5EGCjT7m8rbyPdwV^As8L=0$!w&ugL1dwfh5?su2uVm zwHa+@3WACMxSM)8zO)5A__Np4etJ>z(%yj?d|g_;CPy18ES}N7sqn&L;IFcB90jt~ z2TfPm7Zq zXFGA57O#Og?d3o&inZl$IoV5zn{l<=wj5r!1YhNt#^ZecH@22ou8T}#l2redv)Z3@ z0~(f>77m_9wGDWruEw!W1qVlD|3GY4e^fwD2R;w*IZcTB{w_A3TbQEPs`L;3T1&*b zR=q_Zx;xR#8g~Z*nL=tF)_}_rX(mBIJy(3Xq*z@*ij59rH|1v_@FeDU*xT)``^!V3 z@n~N)vqfSeC=yq#ck9pV=oZJUHcjEMPnrs{h`sUB2n^^ftXf*8OnW)f*k)_(*cG^0 z{8o&I?R4eHjH~sNS~MUW5$}a2Su9$YQdHYiMEA&oVz%pW&F&cwrX-oPB(X+5@wl|u zzvtTBRyY=6V#fQ?ik`3f)lCdzSa;>qIWJ?(D>X4`bT*2(u1hbOw}+rOf4=wV0C0^48*Ele+-e9kz$?^lhxKBubg z$%DF`?HDdPlXQtCchdac&k=Os`eu?jF@Mg`+xN>5^SZ4JbC-tnPMb{fHE3^L{(GVU zm8uQ#k8xtdLE9}$PqU>6hgx7kE{?qlZ6$-;vi^_xEfS&}kL zF3$!{2-^Ar>?~)kCDI)Se_;%b?gez%ht+q8@7r6sfCe}&ZkgNV`Al_^YGe=H)d$ilA2AD|uCYx$9 zwM8Bn z0?*6X_}|sgoER-JNz4zKRYKQOICwWp4_+7+@am6P`;v^>*q=uBR8UjZ*E=n{3U#)Zsfrfa;Up!dHTL=t!>kx;d)=pk6IDnA3G^B%Ae4z1_q4hQ zWkB=XrYK>Z+0P%Y{Q!(AT>ORh{M5+7Ddc{hmj<8%j8q{shBF3R8wtiPdL{>LrT6*~ z6ZiF=6Tm55k;G$YD;+G zY$NSo0mXPj6Af6Cef`}!2E0YPkC6LNEm#_?KvVVFavbtoSQy(;Z zfugV6$35DGyvzZWEk(`1V77h`8ZbEY^CBKW)!xz>6%~5HvWTqm4pv@UUN7y6h>k36 zTM3Ch;0BDr8=XP-7w{Q|2InNipAsKr78*-<6`BYETY4}*oH>yDXdhmCz{-F0CSNMV-M9Qm{{>uU4PL-yKtX5$^5~1z?)Xu(0J-q^@#IY{p7Si_5R`n z?@O4>tL455NdfSi8wS?Xfq$V=zZ)k;w@5C;*gC!Vt(mo)0HQR7ToiJP4!glrDw~IV z$I8iz*GV~!7C-7atFp`JygS;o;$tk$ArVs6w4aUL$m~qAme~?_Nnwn#W}ag^2|5ibC64!K+7K zWwva&jEo?evh`Hjva0J&d7(u@v$5SqD+m{QtuU^8h&~n|tPx|VoR}33EzBSx;Ks`_ zAHE_GS{JTi0sg>Xu%}P)f0fLA&Wt@#&^*~{s?fnUNr$}y)}N)ZcD9%LbnhuFB6s2S z5(s_Ykv9rtMyJWt`S_Zshp=uR%5T!~Ja}kZrP9irWb0TNuOyGcu}P>7YOARpPS;x~?4jxH!+OjZ*0HgW8WStH zjQsIEu;bGSkm0nsPmXdr+MdO+zQ=@$Y*!E**ihP|H83}ixWS!?{TeMtHVWA^5=(`s zoXLHyuEQ{&C+2zl8>rRLU1LlRS{D}=S5GE zSERam?#G<%FjCAO?l>R9I_&uUqBZE`IeLbPgr2v=ky6Yv-MPa}K#%HJL=t}+PfWv5SR}gjYmF)AevG?z5(Sbw` z)UNL@9qq3(Dyx=q>jP$Dx=nBPM?gYngI)vH>>}jJdWvL5$FVVtZoKq7G`aU0{_ler zH!f#K2tVGav_PaQ6rrq)HGDGHdZ@zHQokoi)c{3H>PnAxedImMAXwjYrLx#0XjvD> ze@k{JI7(B=nohlPVGW7+(lMJ$xkLA{TPh;A*xYyd!A7Jt1TNe2qeMb z;ZiczrlzKt?iPpPKY<$Vo$1G`HOjTc`oPN3Gm3o=?z-WFS0XJU29Jx93joDSwLLXB z5d&Z{hkX|x!x}ni|NO%N?Uo0^qRzAMmu|~v$DpS2& znzMCzC~U1dIAQbbMC?j(-G-!rr@V%Vwjyfb8*;_0W=c##!mK~v12PW^5lrVnulY(X zjS&t5=$PNSIHYUywrxott9t37_H3 z&BFd%_KSctHPqf-saKB#5~bHIR>8H&yr#DjB%ik0q}r^GOLcPnM66GZM5-{v_)3{X zVf6zMALfab8VNK81gI^V#g7RLfx)L=4vU?Y6c4U{fzc@)!S;sKX z+*1m;5O6+-K)imPt@jKK0qiX9qXo^|{YpuI_m`p08~>=@m$l(@ZvXy%N5(ghw12U` zzDGh^_{n+SjiiH`q}@DvvQcL}lMk;y*NkR)o^Pd5aTqtvL+xDkot+K{M=rup((RIBN-)}z@O56@Ka695p9y>=vf%60aWidqK-Uom{ECupc z9@G7N0~y;?WHSd*rsjZlS)mIg6``O@w(70;es`Km_Y)OoZ#i?Tb0M%aVzr>DRGOvze=kR>2v~~zW2~YXYU9}n_QUY zs=G86R4&^r0ZD`SI1Q5hqHU$*lf0YZ6RTl*2{`XSAcx`IE0f)rS>Ib0Olf=QvQLDW zl&fto0F9D^V{NW0c(|g1wT9|dlg65d$0v0%-2MBe5B>Ix8R)R9s3fiJb2PKGO6vj z3f+w7xW{NiC563B1#Tl_ZWJmvgTTU~aBHSLys<;;T*qsV^O>@ZO#^$qdVUQ>f~pnv z;($H}*!32cw)0EcflEB;&6Ti)aYZ2NdkhsVzn^17j-7gqP#cNGxs|ysR_%rxoODM0 z!FZNQfvidOBZltLH#kfs=HUQM0dKUew+}uI>EOmG>EGA+MN;if5HAYdlU^aV8zh{2 zSb6sag<(N=R)W$Q~8P&G1j)#Jw^+80 zt}c!Bi&yF{-mUM>j?By;n_u`*M5h)3-vsI8k7pC*d;xcOYHlte9=8_nVGJt5aj}*(rFyBu&m}pDc-eVrj1Vb<)Q@kTVdIgcYcq6GxnU9Cn*jumzYME?+mOZ9 z%&QlU-dD6oty;g@r8y9xD7D%>N`F0toHDtuX7i#}U0-0+qr*%~T5;o|CyuY|z*kpF zOacWecBuaNw;~{1&~wniBsQ?4F?X~5o$0GPQxF&{^xge=KvAU0Nj~8+`BWX+LxxIQ zStK=CwJB_l4p)ndT`4H!W@l_VQx1V_DX=NQ+3Mn21f}CjKkrEMROQ^qUYGIn@+ww; zE%0iM%gZlrubK^)hA<(z)}EI;Y}L03<87{k7gKos&u*Z-1FEkJvS`;b>$w)jV zRYeDRdi_YCu>WZv<2@TAl!kJXzD!sKUbn`^m3wrs44GX4+6+(}&rEjZf=G{k%f)$k zIGm?T5QrxE7*N4x&X9tI6__M@`??l-vi6p%mPh+vFG3&w@1dV$d4r`P2^)-SdVWIU zM}GCuqZxS&0z9({B4U|Z2dhB9-W1uD4t<>a_8zQvh7V%f^e?ZfS1C6SKn@L8cunT$ z3hv1CXQ)dEbXQmVnwX?@XIMpdW>^)|aOPT0!+SHM-F+zt+23BIJ#y?)ymfKM1MU8z z$=K9*!5P%XGz1xC6_CmQOt4X&|Ia>Mfq0_1P+Bjd`jZUg!ZbzYGN0r=o5hgZ&zYmu zzO?BNF=0ihk&HMBG+y>#ng?c+`U8WsvfRZYnv#+(cDAQVf)FjXqDi2PEr1;yXzByj z55Ri*DxLa(K5=kzsM5(8_}0kXSCEh>BGm8M0TDN$MpFYOGa^<@Ar zK0MHt(f*Ry-`ot^O1=$6fzP<2vy(yf0sIbt3*-&{+}O?}>v=;C4!ory z8KbI!AMIcdWwEQ?4RBn+r7Wi-KOA;AoBV_y3|Z{#xsy#djS~ zo2n}`YMY)JheFNYTN8vqZ@inEQ?~@KxIAEZU6Uo|4DkRaU7J*+E zQayFBEEgc6EqeXAYvZnQ!1%9pdTg);VC|9WTNB=98-A;vk(Ji=tNfX?o=ys8<+gxl?MT3J4@CgM4`eg>b<>F69&zm-+0DaAU<{cGcKR<2s z?CcVj0M_{!Hn$7JG71#{h}M{!*{t(%VXx@?=|Ml2t|_Q4P@cWAQnrl$+S-~bcB7Gb zs25TUJARDT9*;k5f1Z5U0l3bUIcK%R31l!VOKzn@h81GqZqujM?qOJlnhW(L#~UH`Ae9c@S22fLtP3 zF4%x8-u%L$WCFAYofe`TjPatLKJnSByq_4tYl zIC?;m)J)3AF?u~o3!S`2jaS1X*w%RTp>)`UNj$Y0t zUTf91lbTsOV|=fX;Gi@T z3g54j>bZgUAsPi}YDRM(jgIQne@1bH2J6d@0a3uDj~Ee2GWj1Gwc)UfgNw%BKE%f# z_>kci7zoDA@X0(w{rA@6icJBm#dn1p=HU0-Bb8{Ih5ufRnxcb%w8o9wmI2taJ1z_z zsBRz!G|;sbDP0!@Fp{&*kbZ?hsYI;x#H67A4RM@E+gfNgMXC=M2H6Q?fXx%{3|+te zn3orCu+W%e*~1`C4fdFI%&$fBG&|>_R|AJqVU?D=znLUzB`z+$gN-t-{ux&m@EOjj z$Tu4iE<7ggt2a6jU(UHf%8f$oZrB2lpdXM*VMeJ`n7YBJ+CJe|LOG*V#J1?$KY8!P ztFph!=-kbGG^4RVndD^0KeZJ&V|(?;I|Z~+Z8x|?IU2&RU%s@FQ&iN2JkZIM@M~2@ z+U#73&Ux`V9K5vvgYEypptoy_yF*Nkse^_quK&D3QuMtwldcC5B5gjL2S0Shz)^a{ zOmPw~NXdn&3}m(!Pn%mu3~68W%+Zz)5jIzbA}#M)tRv(#9bU{%b% z{+WA85==@7RtVk&?dOaqYp+qx;)lGsc|TBQv|?Kxp)7ysl_m*J){JkEmi&rzluX3cB8@bh+~AP$p-UdZs-yobnhzyK7Des`rbD z*fkXf5A?g$*H)WogH2<{HvQ6I4buk$ek8S>a1OU2+)TAl&>bZKtSi5%_&7eiX49Bs zQ<}W^c&E0QHU(%}J|2Zb`RnIKpve=h*#Zu#j*iNB)PHSrQfaM=?beMtJOTr$%50av z!5TQqN(I{GV+D(zrR9#q=F3s`R83J5va7>y(-$DLvGoC%CV!%na^PX${P&S{VM_(& zqA?CX>*t56ffOQ7AyMb2?(J=D;SsP8tpj5jQD8|^AYC?^BjG6*!To+5SXAE*l?}l5 zJ%CO?M$YfEdJhyPWw4_;2zpU@>fe=Ef7(sdJrq!h6;9L+mmge~>ra-;K-4xNDN$03 zBP7`M>^V=Y?|Sl7{Lup6riAK-L%HgYEF0{1`Jm>+VM9R2TM9ooLo^exh)cEPTu;IH z^r{^J+T~xV&#_NT$+N`x8C6JAI#;yU;!<)kxOe7QwWEaxOSzM{7K(dYiCB#1eTF(f zACr!%@4V_}mmy|m!`6vYmvnc9mgW_ijVD+m^rRx^Hv5%}if$mzF{;%rkT?yh3*gv396QanQnTyN zP^s`dW-Uae)YaXOiGh#XdQK1sMAQ;BS9&Mj{ssS$6jC@?y!yjtQM&5ILmplsAtunJ z8?An~h7`16G3!Ve8?MkMBBr2o*+U0i#@Nxo&YpFGA2~@#qFxJlL8jpd&jXo(9gon< z7yuAiGqN%vp` z?(T}}_|?O-R8P$ntKwd!kp3!m46c1wf#Ug)Gm9cNG-43EZ96}oAs*AG&S_PZ!uOGH zQlKfNnk&a>vGNCZwW8a2NNjk+}DuMID*VgHZZzNyVr^52A{)*3JO(FyM27lpQ%pcQsHhgHHb z+VtpRnit;;-GZy9z{}1-5pk2UDy5i@6{`Tr=txE>t5(5VK?^wHwh(}d;w9f~r(jA; zpGlM69{_=fkDnf?bn+hd-`=wgh#*z{?T9}Q{d9_|wE<%x;Lw6|dCqaiAZ5JX#~}6* zl8T&)z3A2S>Ux`$a+(8+McB z>hTK-ngFw8^z2OSo-{dp}iF96PRDXChm*d_s2&)O7+!k@(QiBHNYG2R!A#J4COBfe2mG z+PE<@-LnI1cc}b>b$`c=O5o1Uj*lO?{gBVXiaquh-2TN(6aWa%e1dO)9I3Un zAPjJ~CvgowACFMhaSk}HOw`G#7g~kF`m~Q4EQ8jS7W^G|0H~ah3=GxcKa{^414Xh* zl&eA0BTz||m2~-eM>V_g0x8L`Bnl6(LAbc;e*751#v4x>8Wy@xSxqVJ$N>CgV9IW9 zmBd*Q&hI4f5N`8W8r!-8PJVxm>rcgEI1_l9vq6${tyJvV6p*UQd7z^Tf;Auy4)^fq z-V3NK_-piI)G0#pJK;uZs6FoTOFYY-c{)O;JD4fYR4R6cp-ybJxA_R&(7QAw*w@!( zd?NBbsx&m9(efDgAY_-lzxhcY=HL**e4229jVTt6X@UUEA(%id(T^-qjw-x37==Z; z+7%QRfhz~B%fer{pHR^IL^6+iEScYW`R2drp0XiuEDRtZqc3>T{(hnM#MEhYY&E!d z>MBi)!m6llo^<26txYDCla=I411jB9vEU>VzyU#NkeE!=5Qo(b_Q|!(v=3EW<+siW zzXKjl4+mcN?bAhRG6eg>waGQ=Tv0>SX0=>EUS5$x2G$mkSfPyZE#xH^3)r&P>3J-A zZu2OW1xWLsh~3uz+}EgJ9~ly3;+x2b49 zAtAe=dYYPB_8lpdic?^EqTVk3rDBz@TcbMIpXH>G1vOi$Q)t@V3M=6kxyk!Tv1I#Ki#fIZ%rTOm z1Gnfl+o;A3pUZ^0eNXhI5L)R>Ed~Zp8B$A&&oWN}asiEdK28+&m^>*A+uXaG3_L&D=^JVjdAPCy(FJRqK~_|$(#GuK z-&(#(0w=yGp*<&HEfY4)Q(aNf7;;iiQ8(N;@uz`cq@Y}>Ojr8S9U?E^1=VK+k-+^ zMN7>Tzlec>f%jGZ>EiLk!Ys?;q#~G+w7^!0YY1(>BntA<0JTFB5Pkzv zOR?2U0_@m8?w<^rwChuH6#Tiq*s+NKBfaniV5HYU3cSwPfYwi!D@Sf;*YJta#QKB;6oK%YC(QeGD(eK}c)Wj}av{t^k*?vtEj~LmO=x-u|I)b1 z!{gxcPMi<8h=9ZWYmG#^g9>o~oRj(RzRD_n3DEH25a1^mswIwWM>vagfA%}6bV1IS z@R(?jrMYwS-#DWi=oPs&yM3nPmhEcV$Kw$Cac4SnXk!NWbcrQUqC7>~p6yF50VtJC zWBaND(_vjG`3tN6ouqh5v6&7hPn?ys9IVZ9K0fUK_PM*KhetYM|5HO%^fM76CT%-t z5Smvf8@-E<`DG-SP5veRW3lN&2*YXkt!>$}ay;|Ww`}{F{BczHcoiVGj#IK!6$*Bs zoybDfg&EhL)YAJ4W;wBAo>i+MaPLL#>|nWEJ+A*$ zv6uGwkYwFsj)iC51L~-7(g^@WEsxM*NI;SW<878*@W3*Csk8gwBOTym^{lT)G>5v0bS;5eBk4W+zKt;X$$#S;J z0(BE8l1oX9Ek)a-Jbrrur^#fx#K{E>&m7=BIePK~(Y>K$fNz=Pur4fh zd?$&9$2THiSbg&szJLSRxpcq*R6-)_Z1?5KGX{T8J_cNtSX#pmar|kcQ%-@+m__@A0+(Crk~sx_;|rm5y7lnwHShW2>FO`XNOY zw0J)BHv0o=7W_Rl`_jqE!W>9({4%oM`8lbkuhhY7ISO&{9phOC7)t;l0@&y|IaRdA zJRuh0LWY7|AG`#O#-y)hXK-+Cq%8Dl0VCrp4b5l)TT{!WK}gPHlfJ`7jPc3SugAtG zFv3(QFZ>F#&p3;!-^tvbIaBwrJt~0z#KZ%`0(o;kk+p0@%W7kPpvX^5tYv*`IgUt} z2PqQ$e{T?fx?=;{4Qs%$GBpU}JcyEe{^tL5K~~M1<8yP|SmRh}X-$ugi@o zhBYn|+F$vHTHI4q>(Lu$p{owM76kZ|NeU8IY`+IRP_w?RXiv^tLh)YpR_fTAINfDm zX8!iua1YJ&2Q&-S|J>47lB^NA;j zvJ>g$j$2>8Bo-7%Xf4l<>l#@dtTU^r`LeMJ1?y&J4$~X0t*z-IZut7#3CPk|T^NK~ zjeWJG_)4Fk)nYk$`$#j1Cc0Cc1!}ti-UJ%oex6ELEuh|%sKGq9! zt+##v_}qf@b3Kr8qLa2-M~!nGxWx_oyjJVLen9p ztd1)1@|~@LB9iW|XRb9hNoKv>nm#?#AReOy}Ss}s+FZ0Wrl`Jv?8pLK?R~(4hK_Ry%W8Ii{(>h zKZjTHx1viJMEW0DR``hm(juknC0YxGfc4hs*q`o4bOE5=>5qscLw`)2eQmq7gQnNF z%SEDAxu4*j`&&3Rt3D9@b#l$%!YBC;m~X@M83IIn6arDzI`Z(w@8A8u>1NfUXq#M{ zCY!E(9lPrRAeGMB0YAJ0MUh*vVPXE1g#Vn|C#DW%Az=$;m-!${MFX%6c^A>AT+-M0 zZ{auj{e$BYk>sQ5t&yuytWnAG{Q2{D#~1QPy%d+ClDR2Pb@k;pc?ND14vPkhF^iqt z_g!7jFbgMTwc2Cw`^uJ6g5Hmjk>O4&ReaxDsi6~S`so=4Dg7Bq%(T_v(&rxDAzEM8 zGqsfhj%aJod?#hs)-BB?^$U)F0L&`^zWw^T$@%lKU~VfAMIQW~|vLG|d{D2{wXUwn^r;^W!6`vlz-s_y9-1xz9i zHd2p<%Ie#Hs=u2-@UyY(-@h4(vT>;H=y-fkU~$XgEB#%XT(#pVtlx2HB zur)+PNlAN$V$b;aS$<>|TTf z%Gum)Nz19vDH*V98JVjXd$}xVsZi?Q7dG!S`}i{HBg{8`{@Mw+Qu?g9x1b6Pgq&>n z;SY~LbFTjQ9tCy*T8Dic^$7bp-z}cg&uJdg(a|M{{r&DOrMdo{TwR-O8zk<{ zw=uVAKlWOciRQ*7SOkwVU+xvC7mEZWKRa7T;})k2W^K($?Tb-eP5lCvzt8FCrKPZ6 zpP#wrkI{HO_#1OKXCxnB#&qVwa4hCO-*%PL2k0G*x$%O3WCwF^-5ZodUp0M$`H?0` zgm#UO=oI!d-;LwXUjCmxLq8tD{JwLTWp~E^EoNZ@{`AH{%sSO5S3 literal 0 HcmV?d00001 diff --git a/docs/sweng/diagrams/logic-operators.png b/docs/sweng/diagrams/logic-operators.png new file mode 100644 index 0000000000000000000000000000000000000000..63e5a6885f110f51c972a784c279f83716ecd327 GIT binary patch literal 86200 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 N@T{p`@gGjN{sq}f3T*%Y literal 0 HcmV?d00001 diff --git a/docs/sweng/diagrams/recent-search.png b/docs/sweng/diagrams/recent-search.png new file mode 100644 index 0000000000000000000000000000000000000000..47ec36055d891b26a6a9a9ab4c685944c544c5ed GIT binary patch literal 18154 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 G_x}fp5~4o< literal 0 HcmV?d00001 diff --git a/docs/sweng/diagrams/user-search-input.png b/docs/sweng/diagrams/user-search-input.png new file mode 100644 index 0000000000000000000000000000000000000000..b1e3019dfd4b439e7cac0b728b876efea75e38b7 GIT binary patch literal 39585 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 UDGr*_WAJxfQt{dw@w;yS56H2+#{d8T literal 0 HcmV?d00001 diff --git a/docs/sweng/technical-documentation.md b/docs/sweng/technical-documentation.md new file mode 100644 index 00000000000..c9528936f58 --- /dev/null +++ b/docs/sweng/technical-documentation.md @@ -0,0 +1,112 @@ +# Technical Documentation + +| Project Overview | | | | | | +| :---: | :-: | :-: | :-: | :-: | :-: | +| Version | Project Name | Authors | Status | Date | Comment | +| 0.1 | Better Search | MS, DM, JB, AJ | In Progress | 10.11.2021 | + +| Project Members | | | | +| :---: | :---: | :---: | :---: | +| Julian Bopp | Albert Jasari | Daniel Madoery | Mark Starzynski + +## 1 Introduction + +### 1.1 Purpose +- The goal of this document is to provide a good overview of the project that explains the use, functionality, creation and architecture of the product. It aims to function as a guide for its current and future developers. +kv +### 1.2 References +- Functional Specification Document: [functional-specification-document.md](https://github.com/josphstar/jabref/blob/functional_specifications_doc_w1/docs/sweng/functional-specification-document.md) +- Issue [#341](https://github.com/koppor/jabref/issues/341) + +## 2 System Overview + +The project goal is to implement an extension for the open-sourced citation and reference management software JabRef. The goal of this extension is to improve upon the existing global search function and make it more user-friendly by adding a dropdown menu with additional search functionalities. + +## 3 Design Goals + +For the design of the extension, at its core a GUI implementation of a dropdown menu, future extensability will be ensured because JabRef already has dropdown menus implemented with JavaFX. Those will be re-used, which will also satisfy low development costs and good performance. + +## System Performance + +The extension implements a dropdown menu for the existing global search bar. This dropdown menu will consist of clickable buttons which allows the user to search for specific fields (i.e. author, title) without the need of having to type in a complex search syntax. Furthermore the implemented dropdown menu has the option to browse through and re-search the most recent search queries. + +## Design + + + +### 5.1 Statics + +"Better Search" implementation will mainly evolve around the SeearchFieldSynchronizer class, which task it will be to keep user inputs up-to-date with the live search query and ensure proper syntax. + +For that an ArrayList will be kept and updated in accordance with the - by the user via search field or dropdown menu - intended live search query. + +RecentSearch will keep track of previously searched for important attributes - mainly authors and titles - in separate lists and also display them in the dropdown menu at the end. + +![Class Diagram](/docs/sweng/diagrams/class-diagram.png "class-diagram.png") + +### 5.2 Dynamics + +#### 5.2.1 User Search Input +With the implementation of a search dropdown menu the user can input information for search queries mainly in two ways: As usual via search field or - additionaly - via newly implemented dropdown menu. + +Handling synchronization between user interaction and proper display of the complete search string will be the class SearchFieldSynchronizer. +- When interacting with the dropdown menu it will check and add new items (attributes, logical operators, brackets) to the ArrayList searchItemList and build a full search string to update the search field. +- When typing directly into the search field it will fetch changes or additions to the ArrayList searchItemList and update the search field accordingly. + +![User Search Input](/sweng/diagrams/user-search-input.png "user-search-input.png") + +#### 5.2.2 Recent Search + +The Recent Search functionality shows the user a record of past searches inside the dropdown menu. + +- When performSearch() is called, the query gets added to the RecentSearches List. +- Clicking on an entry in Recent Search performs a corresponding search. +- The List is ordered from bottom to top. + +![Recent Search](/diagrams/recent-search.png "recent-search.png") + +#### 5.2.3 ChipView + +The ChipView transforms coherent search strings into a single chip. + +- Pressing a button in DropDownMenu creates a new chip. +- The resulting chip can then be filled with a search query. + +![ChipView](/diagrams/chip-view.png "chip-view.png") + +#### 5.2.4 Autocomplete + +Autocomplete takes care of the automatically generated completion in the GlobalSearchBar which is done by the bindAutoCompletion() method in the AutoCompletePopup class. +The recommended strings are linked together and can thus be accepted or ignored by the user. +The input is tracked as far as possible. + +- A pop-up menu appears with all the recommended entries which you can click on. + +![Autocomplete](/diagrams/autocomplete.png "autocomplete.png") + +### 5.3 Logic + +#### 5.3.1 Logic Operators +The buttons in the dropdown menu have to function differently under certain conditions. I.e. it is preferred to not allow two logical operators in a row without an attribute in between or to not allow adding search items while an attribute search string is still empty. + +Furthermore a rudimentary weighted logic operating option is depicted in the following activity diagram. A logic operator can be weighted normally (1) or weaker (-1) once, which allows for a little more complexity in the drop down menu. + +![Logic Operators](/diagrams/logic-operators.png "logic-operators.png") + +#### 5.3.2 OCL Constraints + +| Constraint | OCL Constraint | +|---|---| +| The Search Query is not empty | **context** `GlobalSearchBar:performSearch()` **inv**: `self.SearchField != null` | +| After performing a search, the search query gets added to the recent search list| **context** `GlobalSearchBar:performSearch()` **post**: `RecentSearch.contains(GlobalSearchBar.searchField)`| +| AutoCompleter is reading searchfield and proposes different endings | **context** `GlobalSearchBar:AutoComplete.readCurrent(searchField)` **inv**: `AutoComplete.popup()`| +| If the GlobalSearchBar gets clicked the DropDownMenu will be activated | **context** `GlobalSearchBar:searchField.Mousevent.MOUS_CLICKED` **inv**: `GlobalSearchBar.dropDownMenu.show(searchField)` | +| If some button "Example" in the DropDownMenu is clicked the Searchbar gets updated with the input "example:"| **context** `DropDownMenu.ExampleButton` **inv**: `GlobalSearchBar.searchField.insertText()`| +| Only one "-1" logical operator is allowed | **context** `SearchFieldSynchronizer::SearchItemList` **inv**: `self.amountMinusOneLogical <= 1`| +| SearchItem object with itemType "attribute" must have a non empty item attribute | **context** `SearchItem` **inv**: `SearchItem.itemType == attribute` **implies** `SearchItem.item != null`| +| If button Year is clicked and the searchbar asks for input maximum 4 digits are allowed after "year:"| **context** `DropDownMenu.YearButton` **post**: `GlobalSearchBar:searchField.insertText().maximum = 9999`| From 16b31f48661cfb80a623aa78c04e964739ee7d86 Mon Sep 17 00:00:00 2001 From: Mark Joseph Starzynsi Date: Sun, 14 Nov 2021 23:15:48 +0100 Subject: [PATCH 14/31] Update image paths for technical doc --- docs/sweng/technical-documentation.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/sweng/technical-documentation.md b/docs/sweng/technical-documentation.md index c9528936f58..d06fc2d3a55 100644 --- a/docs/sweng/technical-documentation.md +++ b/docs/sweng/technical-documentation.md @@ -58,7 +58,7 @@ Handling synchronization between user interaction and proper display of the comp - When interacting with the dropdown menu it will check and add new items (attributes, logical operators, brackets) to the ArrayList searchItemList and build a full search string to update the search field. - When typing directly into the search field it will fetch changes or additions to the ArrayList searchItemList and update the search field accordingly. -![User Search Input](/sweng/diagrams/user-search-input.png "user-search-input.png") +![User Search Input](/docs/sweng/diagrams/user-search-input.png "user-search-input.png") #### 5.2.2 Recent Search @@ -68,7 +68,7 @@ The Recent Search functionality shows the user a record of past searches inside - Clicking on an entry in Recent Search performs a corresponding search. - The List is ordered from bottom to top. -![Recent Search](/diagrams/recent-search.png "recent-search.png") +![Recent Search](/docs/sweng/diagrams/recent-search.png "recent-search.png") #### 5.2.3 ChipView @@ -77,7 +77,7 @@ The ChipView transforms coherent search strings into a single chip. - Pressing a button in DropDownMenu creates a new chip. - The resulting chip can then be filled with a search query. -![ChipView](/diagrams/chip-view.png "chip-view.png") +![ChipView](/docs/sweng/diagrams/chip-view.png "chip-view.png") #### 5.2.4 Autocomplete @@ -87,7 +87,7 @@ The input is tracked as far as possible. - A pop-up menu appears with all the recommended entries which you can click on. -![Autocomplete](/diagrams/autocomplete.png "autocomplete.png") +![Autocomplete](/docs/sweng/diagrams/autocomplete.png "autocomplete.png") ### 5.3 Logic @@ -96,7 +96,7 @@ The buttons in the dropdown menu have to function differently under certain cond Furthermore a rudimentary weighted logic operating option is depicted in the following activity diagram. A logic operator can be weighted normally (1) or weaker (-1) once, which allows for a little more complexity in the drop down menu. -![Logic Operators](/diagrams/logic-operators.png "logic-operators.png") +![Logic Operators](/docs/sweng/diagrams/logic-operators.png "logic-operators.png") #### 5.3.2 OCL Constraints From a2c2505bdb98ac1452084fca845eef057df6a803 Mon Sep 17 00:00:00 2001 From: josphstar <56582837+josphstar@users.noreply.github.com> Date: Sun, 14 Nov 2021 23:56:45 +0100 Subject: [PATCH 15/31] Update technical-documentation.md Corrected some minor formatting errors --- docs/sweng/technical-documentation.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/sweng/technical-documentation.md b/docs/sweng/technical-documentation.md index d06fc2d3a55..ed2ff8a4c0b 100644 --- a/docs/sweng/technical-documentation.md +++ b/docs/sweng/technical-documentation.md @@ -31,11 +31,11 @@ Das Design soll maximale Performance gewährleisten … --> For the design of the extension, at its core a GUI implementation of a dropdown menu, future extensability will be ensured because JabRef already has dropdown menus implemented with JavaFX. Those will be re-used, which will also satisfy low development costs and good performance. -## System Performance +## 4 System Performance The extension implements a dropdown menu for the existing global search bar. This dropdown menu will consist of clickable buttons which allows the user to search for specific fields (i.e. author, title) without the need of having to type in a complex search syntax. Furthermore the implemented dropdown menu has the option to browse through and re-search the most recent search queries. -## Design +## 5 Design From 98edfaf553a4e0e22e6ce5a9267a76b54057ff22 Mon Sep 17 00:00:00 2001 From: Mark Joseph Starzynsi Date: Tue, 16 Nov 2021 15:51:08 +0100 Subject: [PATCH 16/31] Add color coding and legend to class diagram --- docs/sweng/diagrams.pu | 41 +++++++++++++----- .../diagrams/class-diagram-withLegend.png | Bin 0 -> 117090 bytes docs/sweng/diagrams/class-diagram.png | Bin 93474 -> 95895 bytes docs/sweng/legend.pu | 6 +++ docs/sweng/technical-documentation.md | 2 +- 5 files changed, 37 insertions(+), 12 deletions(-) create mode 100644 docs/sweng/diagrams/class-diagram-withLegend.png create mode 100644 docs/sweng/legend.pu diff --git a/docs/sweng/diagrams.pu b/docs/sweng/diagrams.pu index 4be9ac87477..a4c77859c39 100644 --- a/docs/sweng/diagrams.pu +++ b/docs/sweng/diagrams.pu @@ -1,6 +1,21 @@ ' +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ @startuml class-diagram mainframe **Class Diagram: "Better Search" Implementation ** +' package LEGEND { +' class Existing as " Existing Classes " #White +' hide Existing circle +' hide Existing methods +' hide Existing members + +' class New as " New Classes " +' hide New circle +' hide New methods +' hide New members + +' ' Workaround to prevent PlantUML from positioning the legend blocks randomly. +' Existing -[hidden]- New +' } + ' ======================================================= ' Grouping ' ======================================================= @@ -31,7 +46,7 @@ RecentSearch "1 " <-- "0...*" SearchItem ' ======================================================= ' Classes ' ======================================================= -class GlobalSearchbar { +class GlobalSearchbar #TECHNOLOGY { searchField: CustomTextField updateSearchResultsForQuery() ' initSearchModifierButtons() @@ -47,7 +62,11 @@ class GlobalSearchbar { ' onSuggestionChosen() } -class RecentSearch { +class Highlighting #TECHNOLOGY { + +} + +class RecentSearch #PeachPuff { pastSearchItemList: ArrayList ListView authors ListView titles @@ -58,7 +77,7 @@ class RecentSearch { } -class DropDownMenu { +class DropDownMenu #PeachPuff { authorBtn: Button journalBtn: Button titleBtn: Button @@ -72,17 +91,17 @@ class DropDownMenu { isPrevAttribute() } -class LuceneBasedSearchRule { +class LuceneBasedSearchRule #TECHNOLOGY { validateSearchStrings() } -class Autocomplete { +class Autocomplete #TECHNOLOGY { AutoCompletionTextFieldBinding String AutoCompletePopup autoCompletionPopup bindAutoCompletion() } -class SearchFieldSynchronizer { +class SearchFieldSynchronizer #PeachPuff { searchItemList: ArrayList searchString: String compare() @@ -94,7 +113,7 @@ class SearchFieldSynchronizer { validateButton() } -class SearchItem { +class SearchItem #PeachPuff { itemType: enum item: String getType() @@ -103,20 +122,20 @@ class SearchItem { set() } -enum itemType { +enum itemType #PeachPuff { logicalOperator attribute bracket } -class CustomTextField { +class CustomTextField #TECHNOLOGY { get() get(int start, int end) length() addListener() } -class TextInputControl { +class TextInputControl #TECHNOLOGY { getText() insertText() deleteText() @@ -126,7 +145,7 @@ class TextInputControl { getLength() } -class JFXChipView { +class JFXChipView #TECHNOLOGY { chips StringConverter() } diff --git a/docs/sweng/diagrams/class-diagram-withLegend.png b/docs/sweng/diagrams/class-diagram-withLegend.png new file mode 100644 index 0000000000000000000000000000000000000000..8b10c0b90bff9fbd5837a9ac51a17a58a0d906e5 GIT binary patch literal 117090 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

BGRerTb1gsf&Y-4b~?PF-Wu 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�gVW=nU=(0E64$s>+C31%FYDfw&?oC*e1y znLn(h$e9sRJnwUvRiV)~EZtbmPMKbcn?O{k1NLqrkYW@=hRIOX79T|GV6lO#F(5gK zK%3kh@C=C++R)oAdGm54GY9L6`QO7!IN*8pT2;fpy&&NqdiCc{F5<0c1yuRA8J~vP z_%wQ!WV_H3T*sv<60Y>U(t3aOFc=FegP2nI44Ay4RB8pMB7Y;|gpgZk+^~K=_6J8W z%bLGgdud!ts5zO_%Cg)vpu1Ab%&$l5e7Q+(Rc)7ReLeem-0D)uyacM6IPzWF{_ z{OJ$8?YZOK%>K})a#x=sjU2OXRHfovkCoWF6V-7*H4D1A%glbD{1lIXvNsq$Ej19! zTOc_?CDV!XD;Wdo<;c~5P>}?hwPc9Ks38>2!L&^&=$T^iK)EfI8ho2Fjx;k(_TC-- zW0O$f>tJ%&*t)6DIj(sebM<)&O_h-QNgomC|3S&vpP424FCZdIiKhLmk$M5ndRtYM zSi0zGRmD2Z%vs&wr>Mi7Kb-0sPEV?96Xe^WWX$w^ky4W7(aX22grkRC8&&r`i!PrV z$!WZ5*sn&Bd^!a`=w)_6{c*=T=j~i%*;8D5f*>DC-YKb9cAhKU$)eCEC2B<#2gS*1STS}XUBjx~0mN{GlXGHursOU3iBhyO7O}!8S``D!4CWnxIvX;bNnD~c` zYjVyWMxKCwyy#!@mCpJtCq(5Qp>8_q-Izlx&l~TKe0zy`-lSMy@4GI(YsFC{ z-D|9ix_roE%{#6YPTEdN(oJ3v54X>1o!{bH^X_eJoBIf7L!m)=ge@c*yy%n?9}T`b zEkYw0J%8`(p!Bkj@M*0YBvrFdaOJM_ScO(^e_P-*HfwWf*c%!7B)D?+3&X`#**C0= zwC6W>0YsB@;ad@J4?RajRrql(EP>><7ummxacXhcxof69U5zpKvN?XD@BT@`V#hu^ zggMF}YF#GT74gpntSe z>8eFar zyD8{eRvvyW*}7!Lyg)-LN_ClEq0*>*Yg&<$Q)o0Yr@D7?BHU}jt$4L+xMPJ?({mU^ zi4~y{ie4+NJ>snj87kjvAez~#3BDkwY`U`)C{BwI{I{b3XdH3X)>F3So_!5?SGl%I zl1_Aj{{}BW$^GS+D4OCr2Yw7UhdVkaUT;O)PGzfx{}&de{CW=M|rKp1yju zxl*VkYVm)z_&UKe@`6}2oVev+o3>JxSJ)#~T9fdCZF@AWDG$4-FHeav){!BMki~Tl z);$W5?7J3kqvs3THT@oF@nTC8?`?6|>&g`33+H2+RCo82mdl7$loSE+g!o*CQn@a% zF)pt%C4?CA)c38&whC;vEv;yx_gCz`#CiKj^Q>FC&dejdmm&?*zIwN$-NPo z+aIz??}*iumjM!WB*^Q>H=9Si^iO}ke2q|m2>luVNKK{k9v*!U-8D>Jc)6Y_}TUjPZ3+|4A0!HMlz4Z zOWkgi28}{AkeV|q+d;mlB+?AxWp*W8q-Q+vlQGC8{O7xJkyF1DEB^TI0pSet^NHK- zn#YIhUU%(fb9aUQN0qyI?OeRevJo7#X0)N2m%KnzEf(TS)*iF?Auh&EDs7<%Q?^Q7 zC%>jf4D?J0vu=pF&9^ONvn+A8)S>cuPX^Mwp0T$&$%rm;HlmV#^oORD({#xVHBeEU zBq8C!rLei;ww)02;RZ}xWtoD48h7%8`L*M8_J&P%b)eT6j@#4N^#1cmrcmcytMqeT zK{WdFo{f-`-C4b}jOFZv0>TZ$yby6pUVCIVC;0h_4bwcNG@^uBZm?iAB40~FH3K{e z{H`ILBn1WSj)W~uE(p+xy=R+N{DK(M`*0w98kO!A;pC0nkss{mO0n1quy&ZP<{+N+ z?j4|;J*Sky2SbLB?K68;N7w_?M1?}1L=MnrE?AJe8CV&{P7I0ip*j5a(avIdxl(9- z9t{^mHPwrLPP``GT&3HOr@ZXivueL8{NBvLR+3cn>!xJPdvG`t=GHvP>vf4=Z+6l) zE@1Rxl!75^H#t0?7ZJJ3U?<7HSGtGVM+rx>c4zr8L516cz;o_t+Z*si05M1}~DY{Hj-*-OO7IpPY=fDaAWS z6d)ZeC9(KnWlGPx%-;j1h2Us6^V`Om&h=3!=RIYKK|6O1-wRlKI+K)=8Q89E+O>KDz!h{ z;EcKRt~Dsxt;W^}{lLmuJ=r@JP>@t(IZZS`OKA32!yDqR;NKC78`Uf7)l_7K-)!7- zmoKhif9k_iH? z=HgO#^C8#yUH({-NfE;Up8n2+13!NeI-OBfrWte&$O@PA?w44HoS9n|K+_MO8P)%n$pk%PRl`d%$S`D`Ri|=6maBo z+?3cZp~TJ?uH&1j%T4jQ-8(bLZo}M_7qf`St@=AjdJ|!M!AI0G=?=&aMS10=8}0c0 zt`E@2#eGfb^O~7bNwGpzzh@DB*>mczH(g^x^GBSiwK5L}R*mn91TH+k0Se3{-D)K_#t99~eECD)2|dA=#zGvuq77hjLRo z*FFE!XTAij%L9|bV#avUkOxtMZ7)SF9SdiIJYnZK@tqYr7EE0h3f2Rpq{qkkNHi^ry)j+L;pw$-*5+)s}AVyeQNHAq+b)SulA+Ozp}UOHS0;SO&dMZq}j(9 zSayWWnmBJ?L6Cowb$;;YR>x^a~vk4 zrQME1R=)|ykv)dB1s;O*no8eYHQpmUHtc8Z$AU0s28x&=vWKRNvuEj`;)#?Gz)4m+ zjybq-t!x8zh>blgV{Wl?aj#Hvf3=hz@aL)HrML2WPJmKAd(ws75}14LZR5fT4Oj_e zZ%V?()0j(^Z?X6(@^fCH=n;kfAA>mWS!vOqdXp6@;wmerzhdMnMhZbKY9i`xOP?rW z;b|aZw)T1#jxQZ9E*Q@zjRwMc`(vwz1V|*Ng52`p`hvNVTfW-O5!<;|Gp9S(Tj{ztkcu`qT6Q4Sx~?F ze^x{}5K9Ni+yuUcttahqnru=G|sb@=~>ZPH$_1yyx5`7`41~7S1q%cg;@+r9o>i3nLq%yT~t()_SyY5FQ6d%aoV=}hZQRV z@1*4|u>8)NnF;paYU|P%iNi4)R4?%GZ9Vf=zC$PMRP$a-SHx@^zzZt@!T9!xiKo)s zTG_C_cFg(1Hf3mj&CquKLR1_a-^1%BRM2?G@5yy@^qY4f6{{iccF_FmzLZT{yJfue zC!i(9Qs8Lebs7%&3~N1l(PxaZ@SFGXX2{8lz1M3YIb33@3v!H;oyVm_F%Xh&#RlVh z8T2zE1=56lgzX^3Wq{uS&IbGqQXhV`=(4|zO;wBm89YP3M6^no(3Xq*`n?L925dYO zzJWt9<>zH{_&3@?a#-;l#}nt>q5=<(tZPS|px`V0*e&4O_w@+x>d?qURmi`agDc(&KgEx~yrR^hb1yj0?+|3^qIISgoUl<$3aRKmmdclJ=yXMR$c z8`pa>MS-u%vYzf@OE32RAM@*pCtvw!y|H;9uU~HweN<-K(Gd?n$Le>T)ak&ujHSeb zn-uR?mwvyB?4%(a84_a-us)Vp-$jw+0lPsgILMtR+8ghl$q!2Z?G6D0 zO4`HA5<;6}b(trHOz{J*wX175_ExHDlBs~}Nek$r1q(Wo1!OQd925p;F?(Ix%EZ`P&N6Q0&?GEx&t`(UC4*Sp`Xpt6dcm0b3k zY23xu|-*@=E@~OT^ZdRI&we@>I{*I)O#MSRfQk`Tz9^jq)FMU_#4Nn9DLBa#i z^-%Q05{%Alj)Pu17dxeOs~w{iOYtb^w9$Cl zt-8l)i`gdTN9Ijv&Pvz#&W^oMu*x>RvV>!MnSV$Jl~YHPijS`lAJfk4IRVUT#TRtd zN&wh{hey?7U!_*Kd73Nk!8-oY*Q6YQWArv=HuQs*Vdw983mNhcpWQw#p)PmCNQ;Bn z6gt&X?VYLW`E#fBGV+S(KF9Tehn+E$%0Us|G>&i$!hW`ojw)YS@2~ZfhT^e>KVf+B z%k(@!D{U<>sKDghi1RO?`VWc+&fn41D@nNr&KFHxo0!@el_eG=lt63#(yBaPO!@Y2G(7kPxJB#b4P9KB8f$aj=zb*-cm=WZU*A0lzR#XUR{s7Ar(B5Xwo9B zN!2dg9p)~Pbi4Lm7vM;h3;JYQ3s_-@@tnE`KVch$lbGliIkI7824Vqx1h_dDhO5AR zjnLiZ6&w16!wbN$ht>axCZQ*~_oPM`g#Mzeh#nd#(jvOKn7xsyu{Qx01CSvC-vr{$#?PjlCrGYb=8V*@5Fw1#ASs@3Av^Q9n{Rr#w9_ff?rehWvHI2s+ z$&IO^5lqe=t{!`y%yZF5E6|(Mclw=?9Is`!b9Y>lOO3hz60-rZFkXzoz^x_2X8Rc7 zM?;B9PeIu4Vmb(dA7oVV6p_ZN4nX?Rumwhu1A)%jtS#tX_REZ|DF<>4G-{ zF}ljaW7tN_@B3T6YAD+@EAFkDLkGi2JPvqu$Uo}#^(zZ_3j=1zXV7O{)JLeWQh z>vUkp1PhrW=c;NZ$Y7(`(!D#)DWO#=3XLRGyV8lw>?P;wTprc$4=N}h34h6S{}~ot z9|^|Sx0X{c>)lQa^XNf*7pP)5z;>@9Tf~^kHk5+r_&Bg~m3fA4JS+(T;t2@60x1VP zks~VAC$Qm7wvKNw&foYWXCa~d1Ygl6sk|O_T*cc;)Bln>s7yHd2R>}>HzF35lEhw` z;>A(r7``GA-TrY7k*8I)1+9>@OO03QM0Ve^$HcFX@$Y?w6GeI0^4Q~3`UVovmo=im zWGQsDHzi%KJsh&+6NFA_YKDQHc#cOY7W)|C5y}vJ!FdGK?e?vO9Xfi-OGT9Vg}GV> zSDhz(LuG4j=91uT+}q-WqMnH@4U))i3eMsEq2BWX>fk<-qj%dA&}X1|#d_{!2xh+} zao3pvhhxBU;bPv>=DV^Pv;$oBd1X3nkr5*TgS&oVYuqI(;Wz|>ldZ=NX`{yPiZii- zAZ3WX{JBjxOsVJ0zpuW5QdibI(`%hLI2=5>ZSavD_$fMRxXBqTX+ai(m6dNL%)`JS z(g0p6o+tj-ufzhTew}Au$;eZM9HLA07p2U{?Jy37Pu>IQk8FwaJ{EF1K%ha1G09EGRvX@*!pRfwS$j!rOHo#7;EI z)}*LuFh4tpKpX4ZCCG`Xw*C5_jXc816#>p5)dRa7et_CVuFtz(?rg9cSzv~JP=dVG9-kjkVc#V%l{A06^_9J z;X13BcPlImiV?Y95%oGo`GK53lRNUh0<6eIE{J1)$R0 zWmeW8@R~(LpiY#Vq%*tgbzfgyKIVPE`$hgkq19%We~|w$ycDBUd0^uL?3Ms=9yy1zN8U1A1n|l4kg7hALy2#j17VXLNer2gQ3E*M6gr|E%<;c*+lUl^SPm!w3+WDa z;G>rf@tXd@$d~ieMd3GvrTTFF>E}`Lq3ugz8&)pE|6oHy0F|vd)6xhtf?n4{c}YBh zff$H?a(^jOZVoKa&=>g^d_S*n4Jm4f;9@l$dW?XGBtzfov^#@rSrVr=1U^-7jCzn} zq_gH54-!jiVzx1u!~| z+$E8u*Z1NrX2Rg^eWvz+izkaJk32k3A3s))Krgr4P#;km@eY#iD7rXz;tGcR4>-$J z%WR%||9ug)x_;r!mC(&WL=ZsX-|lDjay&~{?|+c6WzZ(iR(Le__ylN48INS zmC`?nEOmLo?N}u|C0ExMyG#aM7<4Md@5uwBK~66(5jus041Ezt&gM`~%!Cre4GhlH zj-xWlbz1yYs;r6qk#If%wRy|TjOHY5AX2IQLhF+{&npN$_@C`VIeZ$zOYZQs(^AoL zs*0&Cl!@olm&goxG^2On4IZ-%9*QJ+F)#*=npcXs3Z{6fOXo{fwmj8_)s8MGa+JNI z$zQpI@2(g|w7o#Q5_9z|6ds*pS_7l2D{%b(nP&YSsxH+R!Ax^2uL3l$UlFl*1W+^J z^$jol`K>;rFH=<#hTt=Hv?^1_foU&YHeaJzG}wKR$hqlMb=qsrvL_#`AEa0Z#GlS? zo-rH&_D-yh?q_^UpfjOx_HU{exM(CLS7)m!K3?Ajuv_AL+|Lej^zDYSWnZ#c;sbDL z8k(jZ$;7k@nhZ{-czl{rNbZsXS|9jAr79Ibn%kqyOr~p~5LC%Rb(JWYL zq(cynV`@(dFK@%y3SI$5bdp+fhz?278)ac&jaMel<0mE*c!N3WkT)Qy_GWuyJNyZ&Fk6jtO`} z{zmzL5KMU+`2wSP3usKg1rhHde+vyU`XsJ_Mr6G%EdU}tM8Bwnk9%|fcO)BzU2Aab z$QXBpf9DsnPXj-z9nAW?%1uY|a|n?;E23pKL~Rw22kfuT9pKgy2=y8yBXjs=Jtm9E zKn8@&+_iEUI4Kt9TLNgZC=YD$b7GVr->Nx)(v1V<5kAPrFr01knD}B+zj^fG%zwEA z)~S@=P=iZu8vni*!VR5Z?4E)qx-r11&n{<|Ye3R` z^`0n*sXqC-YNa%}c7)Y=!M2;XEykJ9)<}D;$fRTL6Q@6lo z71B4ylq}7)FK|tyP1H+>5{{BRQi`jjp_;iNv8}h^x~vYLfDPW4R6N_CZU^(z7*p@K zRnPgcfMz@W6pq zM?Ju;jK*7S<*++bPrPFlMrBeEr=<1`Up!h???_3(q?$#zhAxHIOOw1TwU#=7Vmgj| zpI*JHcmvC#L!AJqLe<-I~?u_My+7%wh0nz37`H&n;%~}IiSvxma(X{9`8g!;>fCxXc;fA-Ew!@ z_{fbE$%4?{qgHA6C!>Rx>}`e!Rr&ai#;`|3!z$~1N3Lkcp}>cNl|e4<8Z<>Q%n>oZ zQ0SI_rYMX#@qdyon2>==H&3}pDPmw)rG~5s0^LYwsEVfBASHMv`kp)|?!w>?dALrL zn-+2}rH{m)L?(fPfGnqg_zQEGKIHffD|0E5N+xBK93{g0b@1@-+HH=|PgU6nXoTFp zqHmXRW918c`J*$$8kOWW-<Z(_3mZWX6HM$Uy5vbGm-i zPEB-2rvmr+M+s(Qg_E6W#cw*LRHB*X+8gb`*o?_F*h)2&&$#*GGWN#HjA*b3&$EA@ z+mM^Y9pcS6nThmJuErg9A2X-fuDwVS&@uxaImNR{t42loqJagvkeT~*C$nOsrqx*R zFWC{`XGq@z<`Vod_kTRCuJ$};zI&4 z`S`?ZH=>c~ssO@mFur`13X_fQm=dyG9Mx>p9jFjZoO+WznU>@6`ww7y!~l=F+hHxJYMx1- zsgCFFQe<%2CWvXsl!yw^qrJtouDCxQNo_>&8<$Hw#8aYXu*W7PeP=MvO&!D{B%IOK zC%fjrxP%V1`-wv4HUa0I4|Zi{m>(3<&X^0Uw3=BM2oe{GV={g&Ab;U|;_5}WPl^?; z8aT?Rr8ik>VH}y~t)vHtbxiIIFBHE^+=FrLXf}rI41cQ84+g`n`Cnz&#uGoNO)Cq+ zOgsQewY&${Q5EaNaz5Mnuoc}5%4`~&RQ(Wjs)h$hj^Ib*Pd zKq^BT`AQ@(ZXRB1tN~-A{_BKe{((6RU5YPOJr5)2biqGeUb9LT;mU->hjs0P` zoG(44tHD;way-MJ#Bc@o=-aUJFX2Mmpho{IKhyQRRQt36mDjHK{22)f!Saqivl%Dr z*Gt455ll^^+noLI<=dMU{FJuDTCA2;G}&nid!Ke5)N=Y^ELiOjswMpnTWt!ixmXQE zyxTg3*Jr1bUN+r#Bh6f-ivd%k98Gq~&r(sX)Q0lQ(aVAn5W!c_g~9EjUgZyvhTrXD zlB*ncqk=_4Hvf&}<#FFg`(mVmh$sGU_|#weH=K!n*L&4evYDRPel#?vwJ?+ZgK9FL z4IT(wf;erxJ#sY{KixZQi%+2PP$Whj1DDIWxTdiTUa*sO0L}jXs8-qB+Ufq)YuV<> z3(Wld1>f-rlOVDj7!0PkX|vGEcX_%$%s3do1zhjOBl(~E8|{FR{ zwYO2&YfRCS(Aj?;`msG7+W1IHOGzxtFASA5KUv$8+%o5yB$-KBnR#^JbOlmQkE}+Y zgHW{gv%DLfKSSO$3_gyEw1?}>)SPYYg`9~NapYFm*-CA_Y03 zqp|O@nxo#&Iw(5`Zko`_aPKZjgCLWbE%d?7WFwuaO}k(ZI4)RGHMKztrRu#!c-H-{Qs!)AO80M z&RbLxWOXRo5*L`ln}Hyk`;}EisJCe6ZifPeaWD<>Bs^h~$7%-f$5Hor^j6_%wC7Nk zSqI*VK&hbZL%qCDUf(-pHk1`d(B*%e@>Ra#fw_B|gs?3vo#lCVv%n)2>ajCmu#p`< zqO0%37fv8O!bF}zIjBrT?mKI;i$|g|XM+znfP;s?g0`_Ouwu2SK~CvW8J+DG0F}LR z*cei8Xd)?M0cEKDD~<3<-pO#dP69(fhaAek<2_RACXT(4_+@C|$L3piny#v)Um)iy zhfHYHWbEzRA`K~MTQy5|C@TWR14@GPMZjN{t(3EY7RHpeQlA5$dbn$>p#YwR#+qnB z_73Yy0Gbz^^jF;L)!Ko)wRZc;Ud+lgrm1U0$>nmb6Y70(eeG;-T--@h~);_zp+6WyWGjvQ_;{&A@+*%G>s_qGhX?tHr{~dnESIYMVU*V zZDH#k@BS|A5X2B)pB{=1&3ib>h0m9e7Enp(v{&9u<0!=1qK-WzcxE=g(sKp}<3e-E zX_s;#{cy4}TrLiGwZ-!x)rN?j3{na!HT8^qi2DU_k{d4>xj$v41aGIwE9*zV24yM- ztusWUkPh3A-h;A?cY}}%1lk-C@uKc;ZTH_foCJnvUG^TpknO5U85Q$Gz-M2P4gT|syF$PpsX38JPl4Ygn5>yOCBM$Nbj_|??7n(~y9<}cxq<~{ zgj{@;RJ5Kd|6t{C1a(k3lP#SGo+?r=a zlOrWp##MusVGs>dijFPUGR9pYSDR}n$2by|bEr@uw+0pZxngG-^m~8D?6zC`*!hn? zzVn^$eCPZ9eBZD4`}veTo;;vY{kfrBDxUaUQyU)V7Tkq2P}WnIo`xM8pSa@gI&fDN zVB1OSHiy|Ur-I@ejxIl_rI$tv=yPTXjOB7@*^vB?9732l2u3o;C2*9I<3@fDnXk&WAdlrHFx z$y2DMxewcWDlVACI`^C1H<1opTFB0gCPOu%we*}LsiGs_VQ{?n(RR#}s5f-C4iiZ$ z`s?QXq*3$O9^cV7`~ddg&$D@O`f3+e%sM{d4dXxoEm=?)qEFeX-QC^Y)par-m(=Gx zS8d)MSFz?oRU_N7uWH^u-Z+|#68@TdJ{Ol-%90iS)7RxvAkPt(V60`*f!&>f zkvnTTjYjm^BeC07kwj&=eq<@#QtN)KkSuA()9-V~%c%{mI&fT9CCi@ov%a6z7*cLl z=vYfg3P#DaqoH;_JJH|o67OX2)38<#f*tu%oeYo~+fqRlMYdo6<)E>S{2X0Np)LU8 zWcmM=A!;eq2Y`y4zy$$@GGv7L5nH8h+C}iK-;#p&e({RQ{@kpcQ+megJyKK|Y$6#Z zo#}8v_BLwUL3Q=4vMNbQ$+kd+Qm=3u)BWmo)0{0ZVyk)jn43CNjW@Pwm1>^rF!xmv{0QH zVO|<)*kqo2YAXG3%24TV5xeSN^HGFIW9=6FpDQo3-;hT6bJ0u<16#~f(Nw-?QUAki zja%*CS>Wv8^ppGsDLq{gIx^nUmSaUw{xoXflr^*3Dhg*kqpL+t) z3kyZ!s3tV)jiCaqvf*gowiiDVgl%r|x`1huVE0~5;Dy)A*O?ENvjlUJPuxhbyx5*A z^RY%SMBgkV+|7xT5PqT7jiP|N+bVB`&{8L5=sKQ@idK1vh9dVKJ#d#@r9Z-O`dDM` zDcWXZH0$__hi2PWBbC`-+S=Mwb@6TqnT>Pes)P)E?>P1)XNNMGvVdwwLp7)BvHiwz zot&XM5fU`*#5x@~KTS{+6aCLM7Ez(;EVOsnjHjEN3Un}G3G*5VVa~l_grR%GFxIh~ zkBL=hm>w;092w1_1SqCsjPQ#5zbVfvI}hO(6JGJ)aDDcyJuG`QL&wr3lwsUUzF9%3j6#HJTS6x;uV)Ti#M1<3@Fha%_k>Je}!~ zUKws1kItK)8~)>Bl6`(OsanIQLx+ThIr5v*^B)t*xg}PbE&nLPtdo(sAW#j8!VnA$0;R@9-CL*tE8aV<&R9fcVa;#Bq zcYvVBDp@9b;^ZK-H<@4JT1ktC45$4kom$)_-bu5b?CvkHp*7nS3WVpxT8^bzjg`Y9 zVY{YH8NTD)YiP>1Zu`f)cK3)zQdj9~bjP zW@kLQD(VqtAHMv-IISmO0KFmcAcbd)o@3eFJ}dte!uiqy;)W=UNhVPg4b$IZw0;3_ z8rA~(-s|0jwY*HXrZ(M>v@4GNGt~ap=L@?TCmWT^XsZ{j1SA4(H9&I3007Lq2g+!C zCz(QgE*8sr8vw9Hpz?TaKOn*{bkLQWIm@gydZMu*DC3KcQ%1Aa<@p_+eHA$LGM^>X z^*KfbnU8~9*tF1glkx4U4b}IROc@!!1|%w(X{;Y@S@XHW!%8WiFD@MWmm_*@?FL%DTkNU{2p1)1L)^XAMzINS6)KEx(Jf}%edA_R=1P}=`bd4 zUER!jW5DN~%vpL%8WOQjn%{dR8V*6L*>OaQrRMt_TW-#I@$NSo$OVXdgWD2!YCk_uk~kmv~qnFN%Vl3u|iP(vtOL==-`R2kR+qMJgif zh9W%(`^|Q$AdwOHF4Na#{~FK(U1i&Fn^Xj2_QtKa^Z7r7(c0^y2n+yh&wif1xy(O3 zcur>)KLd}GtIE7zemEYfrG6=QK}q4ET?P5!?Yy(oLkwtBi3ZwJ&IPiBic5+f5;Lcj z#$g?>OI#`kzJ9%bjnww5ZkgX9{$`cWm|sUAnb&@bfC{%ca#4W z|#-wZgm6V)he z!+6l!+uQoc&$FkjI<>}e-JDHRzwOfR(^5N-05p_={=vuF`{ebGMwWv?U8!yWwc~`n z(S>8f#o;b^3CPb$JFyWpEvZM4HP8^?%ARf3Z@qs0Q6w9p|5H~WlT3#Jc$@%|-94XF zEk~IN8jXiu0ya{`#aTlomVru3NIQFXIaLPAUt0BtT_Tm~svR)P?s=BUDe^_iDb^Tmtcejl`=dJ*~ z@p{gnM1Sd#pscI#14wRa;xw^si}}#CqF>A8IZ@?pK#PMd-D^I+)aO9tXyt*<>j61u zm-ytrc+*0+a9g;jMbORztd-S4i54eHO=Lf5`dZdbXkH90cyX~Bn$ASrS_C>gdaYj1 zu30?ym!Iq!Z(mHk#&B5H!A*Kx07%+VLJJ8kZlS>ANg@3K5Bn+;nwGWS58bUv&cg=U z{@wZYw@rxmreoTP+G|R#3QsNiWg+?%`O3i*zEQuesW@-UoF;ktTBt<%KP8WzUX8|S z!CVBTh=HWIRdoUXW$JvlQ)Z{f8kn@qWrAr1vCX$>C?GklyhlS- z(;6<)AT$HfRNwkw1SW$Zx+dnj_c^HU<-me1Hhaj z_MFyhIE`IFF9pKGl|kDqkY3OQ^+R%3lfI^pnU+1))sM2tb7?%0bn?z(`@wirwnU-y zE-OX*6AGJ5$w=b^a`I+8yAW`te%^KR(SxlBk%W;A!;tDrN!n}kO=$H~s%DX(q!;an zG*48RC}H^&thGq8(aaxBfk!5{al1NkEP(1n$roMDk8)}|?E~+!?@bmnJX@4)lD4^xEl@oGs(wYbQ9{bCu#@5!?W0hv+4DjhCZxQk_ zFr8DtCIOdwKlN|a^^ZOUzalrjbNlA%#XE^d!Q12INkbArDarASWM3mmzjN^ChbLMs& zeAxTYF-W}J_We6%r(-Ehs6P_Y zM&K}H8X_MRK5Tw%U!N2l!=UJB;l!jQs+=jR&07NJh4%*nN$eZLFq-1>mO+eF)ZU0< z&=g-`tZ|-4)|t2?&!yw}u{Z3f2&NYfiCc7DgExg%`L?q&3sW?(e4vmOD3gP+K+d*h mgEI2Y-wDKE3v%MCmNp7TUv6OWZy8{!W0RkeWBA_5$a_CkHC`CS#m0yhK;Pvf zxB7y6vO#dAK3Ec&q-qZNeahK_3Y7fC;U_QF=v)XzH0~qv*%;*I>gk%2*F3rR&F!Ne zoE7r3O?xa8^B)B22%YN0ve7u_7Wyvl(U_^}i#qo{p+lipt zB{HT&cHetZ)m!3`y1!;xbAG{p-CQbNDTv=K(8#os%PFeegw zYhH|9E42b%*Eeaj*c7Qj*e~4*wNmZ$Hu-F3rUtXo?Oj|bMsD4!0 zSJx4xe|p#^wx7=~JcOmvu7uzEVQS?WNr&c~6W%v$!exb&T|w0Z#JIu+ zviOa68!Lqkc15w?ncEM2I5+jH;=eV&`qX1MAW1o8KX3f5~2+i>|Mdm=EbNd zQC&*8Gby&LFPwY!Jvolr66&HTN&PCYI8L=~h0sgCh}d*~q+&S3ug79)xSM~@ykeNN zr|28wJspontptu-!|VD_AC-9vPMk)OSiQ1C_K^u*48N1-{^QF=Kk}1-pjn97Xk?Mv zv!&S4@^t>h+7kSc)0ezqElZz1N*f`nwMS;MiRff(S>S|*1H}hC)1s zt*5*sc5j<|Bu&wuz3mR-;oo4Ee%~3!8+^8+*1yBo#h@+x1pFJ2`r%tN#)HNQJ+ zVEt$CVO38}$~NK$T-0KMecvxx&sKaHzQ&&{?V*$rWw#ioynQyA6jFBfIwyU~@u<>< zO_4s_M)+IK{5qyjc${xeV27BiAhG=MXD$q_ilvdK3qHtO`Y7fK94r59o)35 zxD-DQwyo&C_VqNMdT;CKY-?%jcro8j75YYtlEvv>YVUck#2G2ACQC$j{ch|%iJTOj zHw@Oi-+m-0>jvNDK*<^B{2HmM93wp~b+&l8h(>(t{a%a=GJv$QnrPWi+cC%YrleVo zA&6$A^~5yKs=cj=WTpC38#fL%CJQyYbfXH($ksH|1oPAn=Zqd-AmX3}tR_h3@gN|4 zLJ;D6Cu^_15&ck6cKEub73Ccwv#O*tCPrwR3-1(86GQ)n-j<3{a(QA}@Kpn1cG1Al z&>0lDz}yQt&g6@?Qc+mQutaCt5W_Ln&h_`i(sfol_gnfo^j+r;Gak!R+ov&BTh+_n z$I-hzcs}<4ID-%6LcBUs`aJ|itnXKWH-H^<8>xB*OBw|sj{@nE^bYt986u`*HD%Is z1Wh^2Gl`q`B$49Q)l5t_<{CZx2)JFBy23?5X?7n@F(K4NeC7vFXrlBT(vXpnQBZiP zTFT4I+uAb4)|uWx$a_1$5e#Z)z$U&^)-5+#j;wtOZW?q=4#kkS?S>D zc<$`%2sj`Lw!dF)*V<2)N^CK&y=++yr!y&CL`?6RTUglV6CqYi$?4Xn*Xsy!J5EI4 z=H}*VznhnT^5K?raLx<0U2V;#950X0?3$Vpgr`;U9@cJXMo{w42c^kows6#}Fqxf6nm+C|xyIoikltA@)oHhk0Zq zTV)+6vD)#FdB&di>_>#2zOHVO(Qt-#vsX+^4EM#(olI#Cb4x`PhjIUhXDf+*X^jz# z#%5!A@A5M}D*Q(MrI1YVpFA1JQYsV?!@>VUe*!-+ zNyYH0Xbz9y#e=QsO5g)~4UMFM?X(aDVbT!(`Gp0g+li{>mg(u~(v)f|hHb@q_bFT3 z+db#^m%1^`MMeixU!_8QY<||=a(MId<=Yq`b;*pi$x_ zXYZ)7Sa8oe(ip>1z;EyF=Cqi=RR} zSfuUdM6ty}OM7JA-cY(su6i{^tpo4IH$AZL@@Fp`yCWEZ@gV`RD18pdc+C;H2PB5ih#_Pi@f)RQ35$<lj(b;|ftjJfp!GyR9JpcjNyJQEiGh^N%uK~h;{yu0j1TyejAxX&+Ir>YgTtP$771UO3+52Ne$7Wz zd8y#Ka4XUIbWfYt0+>O9(BjEzYHSFNS_b)v@@weIs?0Sof@Z3{?nvh32fQ=FQ$v0n z<2!q$v##em`TVxl)|i6_FK8!+G-!%gm5lO(t1j~LFesDTna8K$U4(;BS)v!w^JU*} zyFEfcsLSYkY6e?n6C00avmx9+01Ae|lDkpy*f@Zbn`O#nzF!1(LEk6@qK$_Tjv>j|FEz+ z&67R%fziVx`o3floQX%Ms3~^n*Cphirp+Da8omQ-6qp(sl)TPiG8z(;`RIhesC&%g zKdd9?c*X#?rW^CY252KHCN_*Yh1oN&nldJdwx`?JnOn7ol>IGTCe=un*{u@@ojVq( z$dt!g+TNX*gVCAX?xbm84+5NQvsuy3-rke@PnZu8en~xXBQ>o?4b}CvU4qGYf$l2) zVmnRgoB z$)->)sR(Ip^2AUwwYO(c;NM13lml3;_-%Tw!*tECjY&yKx7iCzqNLMJrat4~z_4vq zdt$0TuXHdUp>#IP^!R(P%HWJx|t=#k{{u2;3^qK7-^`y5b>mD0Fz;F1aI&A>r zXn1Tv4n&@#>P|iqx8)HcUAT~9?p{3wWRfv4A0O%rj1ryb{Sb(lAP(8A4TZDWWXumP zzD>W6T`u|44+KX=R(W06Ed=*p_Jn|G2ENPlFLnga{r+PF4>hFpCZGW1T)l_=?ANzX zq@QkB9{Buxs0m)U`Pkq7MeV@17=-_e$3Sd5zgDgFKOjDkwZ2|Mapm$xS;CRl3cs07 z|2sMrMD5*IM!fjc1Zca)-oBQ}n_7RQPJjdmZz#R>VHjMhfdN&>(qa$SArwn$s5#RSFc>U2n4dm0 zI@)D(g3;Ac_|ej6MDhgWh7xxnDe8(~?bF0}a{ch}Ne*Xsysue34wSfp_}Q@I?lKmOEz{Eik1JL2}I3cfeUwtVhEm3 zTr}sc*34Bhe{bFPIw4`Y-rnj)FT`=LJm)KRAZL9gY4TtdXP<`sLcZ?;=Hlt&)7{nv zVhvkpV+jC0oX$diGX?*VB z;g)7@+Sl>Wkmco;Se8#J$)C*#>mpp%eed9dcK8AdhEAePp#E$Q=F-}X8gZ9Yw@h}Q zrej~_$)fIns=&c>>Aa>= zDih@OlJ2e~>oFJND~#IqgBCFHRQh;D(rIiUL5gKn^npO1l(e2eo$areU!hbH4xpTP zOQy8xXwBu^vDi-k3|{^LX79gnXFQ@=n~1yczjr5KA)jgJ@Aisn!uBDJF}MlWS2}85 z<3%(Dn{PN;>mH{ssht4f_aKI@L|l#%QD;2-loS^Z1X(D-e=TT11y1ykooDJE6r1z} z`U5@J&)P^bH^H>|efRTo*PqM%wZ>3e>eH@em%Z2{V$}?hgoE={ZArv%Yt`W@C^|Ky z+r+-})rB{171IZ`Zz?dUwFNE-c5(9V})((Sn`dl=&D(%;`4Fgs8pn)2?dgVI)9UE4BxGK01y4V!gj*O?W;$=}k zS=$N=co)sSRuZcV1x?gkx|u6jWxaRgUb^%{b%n3M1*5Y(m5B~}Q3Tj5HwAOGsxxG> z2O3ia1`c0)+1op1`DsXew>ck`y56%WFH!Z-R@j^14Mi>9o{l*RpTTWAm-?j!57tBK z_KCQXc$>2y(+~@p5)S)Q?_qjHB{uU4?7E(;=$x$_HH{StMDE^;scLAYnjX9IBau6y zmY03E1G!kmDK0%kGtsbwSeeL;Q7n`6sBZ48HZHp|gm!gr6c>8b?yeLXW#BPrJ%0Awh$lz8qkuf< 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ⅅ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 diff --git a/docs/sweng/legend.pu b/docs/sweng/legend.pu new file mode 100644 index 00000000000..561562b215f --- /dev/null +++ b/docs/sweng/legend.pu @@ -0,0 +1,6 @@ +@startuml legend #White +legend right + |<#TECHNOLOGY> | <#White> Existing class | + |<#PeachPuff> | <#White> New class | +endlegend +@enduml \ No newline at end of file diff --git a/docs/sweng/technical-documentation.md b/docs/sweng/technical-documentation.md index ed2ff8a4c0b..28c6aefeb71 100644 --- a/docs/sweng/technical-documentation.md +++ b/docs/sweng/technical-documentation.md @@ -47,7 +47,7 @@ For that an ArrayList will be kept and updated in accordance with the - by the u RecentSearch will keep track of previously searched for important attributes - mainly authors and titles - in separate lists and also display them in the dropdown menu at the end. -![Class Diagram](/docs/sweng/diagrams/class-diagram.png "class-diagram.png") +![Class Diagram](/docs/sweng/diagrams/class-diagram-withLegend.png "class-diagram.png") ### 5.2 Dynamics From aff9a101b20cf99a853abb2a19b3f0e5e8638a2c Mon Sep 17 00:00:00 2001 From: julianbopp Date: Wed, 17 Nov 2021 18:19:34 +0100 Subject: [PATCH 17/31] Queries now get added to RecentSearch when Searchbar loses focus Also modified RecentSearch such that empty strings do not get added to the list. --- .../jabref/gui/search/GlobalSearchBar.java | 24 ++++++++++++++----- .../org/jabref/gui/search/RecentSearch.java | 3 +++ 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/jabref/gui/search/GlobalSearchBar.java b/src/main/java/org/jabref/gui/search/GlobalSearchBar.java index 6af86a520af..8baff52d7e3 100644 --- a/src/main/java/org/jabref/gui/search/GlobalSearchBar.java +++ b/src/main/java/org/jabref/gui/search/GlobalSearchBar.java @@ -14,6 +14,8 @@ import javafx.beans.binding.BooleanBinding; import javafx.beans.property.BooleanProperty; import javafx.beans.property.SimpleBooleanProperty; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; import javafx.css.PseudoClass; import javafx.event.Event; import javafx.geometry.Insets; @@ -125,7 +127,20 @@ public GlobalSearchBar(JabRefFrame frame, StateManager stateManager, Preferences updateHintVisibility(); // Prototype DropDownMenu - dropDownMenu = new DropDownMenu(searchField, this); + this.dropDownMenu = new DropDownMenu(searchField, this); + + // Prototype RecentSearch + // Add to RecentSearch after searchbar loses focus + searchField.focusedProperty().addListener(new ChangeListener() { + @Override + public void changed(ObservableValue observable, Boolean oldValue, Boolean newValue) { + if (newValue) { + LOGGER.info("Searchbar in focus"); + } else { + dropDownMenu.recentSearch.add(searchField.getText()); + } + } + }); KeyBindingRepository keyBindingRepository = Globals.getKeyPrefs(); searchField.addEventFilter(KeyEvent.KEY_PRESSED, event -> { @@ -272,14 +287,11 @@ public void focus() { } public void performSearch() { - - LOGGER.debug("Flags: {}", searchPreferences.getSearchFlags()); +LOGGER.debug("Flags: {}", searchPreferences.getSearchFlags()); LOGGER.debug("Run search " + searchField.getText()); // Prototype DropDownMenu - if (!searchField.getText().isEmpty()) { - this.dropDownMenu.recentSearch.add(searchField.getText()); - } + // Add to RecentSearch // An empty search field should cause the search to be cleared. if (searchField.getText().isEmpty()) { diff --git a/src/main/java/org/jabref/gui/search/RecentSearch.java b/src/main/java/org/jabref/gui/search/RecentSearch.java index 3abadbe29e4..08c4c3d6cb7 100644 --- a/src/main/java/org/jabref/gui/search/RecentSearch.java +++ b/src/main/java/org/jabref/gui/search/RecentSearch.java @@ -17,6 +17,9 @@ public RecentSearch(GlobalSearchBar searchBar) { public void add(String Query) { RecentSearches.getItems().removeIf(entry -> entry.equals(Query)); + if (Query.equals("")) { + return; + } this.RecentSearches.getItems().add(Query); } From 86f2474072048ee0489bb0a7e0756b3059edd3c4 Mon Sep 17 00:00:00 2001 From: julianbopp Date: Wed, 17 Nov 2021 18:29:20 +0100 Subject: [PATCH 18/31] Fix Indentation --- src/main/java/org/jabref/gui/search/GlobalSearchBar.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/jabref/gui/search/GlobalSearchBar.java b/src/main/java/org/jabref/gui/search/GlobalSearchBar.java index 8baff52d7e3..90879eb3b5a 100644 --- a/src/main/java/org/jabref/gui/search/GlobalSearchBar.java +++ b/src/main/java/org/jabref/gui/search/GlobalSearchBar.java @@ -287,7 +287,7 @@ public void focus() { } public void performSearch() { -LOGGER.debug("Flags: {}", searchPreferences.getSearchFlags()); + LOGGER.debug("Flags: {}", searchPreferences.getSearchFlags()); LOGGER.debug("Run search " + searchField.getText()); // Prototype DropDownMenu From d6d51fe5388ba84ffc82e8d9bc9bc6bf3e4d5705 Mon Sep 17 00:00:00 2001 From: julianbopp Date: Wed, 17 Nov 2021 18:35:07 +0100 Subject: [PATCH 19/31] Remove comment --- src/main/java/org/jabref/gui/search/GlobalSearchBar.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/org/jabref/gui/search/GlobalSearchBar.java b/src/main/java/org/jabref/gui/search/GlobalSearchBar.java index 90879eb3b5a..e408b5f3902 100644 --- a/src/main/java/org/jabref/gui/search/GlobalSearchBar.java +++ b/src/main/java/org/jabref/gui/search/GlobalSearchBar.java @@ -291,7 +291,6 @@ public void performSearch() { LOGGER.debug("Run search " + searchField.getText()); // Prototype DropDownMenu - // Add to RecentSearch // An empty search field should cause the search to be cleared. if (searchField.getText().isEmpty()) { From ea67be0be9422081b70efda3ba450f3f98ed7020 Mon Sep 17 00:00:00 2001 From: Albert Date: Wed, 17 Nov 2021 19:01:29 +0100 Subject: [PATCH 20/31] Add pflichtenheft.md in doc folder --- docs/sweng/pflichtenheft.md | 172 ++++++++++++++++++++++++++++++++++++ 1 file changed, 172 insertions(+) create mode 100644 docs/sweng/pflichtenheft.md diff --git a/docs/sweng/pflichtenheft.md b/docs/sweng/pflichtenheft.md new file mode 100644 index 00000000000..80af8944172 --- /dev/null +++ b/docs/sweng/pflichtenheft.md @@ -0,0 +1,172 @@ +# Functional Specification Document "Better Search" Feature for JabRef + +## 1. Introduction + +### 1.1 Purpose + +- The open-sourced citation and reference management software JabRef is in need of a more functional global search and a user-friendly interface thereof. +- The users of JabRef should be able to conveniently search in their citations library and perform complex search querys, also via GUI. +- The goal of this project is to develop an implementation that improves upon the current library search capabilities and enables users of the JabRef software to very easily navigate their libraries. + +### 1.2 Definitions + +- JabRef: Citation and reference management software +- Lucene: Search Query Syntax +- Query: Is a request for data or information from a database table or combination of tables +- Chipview: A box design for search terms which allows easier separation +- Chips: box including a search key +- GUI: Graphical user interface +- Dropdown menu: Graphical menu which shows up below the item which triggers the menu +- Bracketing and Boost: Lucene allows for bracketing of multiple fields +- Search user interface: Main graphical user interface for the developed extension +- Complex search query: JabRef specific search query + + +### 1.3 Applications & Goals + +- "Better Search" is a feature implementation for the software JabRef. +- Target group of the JabRef software are researchers, PHD candidates, university members, students and the scientific community in general. +- An internet conneciton is not needed for this feature. +- Search queries in global search must have the same syntax as the already implemented web search. +- Search queries need to be performed reliably and without any bugs or errors. +- Improve the view of the search bar. +- Improve the use of the search bar. +- Improve the search function of the search bar. +- Improve the autocomplete function of the search bar. + +### 1.4 References +* /R00/: [https://github.com/koppor/jabref/issues/341]() + +### 1.5 Overview + +- The search user interface is a dropdown menu. +- Lucene is implemented into the global search bar. +- Autocomplete is implemented into the global search bar and shows suggestions for fields and string searches in the search user interface. +- A chipview design for the fields in the searchbar shall show the search key in separated boxes +- Search strings in the global search bar are parsed with Lucene. + + +## 2. General description + +### 2.1 Embedding + +- The searchcategoriefields from the dropdown menu can be chosen via mouseclick and added with a search key they will be used in the global searchbar. +- The globalsearchbar uses Lucene query syntax to run the search +- The global searchbar uses the internal autocompletion which propose search key results from the local database. + + +### 2.2 Functional requirements + +| Features | | | | | | +| :---: | :-: | :-: | :-: | :-: | :-: | +| MUST: | Global Search Bar | Lucene Syntax | Search User Interface | Chipview Design | Autocompletion | +| SHOULD: | Highlighting | Recent Search | + +- Lucene syntax +- Search user interface +- Chipview design +- Autocompletion +- Highlighting +- Recent search + + +### 2.3 User profile + +- For all JabRefusers in all Languages, without special knowhow. + +### 2.4 Limitations + +- Lucene has to be used for global search bar. +- Chipview is required in the search bar. +- Search bar is required to use autocomplete. + +### 2.5 Assumptions & Dependencies + +- Search bar exists and is running properly. + + +## 3. Specific requirements + +- /F00/ The global search bar functionality must be extended with new features. + - /F01/ (/F10/) The global search bar must implement a search user interface. + - /F02/ (/F20/) The global search bar must must allow for a Lucene syntax. + - /F03/ (/F30/) The global search bar must implement a chipview design for the fields and search keys. + - /F05/ (/F60/) The global search bar must implement a new button to the right which allows for a dropdown menu with recent searches. + +- /F10/ The search user interface must be implemented as dropdown menu. + - /F11/ The search user interface must popup below the search bar after clicking it. + - /F12/ The search user interface must contain all relevant fields as clickable items. + - /F13/ The search user interface must contain logical operators like OR/AND as clickable items. + - /F14/ The search user interface must close if the user clicks somewhere other than the interface itself or the global search bar. + - /F15/ The search user interface could implement a special section for recent search queries. + - /F16/ The search user interface could implement an adjustment bar with two markers left and right to limit the search for papers within a specific period of years. + - /F17/ The search bar interface could implement complex bracketing of search terms and boosting in form of clickable items. + +- /F20/ (/F00/) The Lucene query parser must be used in the global search bar. + - /F21/ The Lucene query parser must function in the same way it was implemented in the web search bar. + - /F22/ The Lucene query parser must take the complete global search string and fetch it to the complex search query. + +- /F30/ The searchbar must appear in a chipview design. +<<<<<<< HEAD + - /F31/ (/F12/) Clicking on a field must open a new chip that allows entering a search key. + - /F32/ Chips must be closable by clicking on a cross next to the keyword. + - /F33/ (/F13/) Clicking on a fiel must open a new chip for AND/OR. + - /F34/ The order of the chips should be changeable by drag and drop. + - /F35/ The cursor should jump over the seperate chips. + +- /F40/ Autocomplete completes missing characters/words in the interface. + - /F41/ JabRef users can choose from a combobox of suggested datasets + - /F42/ Autocomplete completed text is displayed in a list below the search bar and is color-coded to match the search word entered + - /F43/ Autocomplete corrects typos and overwrites them + +- /F50/ highlighting the search key. + - /F51/ highlights search keys red if not found in the global database. + +- /F60/ The recent search should be implemented as a dropdown menu. + - /F61/ A clickable item corresponding to the recent search shold be inside the searchbar. + - /F62/ When you select the clickable item it should open a dropdown menu right below the clickable item. + - /F63/ The dropdown menu should contain a list of the last used search queries. + - /F64/ Selecting a query from the list should perform a search with the selected query. + +## 4. Acceptance criteria + +- /A10/ JabRef users can search in the global searchbar by using the search user interface. +- /A20/ JabRef users can use Lucene syntax in the global search bar. +- /A30/ JabRef users gets suggestions for search (autocompletion). +- /A40/ JabRef users can see their current search keys as chips in the global search bar. +- /A50/ JabRef users gets feedback via highlighted search key. +- /A60/ JabRef users can see their recent searches in a separate dropdown menu. + + +# Apendix + +### Use-cases + +### Use Case 1: +* Name: Click on global search bar +* Stakeholders: Users of JabRef +* Preconditions: JabRef must be started +* Procedure: + * Click on the global search bar +* Postconditions: Dropdown menu shows up below the search bar with suggestions for syntax use. Last seen searches are listed. +* Postconditions exception: Dropdown menu shows up below the search bar with suggestions for syntax use. No prior searches show empty "Last searches" list + +### Use Case 2: +* Name: Make a search +* Stakeholders: Users of JabRef +* Preconditions: JabRef must be started +* Procedure: + * Click on the global search bar. + * Choose the fields you would like to search in (i.e. author, title etc.). + * Click on author field (button or text) in the interface. + * Type in the author "Beat Schmutz" into the global search bar and press ENTER. + * Click on the OR field in the interface. + * Click on the title field in the interface. + * Type in "Morphological analysis" and press ENTER. + * Click on an entry match in the main library pane. +* Postconditions: + * After selection of the author field an author field shows up in the global search bar. The cursor will be positioned to the right of this field. + * After typing in the author and selecting the OR field the position of the cursor is to the right again. + * After selecting the title field the cursor position changes to the right of this field once again. Typing in the title and pressing ENTER starts the search query which will be parsed with Lucene and passed on to the complex search query. The matched entries will show up in the main library pane. After clicking on an entry Metadata will show up; "Beat Schmutz" and "Morphological analysis" will be highlighted. +* Postconditions exception: The search finds no matching entries in the library. in this case the library pane stays empty or a pop-up could suggest that no entries were found. + From f02958118c91db5a3847c7a8b96449c5ebc8d43c Mon Sep 17 00:00:00 2001 From: Mark Joseph Starzynsi Date: Sat, 20 Nov 2021 08:09:22 +0100 Subject: [PATCH 21/31] Fix null pointer exception when clicking on empty space in recent search list --- src/main/java/org/jabref/gui/search/GlobalSearchBar.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/jabref/gui/search/GlobalSearchBar.java b/src/main/java/org/jabref/gui/search/GlobalSearchBar.java index e408b5f3902..c78b2f04789 100644 --- a/src/main/java/org/jabref/gui/search/GlobalSearchBar.java +++ b/src/main/java/org/jabref/gui/search/GlobalSearchBar.java @@ -401,7 +401,7 @@ public void updateHintVisibility() { } public void setSearchTerm(String searchTerm) { - if (searchTerm.equals(searchField.getText())) { + if (searchTerm == null || searchTerm.equals(searchField.getText())) { return; } From 71522e66128a0e95e410bf8bf91aae8d50066598 Mon Sep 17 00:00:00 2001 From: Mark Joseph Starzynsi Date: Sat, 20 Nov 2021 08:45:41 +0100 Subject: [PATCH 22/31] Fix wrong carret position when using recent search list --- src/main/java/org/jabref/gui/search/GlobalSearchBar.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/jabref/gui/search/GlobalSearchBar.java b/src/main/java/org/jabref/gui/search/GlobalSearchBar.java index c78b2f04789..f496d982d75 100644 --- a/src/main/java/org/jabref/gui/search/GlobalSearchBar.java +++ b/src/main/java/org/jabref/gui/search/GlobalSearchBar.java @@ -404,8 +404,10 @@ public void setSearchTerm(String searchTerm) { if (searchTerm == null || searchTerm.equals(searchField.getText())) { return; } - - DefaultTaskExecutor.runInJavaFXThread(() -> searchField.setText(searchTerm)); + DefaultTaskExecutor.runInJavaFXThread(() -> { + searchField.setText(searchTerm); + searchField.positionCaret(searchField.getText().length()); + }); } private static class SearchPopupSkin implements Skin> { From 59ff03c5466a4e5f5d776a56e5fc1d924c003849 Mon Sep 17 00:00:00 2001 From: Mark Joseph Starzynsi Date: Sat, 20 Nov 2021 09:08:37 +0100 Subject: [PATCH 23/31] Add carret position method --- .../java/org/jabref/gui/search/GlobalSearchBar.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/main/java/org/jabref/gui/search/GlobalSearchBar.java b/src/main/java/org/jabref/gui/search/GlobalSearchBar.java index f496d982d75..cd8dea6eca2 100644 --- a/src/main/java/org/jabref/gui/search/GlobalSearchBar.java +++ b/src/main/java/org/jabref/gui/search/GlobalSearchBar.java @@ -410,6 +410,18 @@ public void setSearchTerm(String searchTerm) { }); } + // Sets carret position in global search bar. If out of bounds carret will be positioned at the end. + public void setCarretPosition(int position) { + DefaultTaskExecutor.runInJavaFXThread(() -> { + if (position >= 0 && position < searchField.getText().length()) { + searchField.positionCaret(position); + } else { + searchField.positionCaret(searchField.getText().length()); + } + + }); + } + private static class SearchPopupSkin implements Skin> { private final AutoCompletePopup control; From 859ac831fff397c58b7d9d4c6972331940ccaf8d Mon Sep 17 00:00:00 2001 From: Mark Joseph Starzynsi Date: Sat, 20 Nov 2021 09:32:05 +0100 Subject: [PATCH 24/31] Fix checkstyle and clean up --- .../org/jabref/gui/search/DropDownMenu.java | 22 +++++++------------ 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/src/main/java/org/jabref/gui/search/DropDownMenu.java b/src/main/java/org/jabref/gui/search/DropDownMenu.java index 23a2c611162..32d4d804ce0 100644 --- a/src/main/java/org/jabref/gui/search/DropDownMenu.java +++ b/src/main/java/org/jabref/gui/search/DropDownMenu.java @@ -68,12 +68,6 @@ public DropDownMenu(CustomTextField searchField, GlobalSearchBar globalSearchBar searchbarDropDown.setContentNode(buttonBox); searchbarDropDown.setDetachable(false); // not detachable searchbarDropDown.show(searchField); -// } else if (searchbarDropDown.isShowing()) { -// searchbarDropDown.hide(); // this makes the dropdown disappear if you re-click on searchbar - } else { -// searchbarDropDown.setContentNode(buttonBox); - // this makes the drop down reappear every time you click on search bar, even if its shown already -// searchbarDropDown.show(searchField); } }); @@ -87,7 +81,7 @@ public DropDownMenu(CustomTextField searchField, GlobalSearchBar globalSearchBar }); // journalButton action - journalButton.addEventFilter(MouseEvent.MOUSE_CLICKED, event ->{ + journalButton.addEventFilter(MouseEvent.MOUSE_CLICKED, event -> { if (!isPrevAttribute(searchField)) { checkAndAddSpace(searchField); searchField.insertText(searchField.getCaretPosition(), "journal:"); @@ -96,7 +90,7 @@ public DropDownMenu(CustomTextField searchField, GlobalSearchBar globalSearchBar }); // titleButton action - titleButton.addEventFilter(MouseEvent.MOUSE_CLICKED, event ->{ + titleButton.addEventFilter(MouseEvent.MOUSE_CLICKED, event -> { if (!isPrevAttribute(searchField)) { checkAndAddSpace(searchField); searchField.insertText(searchField.getCaretPosition(), "title:"); @@ -105,7 +99,7 @@ public DropDownMenu(CustomTextField searchField, GlobalSearchBar globalSearchBar }); // yearButton action - yearButton.addEventFilter(MouseEvent.MOUSE_CLICKED, event ->{ + yearButton.addEventFilter(MouseEvent.MOUSE_CLICKED, event -> { if (!isPrevAttribute(searchField)) { checkAndAddSpace(searchField); searchField.insertText(searchField.getCaretPosition(), "year:"); @@ -114,12 +108,12 @@ public DropDownMenu(CustomTextField searchField, GlobalSearchBar globalSearchBar }); // yearRangeButton action - yearRangeButton.addEventFilter(MouseEvent.MOUSE_CLICKED, event ->{ + yearRangeButton.addEventFilter(MouseEvent.MOUSE_CLICKED, event -> { }); // andButton action - andButton.addEventFilter(MouseEvent.MOUSE_CLICKED, event ->{ + andButton.addEventFilter(MouseEvent.MOUSE_CLICKED, event -> { if (searchField.getCaretPosition() != 0) { if (!searchField.getText(searchField.getCaretPosition() - 1, searchField.getCaretPosition()).equals(" ")) { searchField.insertText(searchField.getCaretPosition(), " "); @@ -131,7 +125,7 @@ public DropDownMenu(CustomTextField searchField, GlobalSearchBar globalSearchBar }); // orButton action - orButton.addEventFilter(MouseEvent.MOUSE_CLICKED, event ->{ + orButton.addEventFilter(MouseEvent.MOUSE_CLICKED, event -> { if (searchField.getCaretPosition() != 0) { if (!searchField.getText(searchField.getCaretPosition() - 1, searchField.getCaretPosition()).equals(" ")) { searchField.insertText(searchField.getCaretPosition(), " "); @@ -143,7 +137,7 @@ public DropDownMenu(CustomTextField searchField, GlobalSearchBar globalSearchBar }); // leftBracketButton action - leftBracketButton.addEventFilter(MouseEvent.MOUSE_CLICKED, event ->{ + leftBracketButton.addEventFilter(MouseEvent.MOUSE_CLICKED, event -> { if (searchField.getCaretPosition() != 0) { if (!searchField.getText(searchField.getCaretPosition() - 1, searchField.getCaretPosition()).equals(" ")) { searchField.insertText(searchField.getCaretPosition(), " "); @@ -155,7 +149,7 @@ public DropDownMenu(CustomTextField searchField, GlobalSearchBar globalSearchBar }); // orButton action - rightBracketButton.addEventFilter(MouseEvent.MOUSE_CLICKED, event ->{ + rightBracketButton.addEventFilter(MouseEvent.MOUSE_CLICKED, event -> { if (searchField.getCaretPosition() != 0) { if (!searchField.getText(searchField.getCaretPosition() - 1, searchField.getCaretPosition()).equals(" ")) { searchField.insertText(searchField.getCaretPosition(), " "); From 46b54131e410740e35110ae092a7e36ce2e1b019 Mon Sep 17 00:00:00 2001 From: Mark Joseph Starzynsi Date: Sat, 20 Nov 2021 15:16:04 +0100 Subject: [PATCH 25/31] Add second draft SearchFieldSynchronizer --- .../org/jabref/gui/search/DropDownMenu.java | 74 ++++++---- .../jabref/gui/search/GlobalSearchBar.java | 46 ++++++- .../gui/search/SearchFieldSynchronizer.java | 126 ++++++++++++++++++ .../org/jabref/gui/search/SearchItem.java | 27 ++++ 4 files changed, 245 insertions(+), 28 deletions(-) create mode 100644 src/main/java/org/jabref/gui/search/SearchFieldSynchronizer.java create mode 100644 src/main/java/org/jabref/gui/search/SearchItem.java diff --git a/src/main/java/org/jabref/gui/search/DropDownMenu.java b/src/main/java/org/jabref/gui/search/DropDownMenu.java index 32d4d804ce0..960cb713001 100644 --- a/src/main/java/org/jabref/gui/search/DropDownMenu.java +++ b/src/main/java/org/jabref/gui/search/DropDownMenu.java @@ -23,7 +23,6 @@ public class DropDownMenu { public Button leftBracketButton; public Button rightBracketButton; public RecentSearch recentSearch; - private boolean isPrevAttribute; // private final Button articleButton; // private final Button bookButton; // private final Button citationKeyButton; @@ -31,8 +30,8 @@ public class DropDownMenu { // test buttons // private final Button testButton; - public DropDownMenu(CustomTextField searchField, GlobalSearchBar globalSearchBar) { - // Testing dropdown for searchbar + public DropDownMenu(CustomTextField searchField, GlobalSearchBar globalSearchBar, SearchFieldSynchronizer searchFieldSynchronizer) { +// SearchFieldSynchronizer searchFieldSynchronizer = new SearchFieldSynchronizer(searchField); authorButton = new Button("Author"); journalButton = new Button("Journal"); @@ -74,8 +73,10 @@ public DropDownMenu(CustomTextField searchField, GlobalSearchBar globalSearchBar // authorButton action authorButton.addEventFilter(MouseEvent.MOUSE_CLICKED, event -> { if (!isPrevAttribute(searchField)) { // checks if the search term prior is an attribute and wont queue another if so - checkAndAddSpace(searchField); // checks if there is a space prior and if not adds it - searchField.insertText(searchField.getCaretPosition(), "author:"); +// checkAndAddSpace(searchField); // checks if there is a space prior and if not adds it +// searchField.insertText(searchField.getCaretPosition(), "author:"); + searchFieldSynchronizer.addSearchItem("author:", ""); + searchField.setText(searchFieldSynchronizer.searchStringBuilder()); searchField.positionCaret(searchField.getText().length()); } }); @@ -83,8 +84,10 @@ public DropDownMenu(CustomTextField searchField, GlobalSearchBar globalSearchBar // journalButton action journalButton.addEventFilter(MouseEvent.MOUSE_CLICKED, event -> { if (!isPrevAttribute(searchField)) { - checkAndAddSpace(searchField); - searchField.insertText(searchField.getCaretPosition(), "journal:"); +// checkAndAddSpace(searchField); +// searchField.insertText(searchField.getCaretPosition(), "journal:"); + searchFieldSynchronizer.addSearchItem("journal:", ""); + searchField.setText(searchFieldSynchronizer.searchStringBuilder()); searchField.positionCaret(searchField.getText().length()); } }); @@ -92,8 +95,10 @@ public DropDownMenu(CustomTextField searchField, GlobalSearchBar globalSearchBar // titleButton action titleButton.addEventFilter(MouseEvent.MOUSE_CLICKED, event -> { if (!isPrevAttribute(searchField)) { - checkAndAddSpace(searchField); - searchField.insertText(searchField.getCaretPosition(), "title:"); +// checkAndAddSpace(searchField); +// searchField.insertText(searchField.getCaretPosition(), "title:"); + searchFieldSynchronizer.addSearchItem("title:", ""); + searchField.setText(searchFieldSynchronizer.searchStringBuilder()); searchField.positionCaret(searchField.getText().length()); } }); @@ -101,8 +106,10 @@ public DropDownMenu(CustomTextField searchField, GlobalSearchBar globalSearchBar // yearButton action yearButton.addEventFilter(MouseEvent.MOUSE_CLICKED, event -> { if (!isPrevAttribute(searchField)) { - checkAndAddSpace(searchField); - searchField.insertText(searchField.getCaretPosition(), "year:"); +// checkAndAddSpace(searchField); +// searchField.insertText(searchField.getCaretPosition(), "year:"); + searchFieldSynchronizer.addSearchItem("year:", ""); + searchField.setText(searchFieldSynchronizer.searchStringBuilder()); searchField.positionCaret(searchField.getText().length()); } }); @@ -114,26 +121,35 @@ public DropDownMenu(CustomTextField searchField, GlobalSearchBar globalSearchBar // andButton action andButton.addEventFilter(MouseEvent.MOUSE_CLICKED, event -> { - if (searchField.getCaretPosition() != 0) { - if (!searchField.getText(searchField.getCaretPosition() - 1, searchField.getCaretPosition()).equals(" ")) { - searchField.insertText(searchField.getCaretPosition(), " "); - searchField.positionCaret(searchField.getText().length()); - } + if (!isPrevOperator(searchFieldSynchronizer) && !isPrevAttribute(searchField)) { +// if (searchField.getCaretPosition() != 0) { +// if (!searchField.getText(searchField.getCaretPosition() - 1, searchField.getCaretPosition()).equals(" ")) { +// searchField.insertText(searchField.getCaretPosition(), " "); +// searchField.positionCaret(searchField.getText().length()); +// } +// } +// searchField.insertText(searchField.getCaretPosition(), "AND "); + searchFieldSynchronizer.addSearchItem("AND", ""); + searchField.setText(searchFieldSynchronizer.searchStringBuilder()); + searchField.positionCaret(searchField.getText().length()); } - searchField.insertText(searchField.getCaretPosition(), "AND "); - searchField.positionCaret(searchField.getText().length()); + }); // orButton action orButton.addEventFilter(MouseEvent.MOUSE_CLICKED, event -> { - if (searchField.getCaretPosition() != 0) { - if (!searchField.getText(searchField.getCaretPosition() - 1, searchField.getCaretPosition()).equals(" ")) { - searchField.insertText(searchField.getCaretPosition(), " "); - searchField.positionCaret(searchField.getText().length()); + if (!isPrevOperator(searchFieldSynchronizer) && !isPrevAttribute(searchField)) { + if (searchField.getCaretPosition() != 0) { + if (!searchField.getText(searchField.getCaretPosition() - 1, searchField.getCaretPosition()).equals(" ")) { + searchField.insertText(searchField.getCaretPosition(), " "); + searchField.positionCaret(searchField.getText().length()); + } } +// searchField.insertText(searchField.getCaretPosition(), "OR "); + searchFieldSynchronizer.addSearchItem("OR", ""); + searchField.setText(searchFieldSynchronizer.searchStringBuilder()); + searchField.positionCaret(searchField.getText().length()); } - searchField.insertText(searchField.getCaretPosition(), "OR "); - searchField.positionCaret(searchField.getText().length()); }); // leftBracketButton action @@ -171,12 +187,16 @@ private void checkAndAddSpace(CustomTextField searchField) { } private boolean isPrevAttribute(CustomTextField searchField) { - isPrevAttribute = false; if (searchField.getCaretPosition() != 0) { if (searchField.getText(searchField.getCaretPosition() - 1, searchField.getCaretPosition()).equals(":")) { - isPrevAttribute = true; + return true; } } - return isPrevAttribute; + return false; + } + + private boolean isPrevOperator(SearchFieldSynchronizer searchFieldSynchronizer) { + System.out.println("isPrevOperator? " + searchFieldSynchronizer.isPrevOperator()); + return searchFieldSynchronizer.isPrevOperator(); } } diff --git a/src/main/java/org/jabref/gui/search/GlobalSearchBar.java b/src/main/java/org/jabref/gui/search/GlobalSearchBar.java index cd8dea6eca2..227d98b157a 100644 --- a/src/main/java/org/jabref/gui/search/GlobalSearchBar.java +++ b/src/main/java/org/jabref/gui/search/GlobalSearchBar.java @@ -1,6 +1,7 @@ package org.jabref.gui.search; import java.lang.reflect.Field; +import java.util.ArrayList; import java.util.List; import java.util.Objects; import java.util.Optional; @@ -107,6 +108,7 @@ public class GlobalSearchBar extends HBox { private final BooleanProperty globalSearchActive = new SimpleBooleanProperty(false); private GlobalSearchResultDialog globalSearchResultDialog; + private SearchFieldSynchronizer searchFieldSynchronizer; private final DropDownMenu dropDownMenu; public GlobalSearchBar(JabRefFrame frame, StateManager stateManager, PreferencesService preferencesService, CountingUndoManager undoManager) { @@ -127,7 +129,8 @@ public GlobalSearchBar(JabRefFrame frame, StateManager stateManager, Preferences updateHintVisibility(); // Prototype DropDownMenu - this.dropDownMenu = new DropDownMenu(searchField, this); + this.searchFieldSynchronizer = new SearchFieldSynchronizer(searchField); + this.dropDownMenu = new DropDownMenu(searchField, this, searchFieldSynchronizer); // Prototype RecentSearch // Add to RecentSearch after searchbar loses focus @@ -144,6 +147,7 @@ public void changed(ObservableValue observable, Boolean oldVa KeyBindingRepository keyBindingRepository = Globals.getKeyPrefs(); searchField.addEventFilter(KeyEvent.KEY_PRESSED, event -> { + Optional keyBinding = keyBindingRepository.mapToKeyBinding(event); if (keyBinding.isPresent()) { if (keyBinding.get().equals(KeyBinding.CLOSE)) { @@ -155,6 +159,12 @@ public void changed(ObservableValue observable, Boolean oldVa } }); + // Listens to global search bar textfield changes and updates searchItemList in searchFieldSynchronizer + searchField.textProperty().addListener((observable, oldValue, newValue) -> { +// System.out.println("textfield changed from " + oldValue + " to " + newValue); + searchFieldSynchronizer.updateSearchItemList(textFieldToList()); + }); + ClipBoardManager.addX11Support(searchField); regularExpressionButton = IconTheme.JabRefIcons.REG_EX.asToggleButton(); @@ -215,6 +225,40 @@ public void changed(ObservableValue observable, Boolean oldVa this.stateManager.activeDatabaseProperty().addListener((obs, oldValue, newValue) -> stateManager.activeSearchQueryProperty().get().ifPresent(this::updateSearchResultsForQuery)); } + private ArrayList textFieldToList() { + String str = searchField.getText(); + String[]words = str.split("(?<=:)|\\ "); + ArrayList list = new ArrayList<>(); + +// // ARRAY TEST +// System.out.print("Textfeld Array: "); +// for (String word : words) { +// System.out.print(word + " | "); +// } +// System.out.println(); + + for (int i = 0; i < words.length; i++) { + if (words[i].startsWith("\"")) { + if (words[i + 1] != null && words[i + 1].endsWith("\"") && !words[i].endsWith(":")) { + String str2 = words[i] + " " + words[i + 1]; + list.add(str2); + i++; + } + } else { + list.add(words[i]); + } + } + + // TEXTFELD TEST + System.out.print("Textfeld Liste: "); + for (String word : list) { + System.out.print(word + " | "); + } + System.out.println(); + + return list; + } + private void updateSearchResultsForQuery(SearchQuery query) { updateResults(this.stateManager.getSearchResultSize().intValue(), SearchDescribers.getSearchDescriberFor(query).getDescription(), query.isGrammarBasedSearch()); diff --git a/src/main/java/org/jabref/gui/search/SearchFieldSynchronizer.java b/src/main/java/org/jabref/gui/search/SearchFieldSynchronizer.java new file mode 100644 index 00000000000..dc6bec75704 --- /dev/null +++ b/src/main/java/org/jabref/gui/search/SearchFieldSynchronizer.java @@ -0,0 +1,126 @@ +package org.jabref.gui.search; + +import java.util.ArrayList; + +import javafx.collections.FXCollections; +import javafx.collections.ListChangeListener; +import javafx.collections.ObservableList; + +import com.jfoenix.controls.JFXChipView; +import org.controlsfx.control.textfield.CustomTextField; + +public class SearchFieldSynchronizer { + ObservableList searchItemList = FXCollections.observableList(new ArrayList<>()); + String searchString; + + public SearchFieldSynchronizer(CustomTextField searchField) { + searchItemList.addListener(new ListChangeListener() { + @Override + public void onChanged(Change c) { +// synchronize(chipView); + + } + }); + } + + public void addSearchItem(String itemType, String item) { + SearchItem newItem = new SearchItem(itemType, item); +// if (isValid(newItem)) { + searchItemList.add(newItem); +// } + } + + public boolean isPrevAttribute() { + if (searchItemList.isEmpty()) { + return false; + } + return searchItemList.get(searchItemList.size() - 1).getItemType().equals("attribute"); + } + + public boolean isPrevOperator() { + if (searchItemList.isEmpty()) { + return true; // no previous operator technically, but search shouldnt start with an operator + } + return searchItemList.get(searchItemList.size() - 1).getItemType().equals("OR") || searchItemList.get(searchItemList.size() - 1).getItemType().equals("AND"); + } + + public boolean isPrevBracket() { + return searchItemList.get(searchItemList.size() - 1).getItemType().equals("bracket"); + } + + public boolean isValid(SearchItem newItem) { + if (searchItemList.size() != 0) { + return switch (newItem.getItemType()) { + case "attribute" -> !(isPrevAttribute()); + case "logicalOperator" -> !(isPrevOperator()); + case "bracket" -> !(isPrevBracket()); + default -> false; + }; + } else { + return true; + } + } + + public void synchronize(JFXChipView chipView) { + chipView.getChips().removeAll(); + chipView.getChips().addAll(searchItemList); + + } + + public String searchStringBuilder() { + StringBuilder str = new StringBuilder(); + + for (SearchItem current : searchItemList) { + if (!str.isEmpty()) { + str.append(" "); + } + if (current.getItemType().endsWith(":")) { + str.append(current.getItemType()); + str.append(current.getItem()); + } else { + str.append(current.getItemType()); + } + } + searchString = str.toString(); +// System.out.println("searchStringBuilder: " + searchString); + return searchString; + } + + // Takes a string, splits it up into attributes, search strings and operators. Updates search item list. + public void updateSearchItemList(ArrayList list) { + searchItemList.clear(); + if (!list.isEmpty()) { + for (int i = 0; i < list.size(); i++) { + if (list.get(i).endsWith(":")) { + if (i + 1 != list.size()) { // ensures item is not last element in list + searchItemList.add(new SearchItem(list.get(i), list.get(i + 1))); + i++; + } else { + searchItemList.add(new SearchItem(list.get(i), "")); + } +// } else if (list.get(i).equals("AND")) { +// searchItemList.add(new SearchItem("AND", "")); +// } else if (list.get(i).equals("OR")) { +// searchItemList.add(new SearchItem("OR", "")); + } else { + searchItemList.add(new SearchItem(list.get(i), "")); + } + } + searchStringBuilder(); + } + } + + public String getSearchString() { + return searchString; + } + +// public String getLastItem() { +// SearchItem item = searchItemList.get(searchItemList.size() - 1); +// String lastItem = item.getItemType(); +// +// if (lastItem.endsWith(":")) { +// +// } +// } + +} diff --git a/src/main/java/org/jabref/gui/search/SearchItem.java b/src/main/java/org/jabref/gui/search/SearchItem.java new file mode 100644 index 00000000000..ab58975cb47 --- /dev/null +++ b/src/main/java/org/jabref/gui/search/SearchItem.java @@ -0,0 +1,27 @@ +package org.jabref.gui.search; + +public class SearchItem { + private String itemType; + private String item; + + public SearchItem(String itemType, String item) { + this.itemType = itemType; + this.item = item; + } + + public String getItemType() { + return itemType; + } + + public void setItemType(String itemType) { + this.itemType = itemType; + } + + public String getItem() { + return item; + } + + public void setItem(String item) { + this.item = item; + } +} From c1f2a9d55802919330aa29d350733b08445a8108 Mon Sep 17 00:00:00 2001 From: Mark Joseph Starzynsi Date: Sat, 20 Nov 2021 15:51:06 +0100 Subject: [PATCH 26/31] Fix spacing issue in search bar --- .../org/jabref/gui/search/SearchFieldSynchronizer.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/jabref/gui/search/SearchFieldSynchronizer.java b/src/main/java/org/jabref/gui/search/SearchFieldSynchronizer.java index dc6bec75704..13db08be7b1 100644 --- a/src/main/java/org/jabref/gui/search/SearchFieldSynchronizer.java +++ b/src/main/java/org/jabref/gui/search/SearchFieldSynchronizer.java @@ -71,18 +71,23 @@ public String searchStringBuilder() { StringBuilder str = new StringBuilder(); for (SearchItem current : searchItemList) { + boolean isLogicalOp = current.getItemType().equals("OR") || current.getItemType().equals("AND"); +// || current.getItemType().equals("title:") || current.getItemType().equals("year:"); if (!str.isEmpty()) { str.append(" "); } if (current.getItemType().endsWith(":")) { str.append(current.getItemType()); str.append(current.getItem()); + } else if (isLogicalOp && (current == searchItemList.get(searchItemList.size() - 1))) { + str.append(current.getItemType()); + str.append(" "); } else { str.append(current.getItemType()); } } searchString = str.toString(); -// System.out.println("searchStringBuilder: " + searchString); + System.out.println("searchStringBuilder: " + searchString); return searchString; } From 64eeefbe94736d62b7b58c3304d57821b573f204 Mon Sep 17 00:00:00 2001 From: Mark Joseph Starzynsi Date: Sat, 20 Nov 2021 19:39:50 +0100 Subject: [PATCH 27/31] Fix but where quote marks caused an exception Added missing statement in case quote mark is the last character and has no search input. --- src/main/java/org/jabref/gui/search/GlobalSearchBar.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/jabref/gui/search/GlobalSearchBar.java b/src/main/java/org/jabref/gui/search/GlobalSearchBar.java index 227d98b157a..b5400a3537f 100644 --- a/src/main/java/org/jabref/gui/search/GlobalSearchBar.java +++ b/src/main/java/org/jabref/gui/search/GlobalSearchBar.java @@ -239,10 +239,13 @@ private ArrayList textFieldToList() { for (int i = 0; i < words.length; i++) { if (words[i].startsWith("\"")) { - if (words[i + 1] != null && words[i + 1].endsWith("\"") && !words[i].endsWith(":")) { + boolean isWordAfterwards = i + 1 < words.length; + if (isWordAfterwards && words[i + 1].endsWith("\"") && !words[i].endsWith(":")) { String str2 = words[i] + " " + words[i + 1]; list.add(str2); i++; + } else { + list.add(words[i]); } } else { list.add(words[i]); From 60f1a54eb3ca14ea513ea9b700a739f55a45daf5 Mon Sep 17 00:00:00 2001 From: Mark Joseph Starzynsi Date: Sat, 20 Nov 2021 20:19:15 +0100 Subject: [PATCH 28/31] Search uses OR operator as default now --- .../java/org/jabref/gui/search/DropDownMenu.java | 12 ++++++++++++ .../java/org/jabref/gui/search/GlobalSearchBar.java | 2 ++ 2 files changed, 14 insertions(+) diff --git a/src/main/java/org/jabref/gui/search/DropDownMenu.java b/src/main/java/org/jabref/gui/search/DropDownMenu.java index 960cb713001..e85c44aab87 100644 --- a/src/main/java/org/jabref/gui/search/DropDownMenu.java +++ b/src/main/java/org/jabref/gui/search/DropDownMenu.java @@ -75,6 +75,9 @@ public DropDownMenu(CustomTextField searchField, GlobalSearchBar globalSearchBar if (!isPrevAttribute(searchField)) { // checks if the search term prior is an attribute and wont queue another if so // checkAndAddSpace(searchField); // checks if there is a space prior and if not adds it // searchField.insertText(searchField.getCaretPosition(), "author:"); + if (!isPrevOperator(searchFieldSynchronizer)) { + searchFieldSynchronizer.addSearchItem("OR", ""); // add OR search by default + } searchFieldSynchronizer.addSearchItem("author:", ""); searchField.setText(searchFieldSynchronizer.searchStringBuilder()); searchField.positionCaret(searchField.getText().length()); @@ -86,6 +89,9 @@ public DropDownMenu(CustomTextField searchField, GlobalSearchBar globalSearchBar if (!isPrevAttribute(searchField)) { // checkAndAddSpace(searchField); // searchField.insertText(searchField.getCaretPosition(), "journal:"); + if (!isPrevOperator(searchFieldSynchronizer)) { + searchFieldSynchronizer.addSearchItem("OR", ""); // add OR search by default + } searchFieldSynchronizer.addSearchItem("journal:", ""); searchField.setText(searchFieldSynchronizer.searchStringBuilder()); searchField.positionCaret(searchField.getText().length()); @@ -97,6 +103,9 @@ public DropDownMenu(CustomTextField searchField, GlobalSearchBar globalSearchBar if (!isPrevAttribute(searchField)) { // checkAndAddSpace(searchField); // searchField.insertText(searchField.getCaretPosition(), "title:"); + if (!isPrevOperator(searchFieldSynchronizer)) { + searchFieldSynchronizer.addSearchItem("OR", ""); // add OR search by default + } searchFieldSynchronizer.addSearchItem("title:", ""); searchField.setText(searchFieldSynchronizer.searchStringBuilder()); searchField.positionCaret(searchField.getText().length()); @@ -108,6 +117,9 @@ public DropDownMenu(CustomTextField searchField, GlobalSearchBar globalSearchBar if (!isPrevAttribute(searchField)) { // checkAndAddSpace(searchField); // searchField.insertText(searchField.getCaretPosition(), "year:"); + if (!isPrevOperator(searchFieldSynchronizer)) { + searchFieldSynchronizer.addSearchItem("OR", ""); // add OR search by default + } searchFieldSynchronizer.addSearchItem("year:", ""); searchField.setText(searchFieldSynchronizer.searchStringBuilder()); searchField.positionCaret(searchField.getText().length()); diff --git a/src/main/java/org/jabref/gui/search/GlobalSearchBar.java b/src/main/java/org/jabref/gui/search/GlobalSearchBar.java index b5400a3537f..acbee259463 100644 --- a/src/main/java/org/jabref/gui/search/GlobalSearchBar.java +++ b/src/main/java/org/jabref/gui/search/GlobalSearchBar.java @@ -227,6 +227,8 @@ public void changed(ObservableValue observable, Boolean oldVa private ArrayList textFieldToList() { String str = searchField.getText(); + // splits a string "author:luh AND year:2013 OR author:\"lee smith\"" into + // [author:] [luh] [AND] [year:] [2013] [OR] [author:] ["lee smith"] String[]words = str.split("(?<=:)|\\ "); ArrayList list = new ArrayList<>(); From 2f477bc0e986a7757f0a801267a283ab61d7225a Mon Sep 17 00:00:00 2001 From: Mark Joseph Starzynsi Date: Sun, 21 Nov 2021 08:17:33 +0100 Subject: [PATCH 29/31] Correct func-spec/tec documentation and remove early draft --- .../functional-specification-document.md | 42 ++--- docs/sweng/pflichtenheft.md | 172 ------------------ docs/sweng/technical-documentation.md | 8 +- 3 files changed, 25 insertions(+), 197 deletions(-) delete mode 100644 docs/sweng/pflichtenheft.md diff --git a/docs/sweng/functional-specification-document.md b/docs/sweng/functional-specification-document.md index fab27fe82c0..4ffe3175af8 100644 --- a/docs/sweng/functional-specification-document.md +++ b/docs/sweng/functional-specification-document.md @@ -6,28 +6,29 @@ - The open-sourced citation and reference management software JabRef is in need of a more functional global search and a user-friendly interface thereof. - The users of JabRef should be able to conveniently search in their citations library and perform complex search querys, also via GUI. -- The goal of this project is to develop an implementation that improves upon the current library search capabilities and enables users of the JabRef software to very easily navigate their libraries. +- The main purpose of this feature is to add a UI for the global search bar. ### 1.2 Definitions -- Bracketing and Boost: Lucene allows for bracketing of multiple fields +- Bracketing: Lucene allows for bracketing of multiple fields - Chipview: A box design for search terms which allows easier separation -- Chips: boxes including a search key +- Chips: A box in the ChipView. May contain search words, Boolean operators, ... - Complex search query: JabRef specific search query - Dropdown menu: Graphical menu which shows up below the item which triggers the menu - GUI: Graphical user interface - JabRef: Citation and reference management software -- Lucene: Open-source search engine library +- Lucene: Open-source search engine library. [More details](http://www.lucenetutorial.com/lucene-query-syntax.html) - Query: Is a request for data or information from a database table or combination of tables +- Search field: The textfield from the global search bar. - Search user interface: Main graphical user interface for the developed extension - Search key: Every search string typed into the global search bar which isn't a field. Search strings are separated by spaces in general but can be extended to more than one word by enclosing the search term within "". ### 1.3 Applications & Goals - "Better Search" is a feature implementation for the software JabRef. -- Target group of the JabRef software are researchers, PHD candidates, university members, students and the scientific community in general. +- Target group of the JabRef software are researchers, PhD candidates, university members, students and the scientific community in general. - An internet connection is not needed for this feature. -- Search queries in global search must have the same syntax as the already implemented web search. +- Search queries in global search should have the same syntax as the already implemented web search. - Search queries need to be performed reliably and without any bugs or errors. - Improve the view of the search bar. - Improve the use of the search bar. @@ -35,14 +36,14 @@ - Improve the autocomplete function of the search bar. ### 1.4 References -* /R00/: [https://github.com/koppor/jabref/issues/341]() +* /R00/: ### 1.5 Overview -- The search user interface is a dropdown menu. +- The search user interface is activated upon click on the search term in the search box. - Autocomplete is implemented into the global search bar and shows suggestions for fields and string searches in the search user interface. - A chipview design for the fields in the global search bar shall show the search key in separated boxes. -- Search strings in the global search bar are already parsed with Lucene. +- Search strings in the search field are already parsed with Lucene. ## 2. General description @@ -50,15 +51,15 @@ ### 2.1 Embedding - The search category fields from the dropdown menu can be chosen via mouseclick and added with a search key, they will be used in the global search bar. -- The global search bar uses Lucene query syntax to run the search. -- The global search bar uses the internal autocompletion which proposes search key results from the local database. +- The search field uses Lucene query syntax to run the search. +- The search field uses the internal autocompletion which proposes search key results from the local database. ### 2.2 Functional requirements -| Features | | | | | | -| :---: | :-: | :-: | :-: | :-: | :-: | -| MUST: | Global Search Bar | Lucene Syntax | Search User Interface | Chipview Design | Autocompletion | +| Features | | | | +| :---: | :---: | :---: | :---: | +| MUST: | Search User Interface | Chipview Design | Autocompletion | | SHOULD: | Highlighting | Recent Search | - Lucene syntax @@ -68,18 +69,16 @@ - Highlighting - Recent search - ### 2.3 User profile -- For all JabRefusers in all Languages, without special knowhow. -- Target group of the JabRef software are researchers, PHD candidates, university members, students and the scientific community in general. +- All JabRef users with basic know-how in field-based search. +- Target group of the JabRef software are researchers, PhD candidates, university members, students and the scientific community in general. - For all supported operating systems (Linux, OS, Windows) ### 2.4 Limitations - Lucene has to be used for global search bar. -- Chipview is required in the search bar. -- Search bar is required to use autocomplete. +- The speed of query evaluation depends on the current JabRef implementation and won't be altered. ### 2.5 Assumptions & Dependencies @@ -119,8 +118,7 @@ - /F42/ Words suggested by autocomplete should be color-coded in the suggestions. - /F43/ Autocomplete could correct typos and overwrite them. -- /F50/ Highlighting the search key after a search properly should be implemented into JabRef. - - /F51/ Search keys should be highlighted red if not found in the global database. +- /F50/ Red highlighting could be implemented for the search field if the search syntax is not valid. - /F60/ The recent search should be implemented as a dropdown menu. - /F61/ A clickable item corresponding to the recent search should be inside the global search bar. @@ -169,5 +167,5 @@ * After selection of the author field an author field shows up in the global search bar. The cursor will be positioned to the right of this field. * After typing in the author and selecting the OR field the position of the cursor is to the right again. * After selecting the title field the cursor position changes to the right of this field once again. Typing in the title and pressing ENTER starts the search query which will be parsed with Lucene and passed on to the complex search query. The matched entries will show up in the main library pane. After clicking on an entry Metadata will show up; "Beat Schmutz" and "Morphological analysis" will be highlighted. -* Postconditions exception: The search finds no matching entries in the library. in this case the library pane stays empty or a pop-up could suggest that no entries were found. +* Postconditions exception: The search finds no matching entries in the library. in this case the library pane stays empty. diff --git a/docs/sweng/pflichtenheft.md b/docs/sweng/pflichtenheft.md deleted file mode 100644 index 80af8944172..00000000000 --- a/docs/sweng/pflichtenheft.md +++ /dev/null @@ -1,172 +0,0 @@ -# Functional Specification Document "Better Search" Feature for JabRef - -## 1. Introduction - -### 1.1 Purpose - -- The open-sourced citation and reference management software JabRef is in need of a more functional global search and a user-friendly interface thereof. -- The users of JabRef should be able to conveniently search in their citations library and perform complex search querys, also via GUI. -- The goal of this project is to develop an implementation that improves upon the current library search capabilities and enables users of the JabRef software to very easily navigate their libraries. - -### 1.2 Definitions - -- JabRef: Citation and reference management software -- Lucene: Search Query Syntax -- Query: Is a request for data or information from a database table or combination of tables -- Chipview: A box design for search terms which allows easier separation -- Chips: box including a search key -- GUI: Graphical user interface -- Dropdown menu: Graphical menu which shows up below the item which triggers the menu -- Bracketing and Boost: Lucene allows for bracketing of multiple fields -- Search user interface: Main graphical user interface for the developed extension -- Complex search query: JabRef specific search query - - -### 1.3 Applications & Goals - -- "Better Search" is a feature implementation for the software JabRef. -- Target group of the JabRef software are researchers, PHD candidates, university members, students and the scientific community in general. -- An internet conneciton is not needed for this feature. -- Search queries in global search must have the same syntax as the already implemented web search. -- Search queries need to be performed reliably and without any bugs or errors. -- Improve the view of the search bar. -- Improve the use of the search bar. -- Improve the search function of the search bar. -- Improve the autocomplete function of the search bar. - -### 1.4 References -* /R00/: [https://github.com/koppor/jabref/issues/341]() - -### 1.5 Overview - -- The search user interface is a dropdown menu. -- Lucene is implemented into the global search bar. -- Autocomplete is implemented into the global search bar and shows suggestions for fields and string searches in the search user interface. -- A chipview design for the fields in the searchbar shall show the search key in separated boxes -- Search strings in the global search bar are parsed with Lucene. - - -## 2. General description - -### 2.1 Embedding - -- The searchcategoriefields from the dropdown menu can be chosen via mouseclick and added with a search key they will be used in the global searchbar. -- The globalsearchbar uses Lucene query syntax to run the search -- The global searchbar uses the internal autocompletion which propose search key results from the local database. - - -### 2.2 Functional requirements - -| Features | | | | | | -| :---: | :-: | :-: | :-: | :-: | :-: | -| MUST: | Global Search Bar | Lucene Syntax | Search User Interface | Chipview Design | Autocompletion | -| SHOULD: | Highlighting | Recent Search | - -- Lucene syntax -- Search user interface -- Chipview design -- Autocompletion -- Highlighting -- Recent search - - -### 2.3 User profile - -- For all JabRefusers in all Languages, without special knowhow. - -### 2.4 Limitations - -- Lucene has to be used for global search bar. -- Chipview is required in the search bar. -- Search bar is required to use autocomplete. - -### 2.5 Assumptions & Dependencies - -- Search bar exists and is running properly. - - -## 3. Specific requirements - -- /F00/ The global search bar functionality must be extended with new features. - - /F01/ (/F10/) The global search bar must implement a search user interface. - - /F02/ (/F20/) The global search bar must must allow for a Lucene syntax. - - /F03/ (/F30/) The global search bar must implement a chipview design for the fields and search keys. - - /F05/ (/F60/) The global search bar must implement a new button to the right which allows for a dropdown menu with recent searches. - -- /F10/ The search user interface must be implemented as dropdown menu. - - /F11/ The search user interface must popup below the search bar after clicking it. - - /F12/ The search user interface must contain all relevant fields as clickable items. - - /F13/ The search user interface must contain logical operators like OR/AND as clickable items. - - /F14/ The search user interface must close if the user clicks somewhere other than the interface itself or the global search bar. - - /F15/ The search user interface could implement a special section for recent search queries. - - /F16/ The search user interface could implement an adjustment bar with two markers left and right to limit the search for papers within a specific period of years. - - /F17/ The search bar interface could implement complex bracketing of search terms and boosting in form of clickable items. - -- /F20/ (/F00/) The Lucene query parser must be used in the global search bar. - - /F21/ The Lucene query parser must function in the same way it was implemented in the web search bar. - - /F22/ The Lucene query parser must take the complete global search string and fetch it to the complex search query. - -- /F30/ The searchbar must appear in a chipview design. -<<<<<<< HEAD - - /F31/ (/F12/) Clicking on a field must open a new chip that allows entering a search key. - - /F32/ Chips must be closable by clicking on a cross next to the keyword. - - /F33/ (/F13/) Clicking on a fiel must open a new chip for AND/OR. - - /F34/ The order of the chips should be changeable by drag and drop. - - /F35/ The cursor should jump over the seperate chips. - -- /F40/ Autocomplete completes missing characters/words in the interface. - - /F41/ JabRef users can choose from a combobox of suggested datasets - - /F42/ Autocomplete completed text is displayed in a list below the search bar and is color-coded to match the search word entered - - /F43/ Autocomplete corrects typos and overwrites them - -- /F50/ highlighting the search key. - - /F51/ highlights search keys red if not found in the global database. - -- /F60/ The recent search should be implemented as a dropdown menu. - - /F61/ A clickable item corresponding to the recent search shold be inside the searchbar. - - /F62/ When you select the clickable item it should open a dropdown menu right below the clickable item. - - /F63/ The dropdown menu should contain a list of the last used search queries. - - /F64/ Selecting a query from the list should perform a search with the selected query. - -## 4. Acceptance criteria - -- /A10/ JabRef users can search in the global searchbar by using the search user interface. -- /A20/ JabRef users can use Lucene syntax in the global search bar. -- /A30/ JabRef users gets suggestions for search (autocompletion). -- /A40/ JabRef users can see their current search keys as chips in the global search bar. -- /A50/ JabRef users gets feedback via highlighted search key. -- /A60/ JabRef users can see their recent searches in a separate dropdown menu. - - -# Apendix - -### Use-cases - -### Use Case 1: -* Name: Click on global search bar -* Stakeholders: Users of JabRef -* Preconditions: JabRef must be started -* Procedure: - * Click on the global search bar -* Postconditions: Dropdown menu shows up below the search bar with suggestions for syntax use. Last seen searches are listed. -* Postconditions exception: Dropdown menu shows up below the search bar with suggestions for syntax use. No prior searches show empty "Last searches" list - -### Use Case 2: -* Name: Make a search -* Stakeholders: Users of JabRef -* Preconditions: JabRef must be started -* Procedure: - * Click on the global search bar. - * Choose the fields you would like to search in (i.e. author, title etc.). - * Click on author field (button or text) in the interface. - * Type in the author "Beat Schmutz" into the global search bar and press ENTER. - * Click on the OR field in the interface. - * Click on the title field in the interface. - * Type in "Morphological analysis" and press ENTER. - * Click on an entry match in the main library pane. -* Postconditions: - * After selection of the author field an author field shows up in the global search bar. The cursor will be positioned to the right of this field. - * After typing in the author and selecting the OR field the position of the cursor is to the right again. - * After selecting the title field the cursor position changes to the right of this field once again. Typing in the title and pressing ENTER starts the search query which will be parsed with Lucene and passed on to the complex search query. The matched entries will show up in the main library pane. After clicking on an entry Metadata will show up; "Beat Schmutz" and "Morphological analysis" will be highlighted. -* Postconditions exception: The search finds no matching entries in the library. in this case the library pane stays empty or a pop-up could suggest that no entries were found. - diff --git a/docs/sweng/technical-documentation.md b/docs/sweng/technical-documentation.md index 28c6aefeb71..a7bcd3f1663 100644 --- a/docs/sweng/technical-documentation.md +++ b/docs/sweng/technical-documentation.md @@ -1,14 +1,16 @@ # Technical Documentation -| Project Overview | | | | | | -| :---: | :-: | :-: | :-: | :-: | :-: | +| Project Overview | | | | | | +| :---: | :---: | :---: | :---: | :---: | :---: | | Version | Project Name | Authors | Status | Date | Comment | -| 0.1 | Better Search | MS, DM, JB, AJ | In Progress | 10.11.2021 | +| 0.1 | Better Search | MS, DM, JB, AJ | In Progress | 2021-11-20 | | | Project Members | | | | | :---: | :---: | :---: | :---: | | Julian Bopp | Albert Jasari | Daniel Madoery | Mark Starzynski + + ## 1 Introduction ### 1.1 Purpose From a39a32e41278beef35f90c28080ba414eb53537e Mon Sep 17 00:00:00 2001 From: Mark Joseph Starzynsi Date: Sun, 21 Nov 2021 10:50:37 +0100 Subject: [PATCH 30/31] Add some draft comments to key functions for better understanding. --- src/main/java/org/jabref/gui/search/DropDownMenu.java | 9 +++++++-- .../org/jabref/gui/search/SearchFieldSynchronizer.java | 7 +++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/jabref/gui/search/DropDownMenu.java b/src/main/java/org/jabref/gui/search/DropDownMenu.java index e85c44aab87..a2fdc780cf4 100644 --- a/src/main/java/org/jabref/gui/search/DropDownMenu.java +++ b/src/main/java/org/jabref/gui/search/DropDownMenu.java @@ -59,6 +59,9 @@ public DropDownMenu(CustomTextField searchField, GlobalSearchBar globalSearchBar mainBox.setMinWidth(searchField.getWidth()); Node buttonBox = mainBox; + // TODO currently double click necessary to click out of focus (for dropdown and searchfield); + // preferred is one click + searchField.addEventFilter(MouseEvent.MOUSE_CLICKED, event -> { if (searchbarDropDown == null || !searchbarDropDown.isShowing()) { searchbarDropDown = new PopOver(buttonBox); @@ -165,6 +168,7 @@ public DropDownMenu(CustomTextField searchField, GlobalSearchBar globalSearchBar }); // leftBracketButton action + // TODO implement searchfieldsynchronizer class leftBracketButton.addEventFilter(MouseEvent.MOUSE_CLICKED, event -> { if (searchField.getCaretPosition() != 0) { if (!searchField.getText(searchField.getCaretPosition() - 1, searchField.getCaretPosition()).equals(" ")) { @@ -176,7 +180,8 @@ public DropDownMenu(CustomTextField searchField, GlobalSearchBar globalSearchBar searchField.positionCaret(searchField.getText().length()); }); - // orButton action + // rightBracketButton action + // TODO implement searchfieldsynchronizer class rightBracketButton.addEventFilter(MouseEvent.MOUSE_CLICKED, event -> { if (searchField.getCaretPosition() != 0) { if (!searchField.getText(searchField.getCaretPosition() - 1, searchField.getCaretPosition()).equals(" ")) { @@ -208,7 +213,7 @@ private boolean isPrevAttribute(CustomTextField searchField) { } private boolean isPrevOperator(SearchFieldSynchronizer searchFieldSynchronizer) { - System.out.println("isPrevOperator? " + searchFieldSynchronizer.isPrevOperator()); +// System.out.println("isPrevOperator? " + searchFieldSynchronizer.isPrevOperator()); return searchFieldSynchronizer.isPrevOperator(); } } diff --git a/src/main/java/org/jabref/gui/search/SearchFieldSynchronizer.java b/src/main/java/org/jabref/gui/search/SearchFieldSynchronizer.java index 13db08be7b1..8d206ac6a01 100644 --- a/src/main/java/org/jabref/gui/search/SearchFieldSynchronizer.java +++ b/src/main/java/org/jabref/gui/search/SearchFieldSynchronizer.java @@ -67,6 +67,7 @@ public void synchronize(JFXChipView chipView) { } + // -> searchItemList parsed to textField; used with button press public String searchStringBuilder() { StringBuilder str = new StringBuilder(); @@ -91,6 +92,8 @@ public String searchStringBuilder() { return searchString; } + // TODO rework of searchItem class + // -> textField parsed to searchItemList; used with textField input // Takes a string, splits it up into attributes, search strings and operators. Updates search item list. public void updateSearchItemList(ArrayList list) { searchItemList.clear(); @@ -103,10 +106,6 @@ public void updateSearchItemList(ArrayList list) { } else { searchItemList.add(new SearchItem(list.get(i), "")); } -// } else if (list.get(i).equals("AND")) { -// searchItemList.add(new SearchItem("AND", "")); -// } else if (list.get(i).equals("OR")) { -// searchItemList.add(new SearchItem("OR", "")); } else { searchItemList.add(new SearchItem(list.get(i), "")); } From 9658d529afd705a04092e85a45fa674de5c5ba9a Mon Sep 17 00:00:00 2001 From: josphstar <56582837+josphstar@users.noreply.github.com> Date: Sun, 21 Nov 2021 11:12:52 +0100 Subject: [PATCH 31/31] Update link to functional-specification-doc.md --- docs/sweng/technical-documentation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sweng/technical-documentation.md b/docs/sweng/technical-documentation.md index a7bcd3f1663..8a848335053 100644 --- a/docs/sweng/technical-documentation.md +++ b/docs/sweng/technical-documentation.md @@ -17,7 +17,7 @@ - The goal of this document is to provide a good overview of the project that explains the use, functionality, creation and architecture of the product. It aims to function as a guide for its current and future developers. kv ### 1.2 References -- Functional Specification Document: [functional-specification-document.md](https://github.com/josphstar/jabref/blob/functional_specifications_doc_w1/docs/sweng/functional-specification-document.md) +- Functional Specification Document: [functional-specification-document.md](https://github.com/josphstar/jabref/blob/designdoc/docs/sweng/functional-specification-document.md) - Issue [#341](https://github.com/koppor/jabref/issues/341) ## 2 System Overview