Class ScenarioService

java.lang.Object
it.uniupo.simnova.service.scenario.ScenarioService

@Service public class ScenarioService extends Object
Servizio per la gestione degli scenari. Fornisce metodi per recuperare, creare e aggiornare i dati degli scenari nel database. Questo servizio gestisce le operazioni CRUD di base per gli scenari, inclusa la determinazione del tipo di scenario (Quick, Advanced, Patient Simulated).
Version:
1.0
Author:
Alessandro Zappatore
  • Method Details

    • getScenarioById

      public Scenario getScenarioById(Integer id)
      Recupera un oggetto Scenario completo dal database utilizzando il suo identificativo.
      Parameters:
      id - L'identificativo (Integer) dello scenario da recuperare.
      Returns:
      L'oggetto Scenario corrispondente all'identificativo fornito; null se non trovato o in caso di errore SQL.
    • getAllScenarios

      public List<Scenario> getAllScenarios()
      Recupera una lista di tutti gli scenari presenti nel database. Per motivi di performance e di visualizzazione, vengono recuperati solo i campi essenziali.
      Returns:
      Una List di oggetti Scenario contenente gli scenari principali. Restituisce una lista vuota in caso di errore o se non sono presenti scenari.
    • startQuickScenario

      public int startQuickScenario(Integer scenarioId, String titolo, String nomePaziente, String patologia, String autori, float timerGenerale, String tipologia)
      Crea un nuovo scenario rapido o aggiorna uno esistente nel database. Se scenarioId è null o lo scenario non esiste, ne viene creato uno nuovo. Altrimenti, lo scenario esistente viene aggiornato.
      Parameters:
      scenarioId - L'ID (Integer) dello scenario da aggiornare. Se null, un nuovo scenario sarà creato.
      titolo - Il titolo dello scenario.
      nomePaziente - Il nome del paziente associato.
      patologia - La patologia del paziente.
      autori - I nomi degli autori dello scenario.
      timerGenerale - Il timer generale preimpostato per lo scenario.
      tipologia - La tipologia del paziente (es. "Adulto", "Pediatrico").
      Returns:
      L'ID (int) dello scenario creato o aggiornato; -1 in caso di errore.
    • updateScenarioDescription

      public boolean updateScenarioDescription(int scenarioId, String descrizione)
      Aggiorna il campo descrizione dello scenario specificato.
      Parameters:
      scenarioId - L'ID (int) dello scenario da aggiornare.
      descrizione - La nuova descrizione (String) da impostare.
      Returns:
      true se l'aggiornamento è avvenuto con successo; false altrimenti.
    • updateScenarioBriefing

      public boolean updateScenarioBriefing(int scenarioId, String briefing)
      Aggiorna il campo briefing dello scenario specificato.
      Parameters:
      scenarioId - L'ID (int) dello scenario da aggiornare.
      briefing - Il nuovo briefing (String) da impostare.
      Returns:
      true se l'aggiornamento è avvenuto con successo; false altrimenti.
    • updateScenarioPattoAula

      public boolean updateScenarioPattoAula(int scenarioId, String patto_aula)
      Aggiorna il campo patto_aula dello scenario specificato.
      Parameters:
      scenarioId - L'ID (int) dello scenario da aggiornare.
      patto_aula - Il nuovo patto aula (String) da impostare.
      Returns:
      true se l'aggiornamento è avvenuto con successo; false altrimenti.
    • updateScenarioObiettiviDidattici

      public boolean updateScenarioObiettiviDidattici(int scenarioId, String obiettivo)
      Aggiorna il campo obiettivo (obiettivi didattici) dello scenario specificato.
      Parameters:
      scenarioId - L'ID (int) dello scenario da aggiornare.
      obiettivo - Il nuovo obiettivo didattico (String) da impostare.
      Returns:
      true se l'aggiornamento è avvenuto con successo; false altrimenti.
    • updateScenarioMoulage

      public boolean updateScenarioMoulage(int scenarioId, String moulage)
      Aggiorna il campo moulage dello scenario specificato.
      Parameters:
      scenarioId - L'ID (int) dello scenario da aggiornare.
      moulage - Il nuovo moulage (String) da impostare.
      Returns:
      true se l'aggiornamento è avvenuto con successo; false altrimenti.
    • updateScenarioLiquidi

      public boolean updateScenarioLiquidi(int scenarioId, String liquidi)
      Aggiorna il campo liquidi dello scenario specificato.
      Parameters:
      scenarioId - L'ID (int) dello scenario da aggiornare.
      liquidi - I nuovi liquidi (String) da impostare.
      Returns:
      true se l'aggiornamento è avvenuto con successo; false altrimenti.
    • getScenarioType

      public String getScenarioType(int idScenario)
      Determina il tipo di scenario (Quick, Advanced, o Patient Simulated) in base alla sua presenza nelle tabelle specifiche (Scenario, AdvancedScenario, PatientSimulatedScenario).
      Parameters:
      idScenario - L'ID (int) dello scenario di cui determinare il tipo.
      Returns:
      Una String che rappresenta il tipo di scenario (es. "Quick Scenario", "Advanced Scenario", "Patient Simulated Scenario"). Restituisce "ScenarioNotFound" se l'ID non è presente in nessuna delle tabelle pertinenti.
    • isPresentInTable

      public boolean isPresentInTable(int id, String tableName)
      Controlla se un dato ID è presente come chiave primaria in una tabella specificata. Questo è un metodo generico per verificare l'esistenza di record nelle tabelle correlate allo scenario.
      Parameters:
      id - L'ID (int) da cercare.
      tableName - Il nome (String) della tabella in cui cercare. I nomi delle tabelle supportati sono "Scenario", "AdvancedScenario", "PatientSimulatedScenario".
      Returns:
      true se l'ID è presente nella tabella; false altrimenti o se il nome della tabella non è riconosciuto.
    • existScenario

      public boolean existScenario(int scenarioId)
      Controlla se uno scenario esiste nel database in base al suo ID. Questo è un metodo di convenienza che chiama isPresentInTable(int, String) per la tabella Scenario.
      Parameters:
      scenarioId - L'ID (int) dello scenario da verificare.
      Returns:
      true se lo scenario esiste; false altrimenti.
    • isPediatric

      public boolean isPediatric(int scenarioId)
      Verifica se uno scenario è di tipo "Pediatrico" basandosi sulla sua tipologia paziente.
      Parameters:
      scenarioId - L'ID (int) dello scenario da controllare.
      Returns:
      true se la tipologia paziente dello scenario è "Pediatrico" (case-insensitive); false altrimenti.
    • updateScenarioGenitoriInfo

      public boolean updateScenarioGenitoriInfo(Integer scenarioId, String value)
      Aggiorna il campo info_genitore dello scenario specificato. Questo campo contiene informazioni destinate ai genitori, ad esempio in scenari pediatrici.
      Parameters:
      scenarioId - L'ID (Integer) dello scenario da aggiornare.
      value - Il nuovo valore (String) delle informazioni per i genitori.
      Returns:
      true se l'aggiornamento è avvenuto con successo; false altrimenti.
    • updateScenarioTarget

      public boolean updateScenarioTarget(Integer scenarioId, String target)
      Aggiorna il campo target dello scenario specificato. Questo campo indica il pubblico di riferimento o l'obiettivo generale dello scenario.
      Parameters:
      scenarioId - L'ID (Integer) dello scenario da aggiornare.
      target - Il nuovo valore (String) per il target dello scenario.
      Returns:
      true se l'aggiornamento è avvenuto con successo; false altrimenti.
    • updateScenarioTitleAndAuthors

      public void updateScenarioTitleAndAuthors(Integer scenarioId, String newTitle, String newAuthors)
      Aggiorna contemporaneamente il titolo e gli autori di uno scenario.
      Parameters:
      scenarioId - L'ID (Integer) dello scenario da aggiornare.
      newTitle - Il nuovo titolo (String) da impostare.
      newAuthors - I nuovi autori (String) da impostare.
    • updateSingleField

      public void updateSingleField(int id, String label, String newValue)
      Aggiorna un singolo campo dello scenario, identificato da un label logico, con un nuovo valore. I label vengono mappati ai nomi delle colonne del database.
      Parameters:
      id - L'ID (int) dello scenario da aggiornare.
      label - Il label logico del campo da aggiornare. I valori supportati sono:
      • "Paziente" (mappa a nome_paziente)
      • "Patologia" (mappa a patologia)
      • "Tipologia" (mappa a tipologia_paziente)
      • "Durata" (mappa a timer_generale)
      newValue - Il nuovo valore (String) da impostare per il campo. Per il campo "Durata", il valore sarà convertito in un tipo numerico appropriato dal database.
      Throws:
      IllegalArgumentException - se il label fornito non è riconosciuto.