Questa pull request introduce una significativa ristrutturazione e miglioramento del Task 5, con l'obiettivo di rendere il sistema più modulare, manutenibile e facile da estendere. I principali miglioramenti includono:
Introduzione di una Gerarchia di Classi per la Gestione dei Task:
Sono state create nuove classi che gestiscono i servizi dei task e interagiscono con essi (attualmente T1, T23, T4 e T7).
Ogni classe di un task segue una struttura uniforme e implementa un'interfaccia comune, facilitando l'aggiunta di nuovi servizi in futuro.
Dispatcher dei Servizi:
È stato introdotto un dispatcher dei servizi che centralizza la gestione delle chiamate REST, evitando così la duplicazione del codice.
Inoltre non c'è più bisogno di ricorrere alla costruzione degli URL e badare ai parametri, l'utente tramite il dispatcher non ha più nessuna preoccupazione dal punto di vista di connessioni di rete e invio di messaggi.
Inoltre è stato introdotto anche un meccanismo, tramite una semplice classe chiamata Action, per migliorare l'integrazione col sistema, in effetti ora è possibile definire un servizio formato da varie azioni, di tali azioni si va ad indicare il tipo di ritorno e i parametri di cui ha bisogno, l'utente non dovrà preoccuparsi di integrare controlli di questo tipo poiché sono automatizzati dal nostro dispatcher.
Ad esempio il servizio letago al T1 viene così definito:
public class T1Service extends BaseService {
private static final String BASE_URL = "http://manvsclass-controller-1:8080";
public T1Service(RestTemplate restTemplate) {
super(restTemplate, BASE_URL);
// Registrazione delle azioni
registerAction("getClasses", new ServiceActionDefinition(
params -> getClasses() //Metodo senza argomenti
));
registerAction("getClassUnderTest", new ServiceActionDefinition(
params -> getClassUnderTest((String) params[0]),
String.class
));
}
// Metodi effettivi
private List<ClassUT> getClasses() {
try{
return callRestGET("/home", null, new ParameterizedTypeReference<List<ClassUT>>() {});
}catch(Exception e){
throw new IllegalArgumentException("GetClasses fallimento errore:" + e.getMessage());
}
}
Standardizzazione delle Interfacce:
Tutte le chiamate ai servizi ora utilizzano interfacce standardizzate, migliorando la leggibilità e la coerenza del codice.
Questo approccio riduce l'accoppiamento tra i componenti e facilita il testing e la manutenzione.
Gestione Modulare dei Template HTML:
È stata migliorata la gestione dei template HTML, rendendola più modulare e facilmente personalizzabile.
è stato introdotto il concetto di componente, tale può essere generico, logico o oggetto, in base al suo ruolo nella pagina HTML, quindi è possibile aggiungerli alla pagina.
Qui un esempio di come nel controller è possibile definire una pagina:
In questo modo il controller si occupa solo di gestire le chiamate GET alle pagine, quindi solo il concetto di sessione e la costruzione degli URL e relativo routing con chi l'utente si interfaccia.
Integrazione di un Logger:
È in fase di sviluppo l'integrazione di un sistema di logging per i servizi, che permetterà di monitorare e tracciare le operazioni e gli errori in modo più efficace, ad ora è totalmente assente.
Questo miglioramento faciliterà il debugging e l'identificazione dei problemi, migliorando la stabilità e l'affidabilità dell'applicazione.
Miglioramento Grafica
Abbiamo colto l'occasione per uniformare e rinnovare l'aspetto grafico, inoltre viene gestito attraverso frammenti quindi le sezioni sono riutilizzabili per nuove pagine.
In conclusione, questa ristrutturazione non solo elimina la duplicazione del codice e semplifica la gestione delle chiamate REST, ma introduce anche una solida base per l'estensione futura del sistema.
La nuova struttura è più modulare, coerente e conforme ai principi di design software, rendendo il codice più leggibile, manutenibile e facilmente estendibile.
In risposta alla #issues25.
Questa pull request introduce una significativa ristrutturazione e miglioramento del Task 5, con l'obiettivo di rendere il sistema più modulare, manutenibile e facile da estendere. I principali miglioramenti includono:
Introduzione di una Gerarchia di Classi per la Gestione dei Task: Sono state create nuove classi che gestiscono i servizi dei task e interagiscono con essi (attualmente T1, T23, T4 e T7). Ogni classe di un task segue una struttura uniforme e implementa un'interfaccia comune, facilitando l'aggiunta di nuovi servizi in futuro.
Dispatcher dei Servizi: È stato introdotto un dispatcher dei servizi che centralizza la gestione delle chiamate REST, evitando così la duplicazione del codice. Inoltre non c'è più bisogno di ricorrere alla costruzione degli URL e badare ai parametri, l'utente tramite il dispatcher non ha più nessuna preoccupazione dal punto di vista di connessioni di rete e invio di messaggi. Inoltre è stato introdotto anche un meccanismo, tramite una semplice classe chiamata Action, per migliorare l'integrazione col sistema, in effetti ora è possibile definire un servizio formato da varie azioni, di tali azioni si va ad indicare il tipo di ritorno e i parametri di cui ha bisogno, l'utente non dovrà preoccuparsi di integrare controlli di questo tipo poiché sono automatizzati dal nostro dispatcher. Ad esempio il servizio letago al T1 viene così definito:
Standardizzazione delle Interfacce: Tutte le chiamate ai servizi ora utilizzano interfacce standardizzate, migliorando la leggibilità e la coerenza del codice. Questo approccio riduce l'accoppiamento tra i componenti e facilita il testing e la manutenzione.
Gestione Modulare dei Template HTML: È stata migliorata la gestione dei template HTML, rendendola più modulare e facilmente personalizzabile. è stato introdotto il concetto di componente, tale può essere generico, logico o oggetto, in base al suo ruolo nella pagina HTML, quindi è possibile aggiungerli alla pagina. Qui un esempio di come nel controller è possibile definire una pagina:
In questo modo il controller si occupa solo di gestire le chiamate GET alle pagine, quindi solo il concetto di sessione e la costruzione degli URL e relativo routing con chi l'utente si interfaccia.
Integrazione di un Logger: È in fase di sviluppo l'integrazione di un sistema di logging per i servizi, che permetterà di monitorare e tracciare le operazioni e gli errori in modo più efficace, ad ora è totalmente assente. Questo miglioramento faciliterà il debugging e l'identificazione dei problemi, migliorando la stabilità e l'affidabilità dell'applicazione.
Miglioramento Grafica Abbiamo colto l'occasione per uniformare e rinnovare l'aspetto grafico, inoltre viene gestito attraverso frammenti quindi le sezioni sono riutilizzabili per nuove pagine.
In conclusione, questa ristrutturazione non solo elimina la duplicazione del codice e semplifica la gestione delle chiamate REST, ma introduce anche una solida base per l'estensione futura del sistema. La nuova struttura è più modulare, coerente e conforme ai principi di design software, rendendo il codice più leggibile, manutenibile e facilmente estendibile.