Skip to content

Commit 537c5b7

Browse files
committed
avniproject/avni-webapp#1558 | Use BigDecimal instead of Float while performing numeric searches (due to conversion to epsilon format for large values)
1 parent 569af81 commit 537c5b7

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

avni-server-api/src/main/java/org/avni/server/dao/search/BaseSubjectSearchQueryBuilder.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import org.slf4j.LoggerFactory;
1818
import org.springframework.util.StringUtils;
1919

20+
import java.math.BigDecimal;
2021
import java.util.*;
2122
import java.util.stream.Collectors;
2223

@@ -285,19 +286,19 @@ public T withConceptsFilter(List<Concept> concept) {
285286
if (c.getDataType().equalsIgnoreCase("NUMERIC")) {
286287
if (c.getWidget() != null && c.getWidget().equalsIgnoreCase("RANGE")) {
287288
if (!StringUtils.isEmpty(c.getMinValue())) {
288-
Float value = Float.parseFloat(c.getMinValue());
289+
BigDecimal value = new BigDecimal(c.getMinValue());
289290
String param = "numericValueMin" + ci;
290291
addParameter(param, value);
291292
whereClauses.add(generateWhereClause(getFilterForSearchScope(c.getSearchScope()),"cast(" + tableAlias + ".observations ->> :" + conceptUuidParam + " as numeric) >= :" + param));
292293
}
293294
if (!StringUtils.isEmpty(c.getMaxValue())) {
294-
Float value = Float.parseFloat(c.getMaxValue());
295+
BigDecimal value = new BigDecimal(c.getMaxValue());
295296
String param = "numericValueMax" + ci;
296297
addParameter(param, value);
297298
whereClauses.add(generateWhereClause(getFilterForSearchScope(c.getSearchScope()),"cast(" + tableAlias + ".observations ->>:" + conceptUuidParam + " as numeric) <= :" + param));
298299
}
299300
} else {
300-
Float value = Float.parseFloat(c.getMinValue());
301+
BigDecimal value = new BigDecimal(c.getMinValue());
301302
String param = "numericValueMin" + ci;
302303
addParameter(param, value);
303304
whereClauses.add(generateWhereClause(getFilterForSearchScope(c.getSearchScope()),"cast(" + tableAlias + ".observations ->>:" + conceptUuidParam + " as numeric) = :" + param));

0 commit comments

Comments
 (0)