Skip to content
Draft
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 @@ -32,7 +32,7 @@
import io.openaev.rest.helper.RestBehavior;
import io.openaev.rest.inject.form.InjectExpectationResultsByAttackPattern;
import io.openaev.rest.inject.service.InjectService;
import io.openaev.rest.team.output.TeamOutput;
import io.openaev.rest.team.query_model.TeamQueryModel;
import io.openaev.service.*;
import io.openaev.telemetry.metric_collectors.ActionMetricCollector;
import io.openaev.utils.FilterUtilsJpa;
Expand Down Expand Up @@ -210,7 +210,7 @@ public List<ComcheckStatus> comcheckStatuses(
resourceId = "#exerciseId",
actionPerformed = Action.READ,
resourceType = ResourceType.SIMULATION)
public List<TeamOutput> getExerciseTeams(@PathVariable String exerciseId) {
public List<TeamQueryModel> getExerciseTeams(@PathVariable String exerciseId) {
return this.teamService.find(fromExercise(exerciseId));
}

Expand All @@ -220,7 +220,7 @@ public List<TeamOutput> getExerciseTeams(@PathVariable String exerciseId) {
resourceId = "#exerciseId",
actionPerformed = Action.WRITE,
resourceType = ResourceType.SIMULATION)
public Iterable<TeamOutput> removeExerciseTeams(
public Iterable<TeamQueryModel> removeExerciseTeams(
@PathVariable String exerciseId, @Valid @RequestBody ExerciseUpdateTeamsInput input) {
return this.exerciseService.removeTeams(exerciseId, input.getTeamIds());
}
Expand All @@ -231,7 +231,7 @@ public Iterable<TeamOutput> removeExerciseTeams(
resourceId = "#exerciseId",
actionPerformed = Action.WRITE,
resourceType = ResourceType.SIMULATION)
public Iterable<TeamOutput> replaceExerciseTeams(
public Iterable<TeamQueryModel> replaceExerciseTeams(
@PathVariable String exerciseId, @Valid @RequestBody ExerciseUpdateTeamsInput input) {
return this.exerciseService.replaceTeams(exerciseId, input.getTeamIds());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
import io.openaev.rest.inject.service.InjectDuplicateService;
import io.openaev.rest.inject.service.InjectService;
import io.openaev.rest.scenario.service.ScenarioStatisticService;
import io.openaev.rest.team.output.TeamOutput;
import io.openaev.rest.team.query_model.TeamQueryModel;
import io.openaev.service.TagRuleService;
import io.openaev.service.TeamService;
import io.openaev.service.UserService;
Expand Down Expand Up @@ -724,7 +724,7 @@ public ExercisesGlobalScoresOutput getExercisesGlobalScores(ExercisesGlobalScore

// -- TEAMS --
@Transactional(rollbackFor = Exception.class)
public Iterable<TeamOutput> removeTeams(
public Iterable<TeamQueryModel> removeTeams(
@NotBlank final String exerciseId, @NotNull final List<String> teamIds) {
// Remove teams from exercise
this.exerciseRepository.removeTeams(exerciseId, teamIds);
Expand All @@ -737,7 +737,7 @@ public Iterable<TeamOutput> removeTeams(
return teamService.find(fromIds(teamIds));
}

public List<TeamOutput> replaceTeams(
public List<TeamQueryModel> replaceTeams(
@NotBlank final String exerciseId, @NotNull final List<String> teamIds) {
Exercise exercise = this.exercise(exerciseId);
List<String> previousTeamIds = exercise.getTeams().stream().map(Team::getId).toList();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
import io.openaev.rest.exercise.form.ScenarioTeamPlayersEnableInput;
import io.openaev.rest.helper.RestBehavior;
import io.openaev.rest.scenario.form.*;
import io.openaev.rest.team.output.TeamOutput;
import io.openaev.rest.team.query_model.TeamQueryModel;
import io.openaev.service.*;
import io.openaev.utils.FilterUtilsJpa;
import io.openaev.utils.pagination.SearchPaginationInput;
Expand Down Expand Up @@ -224,7 +224,7 @@ public void importScenario(@RequestPart("file") @NotNull MultipartFile file) thr
resourceId = "#scenarioId",
actionPerformed = Action.READ,
resourceType = ResourceType.SCENARIO)
public List<TeamOutput> scenarioTeams(@PathVariable @NotBlank final String scenarioId) {
public List<TeamQueryModel> scenarioTeams(@PathVariable @NotBlank final String scenarioId) {
return this.teamService.find(fromScenario(scenarioId));
}

Expand All @@ -234,7 +234,7 @@ public List<TeamOutput> scenarioTeams(@PathVariable @NotBlank final String scena
resourceId = "#scenarioId",
actionPerformed = Action.WRITE,
resourceType = ResourceType.SCENARIO)
public Iterable<TeamOutput> removeScenarioTeams(
public Iterable<TeamQueryModel> removeScenarioTeams(
@PathVariable @NotBlank final String scenarioId,
@Valid @RequestBody final ScenarioUpdateTeamsInput input) {
return this.scenarioService.removeTeams(scenarioId, input.getTeamIds());
Expand All @@ -246,7 +246,7 @@ public Iterable<TeamOutput> removeScenarioTeams(
resourceId = "#scenarioId",
actionPerformed = Action.WRITE,
resourceType = ResourceType.SCENARIO)
public List<TeamOutput> replaceScenarioTeams(
public List<TeamQueryModel> replaceScenarioTeams(
@PathVariable @NotBlank final String scenarioId,
@Valid @RequestBody final ScenarioUpdateTeamsInput input) {
return this.scenarioService.replaceTeams(scenarioId, input.getTeamIds());
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
package io.openaev.rest.team;

import static io.openaev.database.specification.TeamSpecification.contextual;
import static io.openaev.rest.atomic_testing.AtomicTestingApi.ATOMIC_TESTING_URI;

import io.openaev.aop.RBAC;
import io.openaev.database.model.Action;
import io.openaev.database.model.ResourceType;
import io.openaev.database.model.Team;
import io.openaev.rest.helper.RestBehavior;
import io.openaev.rest.team.output.TeamOutput;
import io.openaev.rest.team.output.TeamWithTagsOutput;
import io.openaev.service.TeamService;
import io.openaev.utils.pagination.SearchPaginationInput;
import jakarta.validation.Valid;
Expand All @@ -20,6 +17,12 @@
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import java.util.EnumSet;

import static io.openaev.database.specification.TeamSpecification.contextual;
import static io.openaev.rest.atomic_testing.AtomicTestingApi.ATOMIC_TESTING_URI;
import static io.openaev.rest.team.TeamQueryHelper.TeamQueryField.TAGS;

@RequiredArgsConstructor
@RestController
public class AtomicTestingTeamApi extends RestBehavior {
Expand All @@ -29,9 +32,10 @@ public class AtomicTestingTeamApi extends RestBehavior {
@PostMapping(ATOMIC_TESTING_URI + "/teams/search")
@RBAC(actionPerformed = Action.READ, resourceType = ResourceType.INJECT)
@Transactional(readOnly = true)
public Page<TeamOutput> searchTeams(
public Page<TeamWithTagsOutput> searchTeams(
@RequestBody @Valid SearchPaginationInput searchPaginationInput) {
final Specification<Team> teamSpecification = contextual(false);
return this.teamService.teamPagination(searchPaginationInput, teamSpecification);
return this.teamService.teamPagination(searchPaginationInput, teamSpecification, EnumSet.of(TAGS))
.map(TeamWithTagsOutput::fromQueryModel);
}
}
27 changes: 14 additions & 13 deletions openaev-api/src/main/java/io/openaev/rest/team/ExerciseTeamApi.java
Original file line number Diff line number Diff line change
@@ -1,16 +1,13 @@
package io.openaev.rest.team;

import static io.openaev.database.specification.TeamSpecification.contextual;
import static io.openaev.database.specification.TeamSpecification.fromExercise;
import static io.openaev.rest.exercise.ExerciseApi.EXERCISE_URI;

import io.openaev.aop.LogExecutionTime;
import io.openaev.aop.RBAC;
import io.openaev.database.model.Action;
import io.openaev.database.model.ResourceType;
import io.openaev.database.model.Team;
import io.openaev.rest.helper.RestBehavior;
import io.openaev.rest.team.output.TeamOutput;
import io.openaev.rest.team.TeamQueryHelper.TeamQueryField;
import io.openaev.rest.team.output.TeamWithTagsOutput;
import io.openaev.service.TeamService;
import io.openaev.utils.pagination.SearchPaginationInput;
import io.swagger.v3.oas.annotations.media.Schema;
Expand All @@ -19,9 +16,14 @@
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;

import java.util.EnumSet;

import static io.openaev.database.specification.TeamSpecification.contextual;
import static io.openaev.database.specification.TeamSpecification.fromExercise;
import static io.openaev.rest.exercise.ExerciseApi.EXERCISE_URI;

@RequiredArgsConstructor
@RestController
public class ExerciseTeamApi extends RestBehavior {
Expand All @@ -34,15 +36,13 @@ public class ExerciseTeamApi extends RestBehavior {
resourceId = "#exerciseId",
actionPerformed = Action.READ,
resourceType = ResourceType.SIMULATION)
@Transactional(readOnly = true)
public Page<TeamOutput> searchTeams(
public Page<TeamWithTagsOutput> searchTeams(
@PathVariable @NotBlank final String exerciseId,
@RequestBody @Valid SearchPaginationInput searchPaginationInput,
@RequestParam
@Schema(
description =
"Controls which teams to retrieve - true: Only teams that are part of the simulation")
final boolean contextualOnly) {
@Schema(
description =
"Controls which teams to retrieve - true: Only teams that are part of the simulation") final boolean contextualOnly) {
Specification<Team> teamSpecification;
if (!contextualOnly) {
teamSpecification = contextual(false).or(fromExercise(exerciseId));
Expand All @@ -51,6 +51,7 @@ public Page<TeamOutput> searchTeams(
} else {
teamSpecification = fromExercise(exerciseId);
}
return this.teamService.teamPagination(searchPaginationInput, teamSpecification);
return this.teamService.teamPagination(searchPaginationInput, teamSpecification, EnumSet.of(TeamQueryField.TAGS))
.map(TeamWithTagsOutput::fromQueryModel);
}
}
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
package io.openaev.rest.team;

import static io.openaev.database.specification.TeamSpecification.*;
import static io.openaev.rest.scenario.ScenarioApi.SCENARIO_URI;

import io.openaev.aop.RBAC;
import io.openaev.database.model.Action;
import io.openaev.database.model.ResourceType;
import io.openaev.database.model.Team;
import io.openaev.rest.helper.RestBehavior;
import io.openaev.rest.team.output.TeamOutput;
import io.openaev.rest.team.output.TeamWithTagsOutput;
import io.openaev.service.TeamService;
import io.openaev.utils.pagination.SearchPaginationInput;
import io.swagger.v3.oas.annotations.media.Schema;
Expand All @@ -20,6 +17,13 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;

import java.util.EnumSet;

import static io.openaev.database.specification.TeamSpecification.contextual;
import static io.openaev.database.specification.TeamSpecification.fromScenario;
import static io.openaev.rest.scenario.ScenarioApi.SCENARIO_URI;
import static io.openaev.rest.team.TeamQueryHelper.TeamQueryField.TAGS;

@RequiredArgsConstructor
@RestController
public class ScenarioTeamApi extends RestBehavior {
Expand All @@ -32,7 +36,7 @@ public class ScenarioTeamApi extends RestBehavior {
actionPerformed = Action.READ,
resourceType = ResourceType.SCENARIO)
@Transactional(readOnly = true)
public Page<TeamOutput> teams(
public Page<TeamWithTagsOutput> teams(
@PathVariable @NotBlank final String scenarioId,
@RequestBody @Valid SearchPaginationInput searchPaginationInput,
@RequestParam
Expand All @@ -48,6 +52,7 @@ public Page<TeamOutput> teams(
} else {
teamSpecification = fromScenario(scenarioId);
}
return this.teamService.teamPagination(searchPaginationInput, teamSpecification);
return this.teamService.teamPagination(searchPaginationInput, teamSpecification, EnumSet.of(TAGS))
.map(TeamWithTagsOutput::fromQueryModel);
}
}
Loading
Loading