Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -11,24 +11,23 @@
import io.openaev.database.model.Widget;
import io.openaev.database.raw.RawCustomDashboard;
import io.openaev.database.repository.CustomDashboardRepository;
import io.openaev.engine.model.EsBase;
import io.openaev.engine.query.EsAttackPath;
import io.openaev.engine.query.EsAvgs;
import io.openaev.engine.query.EsCountInterval;
import io.openaev.engine.query.EsSeries;
import io.openaev.engine.query.*;
import io.openaev.rest.custom_dashboard.form.CustomDashboardOutput;
import io.openaev.rest.dashboard.DashboardService;
import io.openaev.rest.dashboard.model.WidgetToEntitiesInput;
import io.openaev.rest.dashboard.model.WidgetToEntitiesOutput;
import io.openaev.rest.exception.BadRequestException;
import io.openaev.service.PlatformSettingsService;
import io.openaev.utils.FilterUtilsJpa;
import io.openaev.utils.es.EntitiesPaginationInput;
import io.openaev.utils.es.WidgetToEntitiesInput;
import io.openaev.utils.es.WidgetToEntitiesOutput;
import io.openaev.utils.mapper.CustomDashboardMapper;
import io.openaev.utils.pagination.SearchPaginationInput;
import jakarta.annotation.Nullable;
import jakarta.persistence.EntityNotFoundException;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import java.time.Instant;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
Expand Down Expand Up @@ -290,15 +289,18 @@ public List<EsSeries> dashboardSeriesOnResourceId(
return this.dashboardService.series(widgetId, parameters);
}

