From 8fe43dee98f13536b2d57baacf9674e6007f8473 Mon Sep 17 00:00:00 2001 From: akulikov Date: Thu, 7 Dec 2023 19:13:06 +0300 Subject: [PATCH] http://jira.mfd.msk:8088/browse/CLS-599 --- .../adapter/predicate/ImdgPredicateBuilderHazelcast.java | 8 +++++++- .../platform/imdg/api/predicate/ImdgPredicateBuilder.java | 2 ++ .../api/predicate/sql/ImdgPredicateBuilderSqlMock.java | 8 +++++++- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/adapter/predicate/ImdgPredicateBuilderHazelcast.java b/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/adapter/predicate/ImdgPredicateBuilderHazelcast.java index e9561482d..a58a7ef98 100644 --- a/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/adapter/predicate/ImdgPredicateBuilderHazelcast.java +++ b/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/adapter/predicate/ImdgPredicateBuilderHazelcast.java @@ -115,6 +115,12 @@ public class ImdgPredicateBuilderHazelcast implements ImdgPredicateBuilder { @Override public ImdgPredicate zero(String key) { - return new ImdgPredicateHazelcast(Predicates.between(key, -0.000000000001, 0.000000000001)); + return zero(key, 10); + } + + @Override + public ImdgPredicate zero(String key, int scale) { + double zeros = Math.pow(0.1, scale); + return new ImdgPredicateHazelcast(Predicates.between(key, -zeros, +zeros)); } } diff --git a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/predicate/ImdgPredicateBuilder.java b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/predicate/ImdgPredicateBuilder.java index 89ff18c0a..54376cb64 100644 --- a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/predicate/ImdgPredicateBuilder.java +++ b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/predicate/ImdgPredicateBuilder.java @@ -22,5 +22,7 @@ public interface ImdgPredicateBuilder { ImdgPredicate alwaysTrue(); ImdgPredicate alwaysFalse(); + + ImdgPredicate zero(String key, int scale); ImdgPredicate zero(String key); } diff --git a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/predicate/sql/ImdgPredicateBuilderSqlMock.java b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/predicate/sql/ImdgPredicateBuilderSqlMock.java index 925e62e91..5e23280e7 100644 --- a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/predicate/sql/ImdgPredicateBuilderSqlMock.java +++ b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/predicate/sql/ImdgPredicateBuilderSqlMock.java @@ -107,7 +107,13 @@ public class ImdgPredicateBuilderSqlMock implements ImdgPredicateBuilder { @Override public ImdgPredicate zero(String key) { - return sql(key + " > -0.0000000000001 and " + key + " < 0.0000000000001"); + return zero(key, 10); + } + + @Override + public ImdgPredicate zero(String key, int scale) { + String zeros = "0." + "0".repeat(scale) + "1"; + return sql("%s > -%s and %s < %s".formatted(key, zeros, key, zeros)); } static class SimpleSQLPredicate implements ImdgPredicate {