From bb142583a4a0bc00b36c5040464b2102f6e4d898 Mon Sep 17 00:00:00 2001 From: Jonathan Tang Date: Fri, 12 Jan 2024 20:01:28 -0800 Subject: [PATCH 1/4] feat: parses for searchOnClear in suite --- src/main/java/org/commcare/xml/SessionDatumParser.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/commcare/xml/SessionDatumParser.java b/src/main/java/org/commcare/xml/SessionDatumParser.java index 78339104a..f41d385b1 100644 --- a/src/main/java/org/commcare/xml/SessionDatumParser.java +++ b/src/main/java/org/commcare/xml/SessionDatumParser.java @@ -129,6 +129,7 @@ private RemoteQueryDatum parseRemoteQueryDatum() boolean defaultSearch = "true".equals(parser.getAttributeValue(null, "default_search")); boolean dynamicSearch = "true".equals(parser.getAttributeValue(null, "dynamic_search")); + boolean searchOnClear = "true".equals(parser.getAttributeValue(null, "search_on_clear")); Text title = null; Text description = null; Hashtable groupPrompts = new Hashtable<>(); @@ -152,6 +153,7 @@ private RemoteQueryDatum parseRemoteQueryDatum() } } return new RemoteQueryDatum(queryUrl, queryResultStorageInstance, hiddenQueryValues, - userQueryPrompts, useCaseTemplate, defaultSearch, dynamicSearch, title, description, groupPrompts); + userQueryPrompts, useCaseTemplate, defaultSearch, dynamicSearch, title, description, groupPrompts, + searchOnClear); } } From 98ff4ccb79e85895bb47aa46c341487aa90a2254 Mon Sep 17 00:00:00 2001 From: Jonathan Tang Date: Fri, 12 Jan 2024 20:02:29 -0800 Subject: [PATCH 2/4] feat: populates remote query session with searchOnClear value --- .../commcare/session/RemoteQuerySessionManager.java | 4 ++++ .../org/commcare/suite/model/RemoteQueryDatum.java | 10 ++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/commcare/session/RemoteQuerySessionManager.java b/src/main/java/org/commcare/session/RemoteQuerySessionManager.java index 8e35859ee..43f9483f6 100644 --- a/src/main/java/org/commcare/session/RemoteQuerySessionManager.java +++ b/src/main/java/org/commcare/session/RemoteQuerySessionManager.java @@ -310,6 +310,10 @@ public boolean getDynamicSearch() { return queryDatum.getDynamicSearch(); } + public boolean isSearchOnClear() { + return queryDatum.isSearchOnClear(); + } + // Converts a string containing space separated list of choices // into a string array of individual choices public static String[] extractMultipleChoices(String answer) { diff --git a/src/main/java/org/commcare/suite/model/RemoteQueryDatum.java b/src/main/java/org/commcare/suite/model/RemoteQueryDatum.java index 7ad5dc558..2aace83fc 100644 --- a/src/main/java/org/commcare/suite/model/RemoteQueryDatum.java +++ b/src/main/java/org/commcare/suite/model/RemoteQueryDatum.java @@ -33,6 +33,7 @@ public class RemoteQueryDatum extends SessionDatum { private boolean useCaseTemplate; private boolean defaultSearch; private boolean dynamicSearch; + private boolean searchOnClear; private Text title; private Text description; @@ -49,7 +50,7 @@ public RemoteQueryDatum(URL url, String storageInstance, List hiddenQueryValues, OrderedHashtable userQueryPrompts, boolean useCaseTemplate, boolean defaultSearch, boolean dynamicSearch, Text title, Text description, - Hashtable userQueryGroupHeaders) { + Hashtable userQueryGroupHeaders, boolean searchOnClear) { super(storageInstance, url.toString()); this.hiddenQueryValues = hiddenQueryValues; this.userQueryPrompts = userQueryPrompts; @@ -57,6 +58,7 @@ public RemoteQueryDatum(URL url, String storageInstance, this.useCaseTemplate = useCaseTemplate; this.defaultSearch = defaultSearch; this.dynamicSearch = dynamicSearch; + this.searchOnClear = searchOnClear; this.title = title; this.description = description; } @@ -95,6 +97,9 @@ public boolean getDynamicSearch() { return dynamicSearch; } + public boolean isSearchOnClear() { + return searchOnClear; + } public Text getTitleText() { return title; } @@ -120,6 +125,7 @@ public void readExternal(DataInputStream in, PrototypeFactory pf) useCaseTemplate = ExtUtil.readBool(in); defaultSearch = ExtUtil.readBool(in); dynamicSearch = ExtUtil.readBool(in); + searchOnClear = ExtUtil.readBool(in); } @Override @@ -133,6 +139,6 @@ public void writeExternal(DataOutputStream out) throws IOException { ExtUtil.writeBool(out, useCaseTemplate); ExtUtil.writeBool(out, defaultSearch); ExtUtil.writeBool(out, dynamicSearch); - + ExtUtil.writeBool(out, searchOnClear); } } From fd84bb31bc847ac146cb7ae310b033c7d7a2abcc Mon Sep 17 00:00:00 2001 From: Jonathan Tang Date: Fri, 12 Jan 2024 20:02:59 -0800 Subject: [PATCH 3/4] feat: populates queryScreen with searchOnClear value --- src/cli/java/org/commcare/util/screen/QueryScreen.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/cli/java/org/commcare/util/screen/QueryScreen.java b/src/cli/java/org/commcare/util/screen/QueryScreen.java index 210c0ced5..97c7d0ae0 100644 --- a/src/cli/java/org/commcare/util/screen/QueryScreen.java +++ b/src/cli/java/org/commcare/util/screen/QueryScreen.java @@ -62,6 +62,7 @@ public class QueryScreen extends Screen { private boolean defaultSearch; private boolean dynamicSearch; + private boolean searchOnClear; public QueryScreen(String domainedUsername, String password, PrintStream out, VirtualDataInstanceStorage instanceStorage, SessionUtils sessionUtils) { @@ -96,6 +97,7 @@ public void init(SessionWrapper sessionWrapper) throws CommCareSessionException mTitle = getTitleLocaleString(); description = getDescriptionLocaleString(); dynamicSearch = getQueryDatum().getDynamicSearch(); + searchOnClear = getQueryDatum().isSearchOnClear(); groupHeaders = getQueryDatum().getUserQueryGroupHeaders(); } @@ -221,6 +223,10 @@ public boolean getDynamicSearch() { return dynamicSearch; } + public boolean isSearchOnClear(){ + return searchOnClear; + } + @Override public boolean prompt(PrintStream out) { if (doDefaultSearch()) { From 6e85c85b8378eac27441e01003cc8f5141865654 Mon Sep 17 00:00:00 2001 From: Jonathan Tang Date: Tue, 16 Jan 2024 14:50:39 -0800 Subject: [PATCH 4/4] test: add tests that datum contains search_on_clear value as defined in suite --- .../commcare/backend/suite/model/test/CaseClaimModelTests.java | 2 ++ src/test/resources/case_claim_example/suite.xml | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/test/java/org/commcare/backend/suite/model/test/CaseClaimModelTests.java b/src/test/java/org/commcare/backend/suite/model/test/CaseClaimModelTests.java index edfd27958..4bcaaabd8 100644 --- a/src/test/java/org/commcare/backend/suite/model/test/CaseClaimModelTests.java +++ b/src/test/java/org/commcare/backend/suite/model/test/CaseClaimModelTests.java @@ -64,6 +64,8 @@ public void testRemoteQueryDatum() throws Exception { Assert.assertEquals("Description text", description.evaluate()); Assert.assertTrue(((RemoteQueryDatum)datum).getDynamicSearch()); + + Assert.assertTrue(((RemoteQueryDatum)datum).isSearchOnClear()); } @Test diff --git a/src/test/resources/case_claim_example/suite.xml b/src/test/resources/case_claim_example/suite.xml index 3aff51009..ee34c2ce0 100644 --- a/src/test/resources/case_claim_example/suite.xml +++ b/src/test/resources/case_claim_example/suite.xml @@ -61,7 +61,7 @@ - + <text> <locale id="query.title"/>