Class DataInitializerService
Questa classe agisce come un Seeder applicativo, orchestrando la creazione di entità complesse come aziende, utenti, ruoli e moduli preconfigurati. È progettata per essere eseguita in fase di startup (tipicamente in ambienti di sviluppo o per la prima installazione) per garantire la presenza di un set minimo di dati coerenti necessari per il funzionamento e il collaudo della piattaforma Modulink.
La classe gestisce dipendenze multiple verso repository e servizi di dominio per assicurare che le relazioni tra entità (es. associazioni utente-ruolo, attivazioni moduli-azienda) siano persistite rispettando i vincoli di integrità referenziale.
- Since:
- 1.0.0
- Version:
- 1.4.2
- Author:
- Modulink Team
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final AssociazioneRepositoryprivate final AttivazioneRepositoryprivate final AttivazioneServiceprivate final AziendaServiceprivate final CustomUserDetailsServiceprivate final EventoServiceprivate final ModuloRepositoryprivate final PartecipazioneRepositoryprivate final PertinenzaRepositoryprivate final ProdottoServiceprivate final RuoloRepositoryprivate final TaskService -
Constructor Summary
ConstructorsConstructorDescriptionDataInitializerService(AziendaService aziendaService, CustomUserDetailsService customUserDetailsService, RuoloRepository ruoloRepository, AssociazioneRepository associazioneRepository, ModuloRepository moduloRepository, AttivazioneRepository attivazioneRepository, PertinenzaRepository pertinenzaRepository, EventoService eventoService, PartecipazioneRepository partecipazioneRepository, AttivazioneService attivazioneService, TaskService taskService, ProdottoService prodottoService) Costruttore per l'iniezione delle dipendenze richieste dal contesto Spring. -
Method Summary
Modifier and TypeMethodDescriptionvoidGenera e persiste un set di dati dimostrativi per aziende fittizie ("Tech Solutions" e "Green Energy").voidInizializza l'azienda principale "ModuLink" con la configurazione completa di sistema.voidEsegue la sequenza completa di inizializzazione dei dati.
-
Field Details
-
aziendaService
-
customUserDetailsService
-
ruoloRepository
-
associazioneRepository
-
moduloRepository
-
attivazioneRepository
-
pertinenzaRepository
-
eventoService
-
partecipazioneRepository
-
attivazioneService
-
taskService
-
prodottoService
-
-
Constructor Details
-
DataInitializerService
public DataInitializerService(AziendaService aziendaService, CustomUserDetailsService customUserDetailsService, RuoloRepository ruoloRepository, AssociazioneRepository associazioneRepository, ModuloRepository moduloRepository, AttivazioneRepository attivazioneRepository, PertinenzaRepository pertinenzaRepository, EventoService eventoService, PartecipazioneRepository partecipazioneRepository, AttivazioneService attivazioneService, TaskService taskService, ProdottoService prodottoService) Costruttore per l'iniezione delle dipendenze richieste dal contesto Spring.Utilizza la Constructor Injection per garantire che il servizio sia istanziato solo quando tutti i collaboratori necessari (Service e Repository) sono disponibili.
- Parameters:
aziendaService- Servizio per la gestione delle anagrafiche aziendali.customUserDetailsService- Servizio per la gestione e autenticazione degli utenti.ruoloRepository- Repository per la persistenza dei ruoli aziendali.associazioneRepository- Repository per associare utenti ai ruoli.moduloRepository- Repository per la gestione del catalogo moduli.attivazioneRepository- Repository per attivare moduli specifici per le aziende.pertinenzaRepository- Repository per definire i permessi (pertinenze) ruolo-modulo.eventoService- Servizio per la gestione del calendario ed eventi.partecipazioneRepository- Repository per gestire i partecipanti agli eventi.attivazioneService- Servizio di dominio per logiche complesse di attivazione moduli.taskService- Servizio per la gestione delle attività (Task).prodottoService- Servizio per la gestione del magazzino prodotti.
-
-
Method Details
-
addDemoAzienda
public void addDemoAzienda()Genera e persiste un set di dati dimostrativi per aziende fittizie ("Tech Solutions" e "Green Energy").Questo metodo simula uno scenario operativo realistico creando:
- Aziende con profili completi.
- Utenti con diversi livelli di accesso (Admin, User, Manager, Tech).
- Ruoli specifici per azienda con colori e descrizioni personalizzate.
- Attivazione di sottoinsiemi di moduli (GTM, GDM, Calendario) differenziati per azienda.
- Dati operativi come Prodotti di magazzino, Task assegnati e Eventi in calendario.
- Since:
- 1.0.0
-
addModulinkAzienda
public void addModulinkAzienda()Inizializza l'azienda principale "ModuLink" con la configurazione completa di sistema.Questo metodo crea l'entità aziendale master e registra gli utenti amministratori/fondatori (es. team di sviluppo). Inoltre:
- Definisce il catalogo completo dei moduli disponibili nel sistema (News, Supporto, Admin, GDU, GRU, GMA, ecc.).
- Configura i ruoli gerarchici di base (Responsabile, Utente Nuovo, Utente Standard).
- Attiva tutti i moduli per l'azienda master per scopi di amministrazione globale.
- Assegna le pertinenze complete al ruolo Responsabile per la gestione totale della piattaforma.
- Since:
- 1.0.0
-
runInitialization
@Transactional public void runInitialization()Esegue la sequenza completa di inizializzazione dei dati.Questo metodo agisce come entry point transazionale per il popolamento del DB. L'annotazione
Transactionalassicura che l'intera procedura sia atomica: in caso di errore runtime durante una qualsiasi delle fasi (creazione Modulink o aziende demo), viene eseguito il rollback completo per evitare stati inconsistenti del database.Sequenza operativa:
- Creazione azienda Modulink e moduli di sistema.
- Creazione aziende demo e dati operativi correlati.
- Since:
- 1.0.0
-