Refactor project controller and user entity
- Refactor the ProjectController class to add support for updating the selected application. - Update the User entity to include a selected application field. Related work items: #1234
This commit is contained in:
@@ -8,7 +8,9 @@ import org.springframework.web.bind.annotation.RequestBody;
|
|||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import com.olympus.hermione.repository.ProjectRepository;
|
import com.olympus.hermione.repository.ProjectRepository;
|
||||||
|
import com.olympus.hermione.security.entity.User;
|
||||||
import com.olympus.hermione.services.ProjectService;
|
import com.olympus.hermione.services.ProjectService;
|
||||||
|
import com.olympus.model.Application;
|
||||||
import com.olympus.model.Project;
|
import com.olympus.model.Project;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@@ -26,10 +28,14 @@ public class ProjectController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/updateSelectedProject")
|
@PostMapping("/updateSelectedProject")
|
||||||
public Boolean setSelectedProjects(@RequestBody Project projectId) {
|
public User setSelectedProjects(@RequestBody Project projectId) {
|
||||||
return projectService.updateUserSelectedProject(projectId);
|
return projectService.updateUserSelectedProject(projectId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/updateSelectedApplication")
|
||||||
|
public User setSelectedApplication(@RequestBody Application application) {
|
||||||
|
return projectService.updateUserSelectedApplication(application);
|
||||||
|
}
|
||||||
@PostMapping("/getProject")
|
@PostMapping("/getProject")
|
||||||
public Optional<Project> getUserProjects(@RequestBody String projectId) {
|
public Optional<Project> getUserProjects(@RequestBody String projectId) {
|
||||||
return projectRepo.findById(projectId);
|
return projectRepo.findById(projectId);
|
||||||
|
|||||||
@@ -28,6 +28,8 @@ public class ScenarioExecution {
|
|||||||
private String nextStepId;
|
private String nextStepId;
|
||||||
private String currentStepDescription;
|
private String currentStepDescription;
|
||||||
|
|
||||||
|
private String executedByUserId;
|
||||||
|
|
||||||
|
|
||||||
private ScenarioExecutionInput scenarioExecutionInput;
|
private ScenarioExecutionInput scenarioExecutionInput;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import org.springframework.security.core.GrantedAuthority;
|
|||||||
import org.springframework.security.core.authority.SimpleGrantedAuthority;
|
import org.springframework.security.core.authority.SimpleGrantedAuthority;
|
||||||
import org.springframework.security.core.userdetails.UserDetails;
|
import org.springframework.security.core.userdetails.UserDetails;
|
||||||
|
|
||||||
|
import com.olympus.model.Application;
|
||||||
import com.olympus.model.Project;
|
import com.olympus.model.Project;
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
@@ -38,6 +39,9 @@ public class User implements UserDetails{
|
|||||||
@DocumentReference
|
@DocumentReference
|
||||||
private List<Project> lstProjects;
|
private List<Project> lstProjects;
|
||||||
|
|
||||||
|
@DocumentReference
|
||||||
|
private Application selectedApplication;
|
||||||
|
|
||||||
|
|
||||||
private Role role;
|
private Role role;
|
||||||
|
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import com.olympus.hermione.models.ScenarioExecution;
|
|||||||
import com.olympus.hermione.repository.ProjectRepository;
|
import com.olympus.hermione.repository.ProjectRepository;
|
||||||
import com.olympus.hermione.security.entity.User;
|
import com.olympus.hermione.security.entity.User;
|
||||||
import com.olympus.hermione.security.repository.UserRepository;
|
import com.olympus.hermione.security.repository.UserRepository;
|
||||||
|
import com.olympus.model.Application;
|
||||||
import com.olympus.model.Project;
|
import com.olympus.model.Project;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@@ -42,39 +43,24 @@ public class ProjectService {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Boolean updateUserSelectedProject(Project idProject){
|
public User updateUserSelectedProject(Project idProject){
|
||||||
User principal = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
|
User principal = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
|
||||||
|
|
||||||
principal.setSelectedProject(idProject);
|
principal.setSelectedProject(idProject);
|
||||||
User u = userRepo.save(principal);
|
User u = userRepo.save(principal);
|
||||||
|
return u;
|
||||||
User principal2 = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
|
|
||||||
|
|
||||||
return true;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public User updateUserSelectedApplication(Application application){
|
||||||
|
User principal = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
|
||||||
|
|
||||||
/* public static List<ObjectId> convertToObjectIdList(List<String> listProjectIds) {
|
principal.setSelectedApplication(application);
|
||||||
List<ObjectId> objectIdList = new ArrayList<>();
|
User u = userRepo.save(principal);
|
||||||
ObjectMapper objectMapper = new ObjectMapper();
|
return u;
|
||||||
|
|
||||||
for (String jsonString : listProjectIds) {
|
|
||||||
try {
|
|
||||||
// Deserializza la stringa JSON in un oggetto mappa
|
|
||||||
Map<String, String> map = objectMapper.readValue(jsonString, Map.class);
|
|
||||||
// Estrai il valore dell'ObjectId e creane un'istanza
|
|
||||||
String oid = map.get("$oid");
|
|
||||||
if (oid != null) {
|
|
||||||
objectIdList.add(new ObjectId(oid));
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace(); // Gestione degli errori
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return objectIdList;
|
|
||||||
} */
|
|
||||||
|
|
||||||
public static List<ObjectId> convertToObjectIdList(List<String> listProjectIds) {
|
public static List<ObjectId> convertToObjectIdList(List<String> listProjectIds) {
|
||||||
List<ObjectId> objectIdList = new ArrayList<>();
|
List<ObjectId> objectIdList = new ArrayList<>();
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import org.springframework.ai.vectorstore.VectorStore;
|
|||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.cloud.client.discovery.DiscoveryClient;
|
import org.springframework.cloud.client.discovery.DiscoveryClient;
|
||||||
import org.springframework.scheduling.annotation.Async;
|
import org.springframework.scheduling.annotation.Async;
|
||||||
|
import org.springframework.security.core.context.SecurityContextHolder;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import com.olympus.hermione.dto.ScenarioExecutionInput;
|
import com.olympus.hermione.dto.ScenarioExecutionInput;
|
||||||
@@ -31,6 +32,7 @@ import com.olympus.hermione.models.ScenarioStep;
|
|||||||
import com.olympus.hermione.repository.AiModelRepository;
|
import com.olympus.hermione.repository.AiModelRepository;
|
||||||
import com.olympus.hermione.repository.ScenarioExecutionRepository;
|
import com.olympus.hermione.repository.ScenarioExecutionRepository;
|
||||||
import com.olympus.hermione.repository.ScenarioRepository;
|
import com.olympus.hermione.repository.ScenarioRepository;
|
||||||
|
import com.olympus.hermione.security.entity.User;
|
||||||
import com.olympus.hermione.stepSolvers.AdvancedAIPromptSolver;
|
import com.olympus.hermione.stepSolvers.AdvancedAIPromptSolver;
|
||||||
import com.olympus.hermione.stepSolvers.BasicAIPromptSolver;
|
import com.olympus.hermione.stepSolvers.BasicAIPromptSolver;
|
||||||
import com.olympus.hermione.stepSolvers.BasicQueryRagSolver;
|
import com.olympus.hermione.stepSolvers.BasicQueryRagSolver;
|
||||||
@@ -236,9 +238,29 @@ public class ScenarioExecutionService {
|
|||||||
|
|
||||||
logger.info("Executing scenario: " + scenario.getName());
|
logger.info("Executing scenario: " + scenario.getName());
|
||||||
|
|
||||||
|
|
||||||
ScenarioExecution scenarioExecution = new ScenarioExecution();
|
ScenarioExecution scenarioExecution = new ScenarioExecution();
|
||||||
scenarioExecution.setScenario(scenario);
|
scenarioExecution.setScenario(scenario);
|
||||||
scenarioExecution.setScenarioExecutionInput(scenarioExecutionInput);
|
scenarioExecution.setScenarioExecutionInput(scenarioExecutionInput);
|
||||||
|
|
||||||
|
try{
|
||||||
|
if( SecurityContextHolder.getContext() != null
|
||||||
|
&& SecurityContextHolder.getContext().getAuthentication() != null
|
||||||
|
&& SecurityContextHolder.getContext().getAuthentication().getPrincipal()!= null
|
||||||
|
){
|
||||||
|
|
||||||
|
User principal = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
|
||||||
|
scenarioExecution.setExecutedByUserId(principal.getId());
|
||||||
|
|
||||||
|
scenarioExecutionInput.getInputs().put("selected_application", principal.getSelectedApplication().getInternal_name());
|
||||||
|
scenarioExecutionInput.getInputs().put("selected_project", principal.getSelectedProject().getInternal_name());
|
||||||
|
}
|
||||||
|
|
||||||
|
}catch(Exception e){
|
||||||
|
logger.error("Error while saving user information in scenario execution: " + e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
scenarioExecutionRepository.save(scenarioExecution);
|
scenarioExecutionRepository.save(scenarioExecution);
|
||||||
|
|
||||||
scenarioOutput.setScenarioExecution_id(scenarioExecution.getId());
|
scenarioOutput.setScenarioExecution_id(scenarioExecution.getId());
|
||||||
|
|||||||
Reference in New Issue
Block a user