Skip to content

Commit 8e7ec0c

Browse files
authored
Merge pull request #435 from Breeding-Insight/bug/BI-2343
[BI-2343] - GID filtering not informative
2 parents e778c65 + 0130ce6 commit 8e7ec0c

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

src/main/java/org/breedinginsight/utilities/response/ResponseUtils.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,18 @@ private static List<?> search(List<?> data, SearchRequest searchRequest, Abstrac
193193
.collect(Collectors.toList());
194194
}
195195

196+
//To enable checking for the case of Germplasm Search when the filter is accessionNumber or list entry number and thereby needs to do exact match
197+
String accessionNumFilter;
198+
if (mapper.exists("accessionNumber")) accessionNumFilter = mapper.getField("accessionNumber").toString();
199+
else {
200+
accessionNumFilter = "";
201+
}
202+
String entryNumFilter;
203+
if (mapper.exists("importEntryNumber")) entryNumFilter = mapper.getField("importEntryNumber").toString();
204+
else {
205+
entryNumFilter = "";
206+
}
207+
196208
if (filterFields.size() > 0){
197209
// Apply filters
198210
List<FilterField> finalFilterFields = filterFields;
@@ -211,6 +223,16 @@ private static List<?> search(List<?> data, SearchRequest searchRequest, Abstrac
211223
return recordList.stream()
212224
.anyMatch(listValue ->
213225
listValue.toString().toLowerCase().contains(filterField.getValue().toLowerCase()));
226+
}
227+
else if (!accessionNumFilter.isEmpty() && filterField.getField().toString().equals(accessionNumFilter)) {
228+
//enable exact match in case of GID
229+
return filterField.getField().apply(record).toString()
230+
.toLowerCase().equalsIgnoreCase(filterField.getValue().toLowerCase());
231+
}
232+
else if (!entryNumFilter.isEmpty() && filterField.getField().toString().equals(entryNumFilter)) {
233+
//enable exact match in case of entry number
234+
return filterField.getField().apply(record).toString()
235+
.toLowerCase().equalsIgnoreCase(filterField.getValue().toLowerCase());
214236
} else {
215237
return filterField.getField().apply(record).toString()
216238
.toLowerCase().contains(filterField.getValue().toLowerCase());

0 commit comments

Comments
 (0)