Créer, mettre à jour et supprimer des données en utilisant ADF Form dans ADF BC

View more Tutorials:

1- L'objectif de la leçon

Dans cette leçon, je vous explique comment créer une application ADF Fusion qui permet d'afficher des données sur le  ADF Form avec Row Navigation (La navigation des lignes d'enregistrement). Le ADF Form vous permet d'ajouter, de modifier les données d'un enregistrement ou de supprimer un enregistrement.
Voici est l'image de l'application :

2- Créer l'application

Tout d'abord, vous devez créer une application  ADF Fusion avec des base de réglages suivants :
  1. Créer l'application "ADF Fusion Web Application".
  2. Se connecter à une base de données.
  3. Créer un Application Module.
  4. Créer des Entity Object.
  5. Créer des View Object par défaut.
Vous pouvez voir les instructions ci-dessous :
Après effectuer les étapes ci-dessus, vous avez une application comme l'illustration suivante :

3- Créer un objet LOV View

Lorsque vous créez un nouveau personnel (Tableau EMPLOYEES) vous devez sélectionner un département (Tableau DEPARTMENTS) pour cet employé via un  ComboBox, ListBox, LOV (List Of Values),..
Vous devez créer des  LOV View Object qui sera utilisés dans plusieurs fonctions de l'application.
Sur  JDeveloper sélectionnez:
  • File/New/From Gallery...
    • >> Bussiness Tier/ADF Bussiness Components/View Object
Saisissez :
  • Package: org.o7planning.adf.model.lovviews
  • Name: LOVDepartments
Select Dep.Department_Id
      ,Dep.Department_Name
      ,Loc.City
From   Departments Dep
      ,Locations   Loc
Where  Dep.Location_Id = Loc.Location_Id(+)
Order By Dep.Department_Name
View Object ( LOVDept) a été créé :

LOVJobs

De la même manière, continuez de créer un autre  LOV View Object nommé  LOVJobs:
Select j.Job_Id
      ,j.Job_Title
From   Jobs j
Order By j.Job_Title
Next .. Next ... Next

4- Créer View Object (V01Employees)

Sur  JDeveloper sélectionnez:
  • File/New/From Gallery...
    • >> Bussiness Tier/ADF Bussiness Components/View Object
S'inscire à  V01Employees avec  Application Module:
Après l'inscription  V01Employees qui a été montré sur  Data Controls.

5- Créer des conseils pour l'interface utilisateur (UI Hints)

Lors que vous concevez l'interface d'un site web. Par exemple  V00Employees a 11 attributs (attribute), cela est équivalent à 11 colonnes dans le tableau de la base de données. L'outil de  ADF vous aide de créer  ADF Form (Le formulaire d'entrée de données).
Vous devez créer des conseils (Hint) pour  ADF Tool (L'outil de ADF).
Ouvrez  V01Employees ( View Object):

Créer des conseils de l'interface utilisateur (UI Hints) pour l'attribut DepartmentId.

Sélectionnez l'attribut  DepartmentId (DepartmentId attribute) et créez sa nouvelle  "List Of Values".
Sélectionnez  LOVDepartments ( LOV View Object) que vous avez créé dans les étapes ci-dessus.
ici je définis pour afficher la colonne  DepartmentId par le type  ComboBox. Si vous voulez afficher la colonne  DepartmentId par le type  LOV (List Of Values) Vous pouvez faire des références dans autres instructions suivantes:
 Passez à TAB: UI Hints.

Créer UI Hints pour l'attribut JobId

Test V01Employees utilise Oracle ADF Model Tester:

6- Créer View - emp

Ouvrez  adf-config.xml puis faites-y glisser l'objet View.
Double- cliquez sur  emp (View) dans  adf-config.xml afin de créer une page correspondante.
Cherchez le mot-clé  "deco" et faites-y glisser l'objet  "Decorative Box (ADF Faces.Layout)" au écran de  emp.jsf.

7- Créer le ADF Form

Faites glisser et déposez  V01Employees1 (View Object) de  Data Controls au zone  Center de  emp.jsf et sélectionnez  ADF Form, comme l'illustration ci-dessous :
OK, maintenant vous pouvez exécuter l'application. Sélectionnez  emp (View) sur  adf-config.xml et cliquez sur le bouton  Run ou  F11.

8- Submit & Commit

ADF crée un bouton  "Submit" pour vous afin de  submit la page web mais des données ne sont pas  "Commit". Par conséquent, il n'y a pas de changement de données dans la base de données.
Lorsque l'utilisateur appuie sur le bouton  "Submit" des données seront mises à jour dans  View Object et il n'y a auccun changement à la base de données.
Afin de faire des changement au niveau de la base de données, vous devez effectuer la fonction  Commit. Vous avez 2 choix de le faire :
  1. Manière 1: Appelez Commit à chaque fois que vous Submit.
  2. Manière 2: Créez le bouton Commit.

Méthode 1: Appelez Commit à chaque fois que vous Submit.

Appelez la fonction  Commit chaque fois lorsque l'utilisateur appuie le bouton  Submit.
Sur la fenêtre  emp.jsf, passez au  TAB Bindings, Cliquez sur l'icône   afin d'ajouter un  "Binding".
Sur la fenêtre  emp.jsf, revenez à  TAB - Design, sélectionnez le bouton  "Submit" et changez des valeurs de l'attribut  ActionListener:
  • AcionListener = #{bindings.Commit.execute}

Méthode 2: Créer le bouton Commit

Chaque fois que vous modifiez un enregistrement et que vous appuyez sur Submit, les modifications seront mises à jour dans View Object. Enfin, appuyez sur Commit pour mettre à jour tous les enregistrements modifiés dans la base de données.
Faites glisser et déposez l'objet  "Commit" de  "Data Controls" à la fenêtre  emp.jsf afin de créer un  "ADF Button":

9- Attacher une valeur à la colonne de la séquence lors de la création d'un enregistrement.

Lorsque vous créez un nouvel enregistrement pour le tableau  EMPLOYEES, la colonne  EMPLOYEE_ID sera attachée des valeurs de  sequence - EMPLOYEES_SEQ. vous devez le dire à  ADF en configurant sur  Entity Object ( Employees).
Ouvrez  Entity Object: Employees
L'attribut (attribute) EmployeeId est du type  Integer, changez le par le type  Number (Comme l'illustration ci-dessous):
Vous devez créer une classe correspondante avec  Employees (Entity Object).
La classe  EmployeesImpl a été créée.
Java appelera la méthode  EmployeesImpl.create(AttributeList) pour créer un enregistrement  EMPLOYEE. Par conséquent, pour cette méthode, vous devez obtenir des valeurs de Sequence pour attacher à la colonne  EMPLOYEE_ID.
Ajoutez un extrait de code à la classe EmployeesImpl:
** EmpoyeesImpl **
import oracle.jbo.server.SequenceImpl;