public List<EsBase> dashboardEntitiesOnResourceId(
public EsEntities dashboardEntitiesOnResourceId(
@NotBlank final String resourceId,
@NotBlank final String widgetId,
final Map<String, String> parameters) {
@Nullable final EntitiesPaginationInput input) {
// verify that the widget is in the resource dashboard
if (!isWidgetInResourceDashboard(resourceId, widgetId)) {
throw new AccessDeniedException("Access denied");
}
return this.dashboardService.entities(widgetId, parameters);
return this.dashboardService.entities(
widgetId,
input == null ? new HashMap<>() : input.getParameters(),
input == null ? null : input.getPagination());
}

public WidgetToEntitiesOutput widgetToEntitiesRuntimeOnResourceId(
Expand Down Expand Up @@ -353,13 +355,16 @@ public List<EsSeries> homeDashboardSeries(
return dashboardService.series(widgetId, parameters);
}

public List<EsBase> homeDashboardEntities(
@NotBlank final String widgetId, final Map<String, String> parameters) {
public EsEntities homeDashboardEntities(
@NotBlank final String widgetId, @Nullable final EntitiesPaginationInput input) {
// verify that the widget is in the home dashboard
if (!isWidgetInHomeDashboard(widgetId)) {
throw new AccessDeniedException("Access denied");
}
return dashboardService.entities(widgetId, parameters);
return dashboardService.entities(
widgetId,
input == null ? new HashMap<>() : input.getParameters(),
input == null ? null : input.getPagination());
}

public WidgetToEntitiesOutput homeWidgetToEntitiesRuntimeOnResourceId(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,14 @@
import io.openaev.aop.AccessControl;
import io.openaev.database.model.Action;
import io.openaev.database.model.ResourceType;
import io.openaev.engine.model.EsBase;
import io.openaev.engine.model.EsSearch;
import io.openaev.engine.query.EsAttackPath;
import io.openaev.engine.query.EsAvgs;
import io.openaev.engine.query.EsCountInterval;
import io.openaev.engine.query.EsSeries;
import io.openaev.rest.dashboard.model.WidgetToEntitiesInput;
import io.openaev.rest.dashboard.model.WidgetToEntitiesOutput;
import io.openaev.engine.query.*;
import io.openaev.rest.helper.RestBehavior;
import io.openaev.utils.es.EntitiesPaginationInput;
import io.openaev.utils.es.WidgetToEntitiesInput;
import io.openaev.utils.es.WidgetToEntitiesOutput;
import jakarta.validation.Valid;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutionException;
Expand Down Expand Up @@ -65,10 +63,13 @@ public List<EsSeries> series(
resourceId = "#widgetId",
actionPerformed = Action.READ,
resourceType = ResourceType.DASHBOARD)
public List<EsBase> entities(
public EsEntities entities(
@PathVariable final String widgetId,
@RequestBody(required = false) Map<String, String> parameters) {
return this.dashboardService.entities(widgetId, parameters);
@RequestBody(required = false) EntitiesPaginationInput input) {
return this.dashboardService.entities(
widgetId,
input == null ? new HashMap<>() : input.getParameters(),
input == null ? null : input.getPagination());
}

@PostMapping(DASHBOARD_URI + "/entities-runtime/{widgetId}")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,16 @@
import io.openaev.database.repository.UserRepository;
import io.openaev.engine.EngineService;
import io.openaev.engine.api.*;
import io.openaev.engine.model.EsBase;
import io.openaev.engine.model.EsSearch;
import io.openaev.engine.query.EsAttackPath;
import io.openaev.engine.query.EsAvgs;
import io.openaev.engine.query.EsCountInterval;
import io.openaev.engine.query.EsSeries;
import io.openaev.engine.query.*;
import io.openaev.rest.custom_dashboard.WidgetService;
import io.openaev.rest.dashboard.model.WidgetToEntitiesInput;
import io.openaev.rest.dashboard.model.WidgetToEntitiesOutput;
import io.openaev.service.EsAttackPathService;
import io.openaev.service.EsSecurityDomainService;
import io.openaev.utils.es.WidgetToEntitiesInput;
import io.openaev.utils.es.WidgetToEntitiesOutput;
import io.openaev.utils.mapper.RawUserAuthMapper;
import io.openaev.utils.pagination.Pagination;
import jakarta.annotation.Nullable;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutionException;
Expand Down Expand Up @@ -102,11 +100,14 @@ public List<EsSeries> series(String widgetId, Map<String, String> parameters) {
*
* @param widgetContext the context containing widget, user, and parameter information
* @param config the list configuration defining query parameters
* @param pagination pagination passed at runtime
* @return a list of entities retrieved from the engine service
*/
private List<EsBase> executeListQuery(WidgetContext widgetContext, ListConfiguration config) {
private EsEntities executeListQuery(
WidgetContext widgetContext, ListConfiguration config, @Nullable Pagination pagination) {
ListRuntime runtime =
new ListRuntime(config, widgetContext.parameters(), widgetContext.definitionParameters());
new ListRuntime(
config, widgetContext.parameters(), widgetContext.definitionParameters(), pagination);
return engineService.entities(widgetContext.user(), runtime);
}

Expand All @@ -115,12 +116,14 @@ private List<EsBase> executeListQuery(WidgetContext widgetContext, ListConfigura
*
* @param widgetId the id from the {@link Widget} with a list configuration
* @param parameters parameters passed at runtime (e.g. filters)
* @return list of {@link EsBase} entities matching the list widget query
* @param pagination pagination passed at runtime
* @return list of entities matching the list widget query
*/
public List<EsBase> entities(String widgetId, Map<String, String> parameters) {
public EsEntities entities(
String widgetId, Map<String, String> parameters, @Nullable Pagination pagination) {
WidgetContext widgetContext = getWidgetContext(widgetId, parameters);
ListConfiguration config = (ListConfiguration) widgetContext.widget().getWidgetConfiguration();
return executeListQuery(widgetContext, config);
return executeListQuery(widgetContext, config, pagination);
}

/**
Expand All @@ -145,7 +148,7 @@ public WidgetToEntitiesOutput widgetToEntitiesRuntime(
String widgetId, WidgetToEntitiesInput input) {
WidgetContext widgetContext = getWidgetContext(widgetId, input.getParameters());
ListConfiguration listConfig;
List<EsBase> datas;
EsEntities datas;

if (isSecurityCoverageWidget(widgetContext.widget)) {
listConfig =
Expand All @@ -157,7 +160,7 @@ public WidgetToEntitiesOutput widgetToEntitiesRuntime(
widgetContext.widget, input.getSeriesIndex(), input.getFilterValuesMap());
}

datas = executeListQuery(widgetContext, listConfig);
datas = executeListQuery(widgetContext, listConfig, input.getPagination());
return WidgetToEntitiesOutput.builder().listConfiguration(listConfig).esEntities(datas).build();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,11 @@
import io.openaev.database.model.Action;
import io.openaev.database.model.CustomDashboard;
import io.openaev.database.model.ResourceType;
import io.openaev.engine.model.EsBase;
import io.openaev.engine.query.EsAttackPath;
import io.openaev.engine.query.EsAvgs;
import io.openaev.engine.query.EsCountInterval;
import io.openaev.engine.query.EsSeries;
import io.openaev.engine.query.*;
import io.openaev.rest.custom_dashboard.CustomDashboardService;
import io.openaev.rest.dashboard.model.WidgetToEntitiesInput;
import io.openaev.rest.dashboard.model.WidgetToEntitiesOutput;
import io.openaev.utils.es.EntitiesPaginationInput;
import io.openaev.utils.es.WidgetToEntitiesInput;
import io.openaev.utils.es.WidgetToEntitiesOutput;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
Expand Down Expand Up @@ -91,12 +88,11 @@ public List<EsSeries> dashboardSeries(
resourceId = "#simulationId",
actionPerformed = Action.READ,
resourceType = ResourceType.SIMULATION)
public List<EsBase> dashboardEntities(
public EsEntities dashboardEntities(
@PathVariable final String simulationId,
@PathVariable final String widgetId,
@RequestBody(required = false) Map<String, String> parameters) {
return this.customDashboardService.dashboardEntitiesOnResourceId(
simulationId, widgetId, parameters);
@RequestBody EntitiesPaginationInput input) {
return this.customDashboardService.dashboardEntitiesOnResourceId(simulationId, widgetId, input);
}

@PostMapping(EXERCISE_URI + "/{simulationId}/dashboard/entities-runtime/{widgetId}")
Expand All @@ -107,7 +103,7 @@ public List<EsBase> dashboardEntities(
public WidgetToEntitiesOutput widgetToEntitiesRuntime(
@PathVariable final String simulationId,
@PathVariable final String widgetId,
@Valid @RequestBody WidgetToEntitiesInput input) {
@Valid @RequestBody(required = false) WidgetToEntitiesInput input) {
return this.customDashboardService.widgetToEntitiesRuntimeOnResourceId(
simulationId, widgetId, input);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,11 @@
import io.openaev.database.model.Action;
import io.openaev.database.model.CustomDashboard;
import io.openaev.database.model.ResourceType;
import io.openaev.engine.model.EsBase;
import io.openaev.engine.query.EsAttackPath;
import io.openaev.engine.query.EsAvgs;
import io.openaev.engine.query.EsCountInterval;
import io.openaev.engine.query.EsSeries;
import io.openaev.engine.query.*;
import io.openaev.rest.custom_dashboard.CustomDashboardService;
import io.openaev.rest.dashboard.model.WidgetToEntitiesInput;
import io.openaev.rest.dashboard.model.WidgetToEntitiesOutput;
import io.openaev.utils.es.EntitiesPaginationInput;
import io.openaev.utils.es.WidgetToEntitiesInput;
import io.openaev.utils.es.WidgetToEntitiesOutput;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
Expand Down Expand Up @@ -90,12 +87,11 @@ public List<EsSeries> dashboardSeries(
resourceId = "#scenarioId",
actionPerformed = Action.READ,
resourceType = ResourceType.SCENARIO)
public List<EsBase> dashboardEntities(
public EsEntities dashboardEntities(
@PathVariable final String scenarioId,
@PathVariable final String widgetId,
@RequestBody(required = false) Map<String, String> parameters) {
return this.customDashboardService.dashboardEntitiesOnResourceId(
scenarioId, widgetId, parameters);
@RequestBody EntitiesPaginationInput input) {
return this.customDashboardService.dashboardEntitiesOnResourceId(scenarioId, widgetId, input);
}

@PostMapping(SCENARIO_URI + "/{scenarioId}/dashboard/entities-runtime/{widgetId}")
Expand All @@ -106,7 +102,7 @@ public List<EsBase> dashboardEntities(
public WidgetToEntitiesOutput widgetToEntitiesRuntime(
@PathVariable final String scenarioId,
@PathVariable final String widgetId,
@Valid @RequestBody WidgetToEntitiesInput input) {
@Valid @RequestBody(required = false) WidgetToEntitiesInput input) {
return this.customDashboardService.widgetToEntitiesRuntimeOnResourceId(
scenarioId, widgetId, input);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,17 @@
import io.openaev.database.model.Action;
import io.openaev.database.model.CustomDashboard;
import io.openaev.database.model.ResourceType;
import io.openaev.engine.model.EsBase;
import io.openaev.engine.query.EsAttackPath;
import io.openaev.engine.query.EsAvgs;
import io.openaev.engine.query.EsCountInterval;
import io.openaev.engine.query.EsSeries;
import io.openaev.engine.query.*;
import io.openaev.rest.custom_dashboard.CustomDashboardService;
import io.openaev.rest.dashboard.model.WidgetToEntitiesInput;
import io.openaev.rest.dashboard.model.WidgetToEntitiesOutput;
import io.openaev.rest.helper.RestBehavior;
import io.openaev.rest.settings.form.*;
import io.openaev.rest.settings.response.CalderaSettings;
import io.openaev.rest.settings.response.PlatformSettings;
import io.openaev.service.CalderaSettingsService;
import io.openaev.service.PlatformSettingsService;
import io.openaev.utils.es.EntitiesPaginationInput;
import io.openaev.utils.es.WidgetToEntitiesInput;
import io.openaev.utils.es.WidgetToEntitiesOutput;
import io.swagger.v3.oas.annotations.ExternalDocumentation;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
Expand Down Expand Up @@ -167,10 +164,10 @@ public List<EsSeries> homeDashboardSeries(

@PostMapping("/home-dashboard/entities/{widgetId}")
@AccessControl(actionPerformed = Action.READ, resourceType = ResourceType.PLATFORM_SETTING)
public List<EsBase> homeDashboardEntities(
public EsEntities homeDashboardEntities(
@PathVariable final String widgetId,
@RequestBody(required = false) Map<String, String> parameters) {
return customDashboardService.homeDashboardEntities(widgetId, parameters);
@RequestBody(required = false) EntitiesPaginationInput input) {
return customDashboardService.homeDashboardEntities(widgetId, input);
}

@PostMapping("/home-dashboard/entities-runtime/{widgetId}")
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package io.openaev.utils.es;

import com.fasterxml.jackson.annotation.JsonProperty;
import io.openaev.utils.pagination.Pagination;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.annotation.Nullable;
import java.util.Map;
import lombok.*;

@AllArgsConstructor
@NoArgsConstructor
@Builder
@Data
public class EntitiesPaginationInput {
@Schema(description = "Pagination to set (optional)", nullable = true)
@JsonProperty("pagination")
@Nullable
Pagination pagination;

@Schema(description = "Parameters to set")
@JsonProperty("parameters")
Map<String, String> parameters;
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package io.openaev.rest.dashboard.model;
package io.openaev.utils.es;

import com.fasterxml.jackson.annotation.JsonProperty;
import io.openaev.utils.pagination.Pagination;
import io.swagger.v3.oas.annotations.media.Schema;
import java.util.List;
import java.util.Map;
Expand All @@ -24,4 +25,8 @@ public class WidgetToEntitiesInput {
@JsonProperty("parameters")
@Schema(description = "Additional parameters for the widget")
private Map<String, String> parameters;

@JsonProperty("pagination")
@Schema(description = "Pagination for the widget")
private Pagination pagination;
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
package io.openaev.rest.dashboard.model;
package io.openaev.utils.es;

import com.fasterxml.jackson.annotation.JsonProperty;
import io.openaev.engine.api.ListConfiguration;
import io.openaev.engine.model.EsBase;
import io.openaev.engine.query.EsEntities;
import io.swagger.v3.oas.annotations.media.Schema;
import java.util.List;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
Expand All @@ -13,13 +12,12 @@
@Setter
@Builder
public class WidgetToEntitiesOutput {

@Schema(
description = "List configuration generated based on the input widget id and filter value")
@JsonProperty("list_configuration")
private ListConfiguration listConfiguration;

@Schema(description = "List of entities")
@JsonProperty("es_entities")
private List<EsBase> esEntities;
private EsEntities esEntities;
}
Loading
Loading