The SmartWeb Project

16 novembre 2005

valorize e populate

Se ho un bean contenente oggetti diversi da tipi nativi e Enumeration ho la necessità
di impostare (sul form o sul bean) manualmente questi valori DOPO aver fatto il valorize o il populate.
Sarebbe bello se il valorize e il populate svolgessero questo lavoro (chiamando opportunamente le operazione di find sul domain) utilizzando a tal fine l'ID.

Esempio:
per fare l'update di Sezione mi ritrovo a dover eseguire le seguenti istruzioni:

1) super.valorize(form, classe, request.getLocale());

2) String idSezione = request.getParameter("id-sezione");
3) classe.setSezione(domain.findSezione(idSezione));

4) domain.updateClasse(classe);


è da considerare che l'oggetto Classe ha soltano un tipo non nativo (Sezione)
ma se gli oggetti non nativi fossero 10 mi ritroverei ad eseguire

2 x 10 Istruzioni + 2 = Almeno 22 Istruzioni nel metodo Update di UNA ACTION !
( e come sappiamo meno istruzioni ci sono in una action meglio è......)

1 Comments:

  • Forse sarebbe comodo, ma sicuramente scorretto sotto molti aspetti in quanto non avresti più tu il controllo delle operazioni eseguite sul database e potresti ritrovarti con tutta una serie di operazioni eseguite senza che tu lo desideri (magari qualcuna di queste anche abbastanza onerosa).

    Inoltre porteresti sullo strato di presentazione (Action e Valorizer fanno parte di questo strato) della logica di persistenza (le operazioni sul database effettuate attraverso le Factory).

    In quei casi dove è possibile ritrovarsi con una serie di operazioni da effettuare, come nell'esempio che proponi tu, è utile definire un metodo apposito sul Domain ed un altro metodo altrettanto apposito sulla Factory.

    Ritengo che quest'ultimo metodo, anzi insieme di metodi, sulla Factory potremmo anche prevederlo nella classe base, così da averlo a gratis dovunque:

    - findByKeySet(Collection keys)
    - remove(Set objects)
    - add(Collection objects)
    - update(Set objects)

    N.B: suggerisco di usare l'interfaccia Set e non Collection per remove ed update per impedire update multiple e rimozioni duplicate (con conseguente errore).

    By Blogger Gaetano Perrone, at 12:49 AM  

Posta un commento

<< Home