FAM - Crear manteniment simple

1. Prerequisits

2. Creació del manteniment

Aquest document explica com fer un manteniment simple d’una entitat de base de dades, es a dir, una pàgina de llista i una de detall on es puguin fer les accions més habituals.

Nota: Aquest manteniment d’exemple es farà sobre la entitat document, copiant el manteniment de Zona del Fam que és un dels més simples.

Nota: Per entendre la estructura de les classes veure el document FWK_Estructura_Classes

2.1. Creació de la entitat

FAM: FamZona (implements DibaEntity)
Exemple: TedibaDocument (implements DibaEntity)

Aquest manteniment es basarà en una entitat (classe java associada a una taula). Si aquesta entitat no està creada, veure el document FWK_Mapeig_BBDD per generar el model de dades en java.

  • Ha d’implementar la interfície DibaEntity, només obliga a informar el mètode getId().
  • Es pot implementar la interfície DibaSelectItem, si es vol mostrar la entitat a combos.

2.2. Creació del filtre

FAM: ZonaSearchFilter (extends BaseSearchFilter)
Exemple: DocumentSearchFilter (extends BaseSearchFilter)

Crear una classe (còpia de ZonaSearchFilter) que especifiqui els camps que es poden filtrar.

Adaptació de la classe:

  • Canviar l’ordre per defecte.
  • S’han de configurar els camps per filtre. Zona està preparat per filtrar per un camp descriptiu, es poden modificar.

2.3. Creació del DAO

FAM: ZonaDAO (extends DefaultGenericListDao<FamZona, ZonaSearchFilter>)
Exemple: DocumentDAO (extends
DefaultGenericListDao<TedibaDocument, DocumentSearchFilter>)

Crear una classe (còpia de ZonaDAO) que sigui la encarregada de treballar amb la base de dades.

Adaptació de la classe:

  • Definir la funció creaQuery que construeix la consulta a partir dels filtres. (canviar nom de taula i nom de columnes)

2.4. Creació del Servei

FAM: ZonaService (extends DefaultGenericListService<FamZona, ZonaSearchFilter>)
Exemple: DocumentService (extends
DefaultGenericListService<TedibaDocument, DocumentSearchFilter>)

Crear una classe (còpia de ZonaService) que sigui la encarregada de tenir les accions en serveis, com ara operacions amb base de dades dintre de transaccions.

Adaptació de la classe:

  • Configurar del dao correcte
  • Definir la funció checkBeforeDelete que fa validacions prèvies al esborrat de la entitat.
  • Es pot implementar el mètode de combo() per mostrar la entitat dintre de combos

2.5. Creació del ListModule

FAM: ZonaListModule (extends AbstractGenericListBB< ZonaSearchFilter, FamZona>)
Exemple: DocumentListModule (extends
AbstractGenericListBB <DocumentSearchFilter, TedibaDocument>)

Crear una classe (còpia de ZonaListModule) que tindrà les funcionalitats relatives a llistes de manera que es pugui aprofitar en diferents llocs (Beans de manteniments, popups, autocompletar...).

Adaptació de la classe:

  • Configurar el servei i el filtre correctes
  • Revisar els mètodes reset, select, search (seran com els del ZonaListModule però adaptant les classes a les de documents)

2.6. Creació del Backed Bean

FAM: ZonaBB (extends AbstractGenericBB< ZonaSearchFilter, FamZona>)
Exemple: DocumentBB (extends
AbstractGenericBB <DocumentSearchFilter, TedibaDocument>)

Crear una classe (còpia de ZonaBB) que es farà servir per connectar amb les jsp.

Adaptació de la classe:

  • S’han de configurar el servei i el listModule correctes
  • S’han de revisar els mètodes enter, prepareCopy, resetDetail, validate (seran com els del ZonaBB però adaptant les classes a les de documents)

Cal afegir la definició del bb al faces-config-bb per que es pugui veure des de les jsp.

<managed-bean>
    <managed-bean-name>zonaBB</managed-bean-name>
    <managed-bean-class>cat.diba.jee.fam.view.bb.ZonaBB</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
</managed-bean>

2.7. Creació de la jsp de llista

FAM: pZonaLlista.jspx
Exemple: pDocumentLlista.jspx

Pendent de especificar per dummies

2.8. Creació de la jsp de detall

FAM: pZonaDetall.jspx
Exemple: pDocumentDetall.jspx

Pendent de especificar per dummies

2.9. Navegació

Afegir un punt d’entrada, per exemple al menú com al FamZona

  • Al menu.jspx afegir una entrada
  • Al faces-config-nav afegir una regla de navegació per tal que l’enllaç del menú funcioni

<navigation-case>
    <from-action>#{zonaBB.enter}</from-action>
    <from-outcome>MENU</from-outcome>
    <to-view-id>/jsp/pZonaLlista.jspx</to-view-id>
</navigation-case>

Definir la navegació entre la llista i el detall

<!--  ZONA  -->
<navigation-rule>
    <from-view-id>/jsp/pZonaLlista.jspx</from-view-id>
    <navigation-case>
    <from-outcome>DETALL</from-outcome>
    <to-view-id>/jsp/pZonaDetall.jspx</to-view-id>
    </navigation-case>
</navigation-rule>
<navigation-rule>
    <from-view-id>/jsp/pZonaDetall.jspx</from-view-id>
    <navigation-case>
    <from-outcome>LLISTA</from-outcome>
    <to-view-id>/jsp/pZonaLlista.jspx</to-view-id>
    </navigation-case>
</navigation-rule>

3. Extras

Pensar com afegir funcionalitats (referenciar a altres documents)

3.1. Popup / Suggest / Nous mètodes / pestanyes ...

1
Grups de treball:
Plataforma JEE