From cd751bf098b23870bd1e8f45e23f9c058db50c73 Mon Sep 17 00:00:00 2001 From: Stephanya Casanova Date: Wed, 25 Sep 2024 14:42:59 +0200 Subject: [PATCH 1/7] [frontend] fix filter order priority --- .../components/common/queryable/filter/FilterUtils.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/openbas-front/src/components/common/queryable/filter/FilterUtils.tsx b/openbas-front/src/components/common/queryable/filter/FilterUtils.tsx index d8464adf3e..b13bcbe0f3 100644 --- a/openbas-front/src/components/common/queryable/filter/FilterUtils.tsx +++ b/openbas-front/src/components/common/queryable/filter/FilterUtils.tsx @@ -91,10 +91,6 @@ export const availableOperators = (propertySchema: PropertySchemaDTO) => { if (propertySchema.schema_property_type.includes('instant')) { return ['gt', 'gte', 'lt', 'lte', 'empty', 'not_empty']; } - // Array - if (propertySchema.schema_property_type_array || propertySchema.schema_property_values) { - return ['contains', 'not_contains', 'empty', 'not_empty']; - } // Enum & not array if (propertySchema.schema_property_values && !propertySchema.schema_property_type_array) { return ['eq']; @@ -103,6 +99,10 @@ export const availableOperators = (propertySchema: PropertySchemaDTO) => { if (propertySchema.schema_property_has_dynamic_value && !propertySchema.schema_property_type_array) { return ['contains', 'not_contains', 'empty', 'not_empty']; } + // Array + if (propertySchema.schema_property_values || propertySchema.schema_property_type_array) { + return ['contains', 'not_contains', 'empty', 'not_empty']; + } return [ 'eq', 'not_eq', From 6b859738399456ecca0a08d29cce8b76520a4edc Mon Sep 17 00:00:00 2001 From: Stephanya Casanova Date: Fri, 27 Sep 2024 16:24:00 +0200 Subject: [PATCH 2/7] [frontend] fix operator for enumerated types --- .../src/components/common/queryable/filter/FilterUtils.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openbas-front/src/components/common/queryable/filter/FilterUtils.tsx b/openbas-front/src/components/common/queryable/filter/FilterUtils.tsx index b13bcbe0f3..f4d94ba35c 100644 --- a/openbas-front/src/components/common/queryable/filter/FilterUtils.tsx +++ b/openbas-front/src/components/common/queryable/filter/FilterUtils.tsx @@ -100,7 +100,7 @@ export const availableOperators = (propertySchema: PropertySchemaDTO) => { return ['contains', 'not_contains', 'empty', 'not_empty']; } // Array - if (propertySchema.schema_property_values || propertySchema.schema_property_type_array) { + if (propertySchema.schema_property_type_array) { return ['contains', 'not_contains', 'empty', 'not_empty']; } return [ From cbc4dc82920bde9da48d3f893f34f0d69ab54486 Mon Sep 17 00:00:00 2001 From: Stephanya Casanova Date: Fri, 27 Sep 2024 16:34:02 +0200 Subject: [PATCH 3/7] [backend] fix null pointer --- .../java/io/openbas/service/AtomicTestingService.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/openbas-api/src/main/java/io/openbas/service/AtomicTestingService.java b/openbas-api/src/main/java/io/openbas/service/AtomicTestingService.java index d537165d0a..61ca1e6a13 100644 --- a/openbas-api/src/main/java/io/openbas/service/AtomicTestingService.java +++ b/openbas-api/src/main/java/io/openbas/service/AtomicTestingService.java @@ -436,8 +436,15 @@ public InjectStatusCommandLine getCommandsLinesFromInject(final Inject inject) { // Inject has a command payload Payload payload = injectorContract.getPayload(); Command payloadCommand = (Command) Hibernate.unproxy(payload); - return new InjectStatusCommandLine(!payloadCommand.getContent().isBlank() ? List.of(payloadCommand.getContent()) : null, - !payloadCommand.getCleanupCommand().isBlank() ? List.of(payload.getCleanupCommand()) : null, payload.getExternalId()); + return new InjectStatusCommandLine( + payloadCommand.getContent() != null && !payloadCommand.getContent().isBlank() + ? List.of(payloadCommand.getContent()) + : null, + payloadCommand.getCleanupCommand() != null && !payloadCommand.getCleanupCommand().isBlank() + ? List.of(payloadCommand.getCleanupCommand()) + : null, + payload.getExternalId() + ); } else { // Inject comes from Caldera ability and tomorrow from other(s) Executor(s) io.openbas.execution.Injector executor = context.getBean(injectorContract.getInjector().getType(), io.openbas.execution.Injector.class); From 046634b415290e3ed4b30ebb622a92ed6c8350d6 Mon Sep 17 00:00:00 2001 From: Stephanya Casanova Date: Fri, 27 Sep 2024 17:36:43 +0200 Subject: [PATCH 4/7] [backend] fix query empty values for enumerated types --- .../src/main/java/io/openbas/service/ScenarioService.java | 2 +- .../src/components/common/queryable/filter/FilterUtils.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/openbas-api/src/main/java/io/openbas/service/ScenarioService.java b/openbas-api/src/main/java/io/openbas/service/ScenarioService.java index 21bbf2be17..ac16614f17 100644 --- a/openbas-api/src/main/java/io/openbas/service/ScenarioService.java +++ b/openbas-api/src/main/java/io/openbas/service/ScenarioService.java @@ -210,7 +210,7 @@ private Page findAllWithCriteriaBuilder( .map(tuple -> new RawPaginationScenario( tuple.get("scenario_id", String.class), tuple.get("scenario_name", String.class), - tuple.get("scenario_severity", Scenario.SEVERITY.class), + Scenario.SEVERITY.valueOf(tuple.get("scenario_severity", String.class)), // Convert String to Enum tuple.get("scenario_category", String.class), tuple.get("scenario_recurrence", String.class), tuple.get("scenario_updated_at", Instant.class), diff --git a/openbas-front/src/components/common/queryable/filter/FilterUtils.tsx b/openbas-front/src/components/common/queryable/filter/FilterUtils.tsx index f4d94ba35c..ff2534f887 100644 --- a/openbas-front/src/components/common/queryable/filter/FilterUtils.tsx +++ b/openbas-front/src/components/common/queryable/filter/FilterUtils.tsx @@ -93,7 +93,7 @@ export const availableOperators = (propertySchema: PropertySchemaDTO) => { } // Enum & not array if (propertySchema.schema_property_values && !propertySchema.schema_property_type_array) { - return ['eq']; + return ['eq', 'empty', 'not_empty']; } // Dynamic value & not array if (propertySchema.schema_property_has_dynamic_value && !propertySchema.schema_property_type_array) { From 7ad43fd870e672af9ee1e7abba1ee8af7bd8cf1f Mon Sep 17 00:00:00 2001 From: Stephanya Casanova Date: Fri, 27 Sep 2024 18:01:31 +0200 Subject: [PATCH 5/7] [backend] wip --- .../src/components/common/queryable/filter/FilterUtils.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openbas-front/src/components/common/queryable/filter/FilterUtils.tsx b/openbas-front/src/components/common/queryable/filter/FilterUtils.tsx index ff2534f887..f4d94ba35c 100644 --- a/openbas-front/src/components/common/queryable/filter/FilterUtils.tsx +++ b/openbas-front/src/components/common/queryable/filter/FilterUtils.tsx @@ -93,7 +93,7 @@ export const availableOperators = (propertySchema: PropertySchemaDTO) => { } // Enum & not array if (propertySchema.schema_property_values && !propertySchema.schema_property_type_array) { - return ['eq', 'empty', 'not_empty']; + return ['eq']; } // Dynamic value & not array if (propertySchema.schema_property_has_dynamic_value && !propertySchema.schema_property_type_array) { From f0a8a86644afa41c505a1508c285baed275e6573 Mon Sep 17 00:00:00 2001 From: Stephanya Casanova Date: Fri, 27 Sep 2024 18:02:24 +0200 Subject: [PATCH 6/7] [backend] wip --- .../src/main/java/io/openbas/service/ScenarioService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openbas-api/src/main/java/io/openbas/service/ScenarioService.java b/openbas-api/src/main/java/io/openbas/service/ScenarioService.java index ac16614f17..21bbf2be17 100644 --- a/openbas-api/src/main/java/io/openbas/service/ScenarioService.java +++ b/openbas-api/src/main/java/io/openbas/service/ScenarioService.java @@ -210,7 +210,7 @@ private Page findAllWithCriteriaBuilder( .map(tuple -> new RawPaginationScenario( tuple.get("scenario_id", String.class), tuple.get("scenario_name", String.class), - Scenario.SEVERITY.valueOf(tuple.get("scenario_severity", String.class)), // Convert String to Enum + tuple.get("scenario_severity", Scenario.SEVERITY.class), tuple.get("scenario_category", String.class), tuple.get("scenario_recurrence", String.class), tuple.get("scenario_updated_at", Instant.class), From a3d5652264f982a13b7cc462496991c0217403f3 Mon Sep 17 00:00:00 2001 From: Stephanya Casanova Date: Fri, 27 Sep 2024 18:15:15 +0200 Subject: [PATCH 7/7] [backend] add filter empty/no empty to enumerated types --- .../src/main/java/io/openbas/utils/OperationUtilsJpa.java | 2 +- .../src/components/common/queryable/filter/FilterUtils.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/openbas-framework/src/main/java/io/openbas/utils/OperationUtilsJpa.java b/openbas-framework/src/main/java/io/openbas/utils/OperationUtilsJpa.java index 3fff320e7f..7bd3995a31 100644 --- a/openbas-framework/src/main/java/io/openbas/utils/OperationUtilsJpa.java +++ b/openbas-framework/src/main/java/io/openbas/utils/OperationUtilsJpa.java @@ -190,7 +190,7 @@ public static Predicate empty(Expression paths, CriteriaBuilder cb, Clas } else { finalPaths = paths; } - if (type.equals(Instant.class)) { + if (type.equals(Instant.class) || type.isEnum()) { return cb.isNull(finalPaths); } return cb.or( diff --git a/openbas-front/src/components/common/queryable/filter/FilterUtils.tsx b/openbas-front/src/components/common/queryable/filter/FilterUtils.tsx index f4d94ba35c..ff2534f887 100644 --- a/openbas-front/src/components/common/queryable/filter/FilterUtils.tsx +++ b/openbas-front/src/components/common/queryable/filter/FilterUtils.tsx @@ -93,7 +93,7 @@ export const availableOperators = (propertySchema: PropertySchemaDTO) => { } // Enum & not array if (propertySchema.schema_property_values && !propertySchema.schema_property_type_array) { - return ['eq']; + return ['eq', 'empty', 'not_empty']; } // Dynamic value & not array if (propertySchema.schema_property_has_dynamic_value && !propertySchema.schema_property_type_array) {