diff --git a/src/main/java/com/olympus/hermione/controllers/KSDocumentController.java b/src/main/java/com/olympus/hermione/controllers/KSDocumentController.java new file mode 100644 index 0000000..fb2f65d --- /dev/null +++ b/src/main/java/com/olympus/hermione/controllers/KSDocumentController.java @@ -0,0 +1,38 @@ +package com.olympus.hermione.controllers; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +import com.olympus.hermione.services.KSDocumentService; +import com.olympus.model.apollo.KSDocument; + +@RestController +public class KSDocumentController { + + @Autowired + private KSDocumentService ksDocumentService; + + /** + * Recupera tutti i KSDocument per il progetto selezionato dall'utente corrente + * @return Lista di KSDocument + */ + @GetMapping("/ksDocuments") + public List getKSDocuments() { + return ksDocumentService.getKSDocumentsByUserSelectedProject(); + } + + /** + * Recupera tutti i KSDocument per un progetto specifico + * @param projectId ID del progetto + * @return Lista di KSDocument + */ + @PostMapping("/ksDocuments/byProject") + public List getIngestedKSDocumentsByProject() { + return ksDocumentService.getIngestedKSDocumentsByUserSelectedProject(); + } +} \ No newline at end of file diff --git a/src/main/java/com/olympus/hermione/models/ScenarioInputs.java b/src/main/java/com/olympus/hermione/models/ScenarioInputs.java index c1cc09a..ea5417a 100644 --- a/src/main/java/com/olympus/hermione/models/ScenarioInputs.java +++ b/src/main/java/com/olympus/hermione/models/ScenarioInputs.java @@ -12,4 +12,5 @@ public class ScenarioInputs { private String name; private String type; private String label; + private String dataSource; // "videoGroups", "ksDocuments", etc. } diff --git a/src/main/java/com/olympus/hermione/repository/KSDocumentRepository.java b/src/main/java/com/olympus/hermione/repository/KSDocumentRepository.java new file mode 100644 index 0000000..997c627 --- /dev/null +++ b/src/main/java/com/olympus/hermione/repository/KSDocumentRepository.java @@ -0,0 +1,19 @@ +package com.olympus.hermione.repository; + +import java.util.List; + +import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.data.mongodb.repository.Query; +import org.springframework.data.rest.core.annotation.RepositoryRestResource; + +import com.olympus.model.apollo.KSDocument; + +@RepositoryRestResource(collectionResourceRel = "ksdocuments", path = "ksdocuments") +public interface KSDocumentRepository extends MongoRepository { + + @Query("{'ingestionInfo.metadata.KsProjectName': ?0}") + List findByProjectName(String projectName); + + @Query("{'ingestionInfo.metadata.KsProjectName': ?0, 'ingestionStatus': 'INGESTED'}") + List findByProjectNameAndIngested(String projectName); +} \ No newline at end of file diff --git a/src/main/java/com/olympus/hermione/services/KSDocumentService.java b/src/main/java/com/olympus/hermione/services/KSDocumentService.java new file mode 100644 index 0000000..e65a395 --- /dev/null +++ b/src/main/java/com/olympus/hermione/services/KSDocumentService.java @@ -0,0 +1,63 @@ +package com.olympus.hermione.services; + +import java.util.List; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Service; + +import com.olympus.hermione.repository.KSDocumentRepository; +import com.olympus.hermione.security.entity.User; +import com.olympus.model.apollo.KSDocument; + +@Service +public class KSDocumentService { + + private Logger logger = LoggerFactory.getLogger(KSDocumentService.class); + + @Autowired + private KSDocumentRepository ksDocumentRepository; + + /** + * Recupera tutti i KSDocument per il progetto selezionato dall'utente corrente + * @return Lista di KSDocument + */ + public List getKSDocumentsByUserSelectedProject() { + logger.info("getKSDocumentsByUserSelectedProject function:"); + + User principal = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); + + if (principal.getSelectedProject() == null) { + logger.warn("No project selected for user: {}", principal.getUsername()); + return List.of(); + } + + String projectName = principal.getSelectedProject().getInternal_name(); + logger.info("Retrieving KSDocuments for project: {}", projectName); + + return ksDocumentRepository.findByProjectName(projectName); + } + + /** + * Recupera tutti i KSDocument completati per il progetto selezionato dall'utente corrente + * @return Lista di KSDocument con stato COMPLETED + */ + public List getIngestedKSDocumentsByUserSelectedProject() { + logger.info("getIngestedKSDocumentsByUserSelectedProject function:"); + + User principal = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); + + if (principal.getSelectedProject() == null) { + logger.warn("No project selected for user: {}", principal.getUsername()); + return List.of(); + } + + String projectName = principal.getSelectedProject().getInternal_name(); + logger.info("Retrieving ingested KSDocuments for project: {}", projectName); + + return ksDocumentRepository.findByProjectNameAndIngested(projectName); + } + +} \ No newline at end of file