// ....

protected Number getNextSequenceValue(String sequenceName) {
    SequenceImpl seq = new SequenceImpl(sequenceName, getDBTransaction());
    return seq.getSequenceNumber();
}


/**
* Add attribute defaulting logic in this method.
* @param attributeList list of attribute names/values to initialize the row
*/
protected void create(AttributeList attributeList) {
    super.create(attributeList);

    // Set value for Empno        
    this.setEmployeeId(this.getNextSequenceValue("EMPLOYEES_SEQ"));
}

10- Créer un nouvel enregistrement

Ci-dessus, vous avez créé un ADF Form permettant d'éditer des enregistrements. Dans cette section, vous devez créer un nouvel enregistrement.
Vous devez faire glisse et déposer un deux opérateurs  "Create" ou  "CreateInsert" de  "Data Controls" au fenêtre de conception ( emp.jsf) afin de créer un  ADF Button.

Create vs CreateInsert

Qui se produira-t-il lorsque vous utilisez l'opérateur  "Create"?
** Create **
// Create a new row for the View Object
Row newRow = yourViewObject.createRow();

// Mark the row as being "initialized", but not yet new
newRow.setNewRowState(Row.STATUS_INITIALIZED);
Que se passe-t-il si vous utilisez l'opérateur​​​​​​​ "CreateInsert"?
** CreateInsert **
// Create a new row for the View Object
Row newRow = yourViewObject.createRow();

// Mark the row as being "initialized", but not yet new
newRow.setNewRowState(Row.STATUS_INITIALIZED);

// Insert the new row into the View Object's default rowset
yourViewObject.insertRow(newRow);
Faites glisser et déposez l'objet  "CreateInsert" à la fenêtre  emp.jsf pour créer un  "ADF Button".
Réexécutez votre page de site web :
Lorsque l'utilisateur appuie sur le bouton " CreateInsert", une ligne (row) de données est créée et insérée dans le " RowSet" de View Object. L'utilisateur saisit des informations et appuie sur Submit, les modifications sont mises à jour à View Object. Aucun enregistrement ne sera créé dans la database tant que Commit n'aura pas été appelé.
  • Vous pouvez voir plus d'explications à la section "Submit & Commit" ci-dessus.

11- Supprimer l'enregistrement

Faites glisser et déposez l'objet  "Delete" de  "Data Controls" à la fenêtre de conception de  emp.jsf afin de créer un  "ADF Button":
Lorsque l'utilisateur appuie sur le bouton " Delete", une ligne (row) de données est suprimée et insérée dans le " RowSet" de View Object. Cela signifie que l'enregistrement n'a pas été supprimé déjà dans la database. Il est uniquement supprimé dans la base de données lors de l'appel de Commit.
  • Vous pouvez voir plus d'explications à la section "Submit & Commit" ci-dessus.
Réexécutez votre page de site web :

View more Tutorials: