mercoledì 25 febbraio 2015

Implementazione di una relazione uno-a-molti

Vai all'indice

Il prossimo passo nella costruzione della webapp Prototype è la gestione degli Uffici e l'integrazione con la classe Utente. La struttura delle entità è la stessa proposta nel post Hibernate relazione uno a molti, nel quale si esemplifica la relazione uno a molti tra due tabelle di un database. Nella specifica relazione utenti/uffici ogni utente appartiene ad un solo ufficio, mentre ad ogni ufficio possono appartenere molti utenti.
Per la gestione delle operazioni di inserimento, cancellazione e modifica creo una nuova pagina ufficio.xhtml a cui associo il backing bean ufficiBean. La logica di sviluppo è del tutto simile a quella già descritta per la gestione degli utenti, ma molto più semplice, in quanto l'elaborazione è limitata alla gestione di due campi. Per questo motivo non mi soffermo oltre su questo aspetto, tuttavia chi è interessato può trovare tutto il codice su GitHub.



       <h:selectOneMenu id="ufficio" value="#{utenti.seluff}" effect="fold">
             <f:selectItems value="#{utenti.ufficio1Value}"/>
       </h:selectOneMenu>

Il managed bean utentiBean subisce sostanziali modifiche per la gestione del nuovo campo. Innanzitutto definisco un oggetto Map a cui assegno il nome ufficio1List e nel quale carico i dati da inserire nell'oggetto selectOneMenu. Nel codice seguente riporto il metodo per il caricamento della mappa partendo dall'estrazione della tabella Ufficio:

 public Map ufficio1List = new HashMap();
     public Map getUfficio1Value() {
        int indi=0;
        for (Ufficio uff : uffix) {
             ufficio1List.put(uff.getNomeUfficio(), Integer.toString(uff.getUfficioId()));
             indi = indi + 1;
        }
     return ufficio1List;
  }

Nei metodi addAction e onEdit, che rispondono rispettivamente agli eventi di caricamento e modifica dei dati degli utenti, definisco il collegamento tra gli oggetti Utente e Ufficio.

Ufficio uff = ufficioDao.getUfficio(Integer.parseInt(seluff));

Nell'entità di appoggio utenteBean, che raggruppa i dati estratti dalle tabelle Utente e DettaglioUtente per il caricamento dell'oggetto datatable, definisco il nuovo campo nomeUff in cui salvo la denominazione dell'ufficio da esporre come output al momento del caricamento.

La WebApp aggiornata è scaricabile da GitHub.

Hai apprezzato questo post? Conferma le mie competenze o scrivi una segnalazione sul mio profilo Linkedin!

Nessun commento:

Posta un commento