1. Introduction

The numberguess example showed some of RIFE's power when it comes to using templates and submissions to handle forms and user input. In the next few chapters we are going to develop a somewhat more advanced application: a friends database application.

Our application will display a title and a list of friends and let us add new ones to the database. We also want to send a copy of the application to a friend when it's done, so that he can use it too. We don't want to make him change the code just in order to change the title though, so we will make sure that can be done easily through a configuration file instead.

The example is available in the same rife-examples package as the numberguess example from Chapter 3, Creating a more advanced RIFE application. To make it easier to follow, we provide you with the directory structure of the finished application:

Example 5.1. Directory structure of the friends application

src/
    elements/
        add.xml
        display.xml
        install.xml
        menu.xml
        remove.xml

    implementations/
        tutorial/
           friends/
                Add.java
                Display.java
                Install.java
                Remove.java
         
    rep/
        config.xml
        datasources.xml
        participants.xml
        
    sites/
        friends.xml

    templates/
        add.html
        display.html
        install.html
        menu.html
        remove.html

    tutorial/
        friends/
            backend/
                Friend.java
                FriendManager.java  

The application consists out of five different elements. Four of them have their own Java implementations and one uses an element that's already part of RIFE. All content is generated through templates and each element has a dedicated one. A friend is represented by the Friend object and all friends are managed by a FriendManager. We'll start off by setting up the site participant and defining the elements DISPLAY, for listing the friends, and MENU, for navigating the application.

Like in the previous example we use a ParticipantSite participant to define the main site file.

Example 5.2. Participant file for Friends database

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rep SYSTEM "/dtd/rep.dtd">

<rep>
  <participant param="sites/friends.xml">ParticipantSite</participant>
</rep>