Top Banner
Working with ADF Faces Calendar Component An Oracle JDeveloper How To Document Written by Dana Singleterry, Oracle Corporation July, 2009 Introduction Oracle JDeveloper 11g Release 1 has a number of new features and this How To Document highlights the new ADF Calendar Component and includes a sample application to demonstrate use of the component. The ADF Faces calendar component displays created activities in daily, weekly, monthly, or list view for a given provider or providers where the provider is the owner of an activity. ADF Faces Calendar Showing Weekly View
18

Working With ADF Faces Calendar Component

Dec 18, 2015

Download

Documents

WinMeo Díaz

x
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
  • Working with ADF Faces Calendar

    Component

    An Oracle JDeveloper How To Document

    Written by Dana Singleterry, Oracle Corporation

    July, 2009

    Introduction

    Oracle JDeveloper 11g Release 1 has a number of new features and this How To Document

    highlights the new ADF Calendar Component and includes a sample application to

    demonstrate use of the component.

    The ADF Faces calendar component displays created activities in daily, weekly, monthly,

    or list view for a given provider or providers where the provider is the owner of an activity.

    ADF Faces Calendar Showing Weekly View

  • The calendar component also includes the following functionality:

    A toolbar that allows users to switch between monthly, weekly, daily, and list

    views.

    Configurable start of the week days and start of the day hours.

    Configurable styles using skinning keys.

    Additionally, you can implement the following functionality using other ADF Faces

    components and the rich client framework:

    Popup functionality.

    Drag and drop cabability.

    Toolbar customization.

    Skinning

    Software Requirements

    JDeveloper 11g Release 1 (11.1.1.1.0).

    Download included schema and unzip the archive. Create a user in your database

    with the credentials of fod/fusion. Load the schema in an XE database for example

    via a command line as follows: imp fodcal.dmp. Use the user fod/fusion when

    prompted. Alternatively , you can download the fodcalendar.zip sql script and unzip

    the archive. This still requires the creation of the user fod/fusion and then you can

    load the fodcalendar sql script through sqlplus.

    Download sample application and unzip the archive.

    Oracle XE database or equivalent.

    Data Model Requirements

    An ADF Faces Calendar component must be bound to a CalendarModel class. This

    class can be created for you when you use ADF Business Components to manage

    your calendar's data. For example, say you have data in your data store that

    represents the details of an activity, such as the date, time, title, location, and owner.

    When you create an entity object to represent that data, and then a view object to

    display the data, you can drag and drop the associated collection from the Data

    Controls panel to create the calendar. JDeveloper will declaratively create the model

    and bind the view to that model so that the correct data will display when the

    calendar is launched. However, in order for the model to be created, your Business

    Components must contain certain attributes, and your view object must contain

    certain variables that will be used to modify the query to use named bind variables

    that represent the date range and current time zone to display. This will allow the

    query to return only the activities that should be displayed in the given view of the

    calendar. For specifics on required and optional attributes for the Entity Object as

    well as required bind variables for the View Object please refer to the Oracle Fusion

  • Middleware Developer's Guide for Oracle Application Development Framework

    11g Release 1 (11.1.1.1.0).

    Note: A Calendar can also be based on a non ADF BC data source. For further information

    please review the Oracle Fusion Middleware Web User Interface Developer's Guide for

    Oracle Application Development Framework 11 g Release 1 (11.1.1.1.0)

    Using the ADF Faces Calendar component: Create business components

    based on your data source

    If you haven't already created an application workspace then do so now and give it an

    appropriate name. This should be a Fusion Web Application (ADF). For the model Default

    package name give it something like oracle.otn.adf.sample.model. Likewise, for the view

    Default package name, give it something like oracle.otn.adf.sample.view. After creating the

    application workspace proceed to creating a entity and view object based on the

    fod_cal_event schema. This is done by right selecting on the Model project and selecting

    new from context followed by selecting the ADF Business Components in the Business

    Tier node and Business Components from Tables.

    Create the Connection to the schema for the calendar.

  • Query the schema and shuttle the FOD_CAL_EVENT schema from the available to the

    selected tables for the Entity Object. Note that their are Required Attributes for a Calendar

    and they can be found in the Oracle Fusion Middleware Developer's Guide for Oracle

    Application Development Framework 11g Release 1 (11.1.1.1.0). Also note that an

    application module is required in order to create and expose the data control to the view of

    the calendar application.

    The Summary of Create Business Components from Tables page should resemble the

    following:

  • Select Finish.

    Now you can proceed to additional requirements and modifications to the EO Business

    Component just created such as ensuring that EID is the primary key by right selecting on

    the FODCALEVENTEO EO and selecting Open from context. This may require deleteing

    a default created primary key of rowID. Select the Attributes Tree Item for the

    FodCalEventEO and right selecting Eid and selecting Edit from context. Ensure that the

    Primary Key is selected.

  • Now proceed with creating the Updateable View Object by right selecting on the

    FodCalEventEO withing the Application Navigator and selecting New Default View Object

    from context

    After creating the associated view object various enhancements are needed such as

    assigning a random value to the primary key if an insert is performed, creation of required

    bind variables, and additional attributes that can be used to add events. The first thing is to

  • open the view object for editing and select Attributes from the Tree. Right select the

    primary key of Eid and select Edit from context.. Add the following expression which will

    create a unique value for Eid upon insert of a new event.

    Ensure that the Default Value Type in the Property Inspector for Eid is set to Expression.

    (Eid==null?UUID.randomUUID().toString():Eid)

    Now a few attributes that will be utilized when adding events to the calendar will be created

    in the View Object. Select the Attributes node within the Tree for FodCalEventVO and add

    the following attributes:

    Name Type Column Info

    Recurring String Transient

  • TimeType String Transient

    AllDay Boolean Transient

    Add the following Named bind variable that will be used in the SQL query of this view

    object.

    Name Type Default Info

    Tz String

    StartDayTime Timestamp

    EndDayTime Timestamp

    Right select the TimeZone (Tz) variable, and select Edit from context. Add the following

    expression and ensure the Value Type is set to Expression. This is to get the current

    timezone for the calendar in use.

    TimeZone.getDefault().getID()

  • The Entity and View Object are complete at this point, however, the Application Module

    needs the View Object added to it Data Model Components. Open the

    FODADFCalAppModule and select the Data Model node in the Tree. Select the

    FodCalEventVO and shuttle it from the Available View Objects to the Data Model and

    rename it to FodCalEventVO. Shuttle it over a second time for the insert operation and

    name it FodCalEventVOInsert.

    At this point the entity and view objects based on the provided calendar schema, including

    required attributes, have been created along with the required bind variables. Now the

    calendar component can be added to a JSF page, further configured, and additional

    functionality can be added if desired. In the next section, additional logic will be added to a

    managed bean containing logic for the calendar, activities, and providers along with popup

    functionality for the basic CRUD operations.

    Creating the View for your Calendar

    The busiiness components have been created and while not required, a Task Flow with a

    view will be created so that this calendar implementation can be reused. Additionally,

    popup functionality will be added for basic CRUD operations. Right select on the

    ViewController project and select new from context. Select the Web Tier node followed by

    JSF in the Tree and ADF Task Flow from the Items.

  • Select ADF Task Flow from the Component Palette drop down and within the Components

    accordion drag and drop a View on to the task flow and give it the name of calendar.

    Double click on the calendar View to create the new JSF page fragment.

  • Now the calendar can be created and configured. Expand the Data Controls accordion and

    drag the collection that represents the view object for the activity created above

    (FodCalEventVO) and drop it as a Calendar.

  • Configure the calendar to utilize the schema attributes and select Finish. Further

    configuring of the calendar will be done through the Bindings section of the calendar.jsff

    page fragment.

    Once the calendar has been created select the bindings tab in the editor of the calendar.jsff

    page fragment and ensure that the Model resembles the following:

  • The following Executables and Bindings will have to be added to the Page DataBinding

    Definition as illustarted above.

    Executables: Add the following Iterator

    FodCalEventVOInsertIterator

    Bindings: Add the following actions, attributesValues, and buttons all from the

    FODADFCalAppModuleDataControl.FodCalEventVOInsert

    CreateInsert (action)

    Commit (action)

    Rollback (action)

    Eid1 (attributeValues)

    CommunityId1 (attributeValues)

    Summary1 (attributeValues)

    StartTime1 (attributeValues)

  • EndTime1 (attributeValues)

    Location1 (attributeValues)

    IsAllDayEvent1 (attributeValues)

    IsAllDayEvent (button)

    Create the Managed Bean. The Managed Bean contains the logic for the calendar, activities

    and the providers. The class itself is provided in the Application workspace that can be

    downloaded so all the details around the logic are left for the reader to review. Also

    provided are a couple of Utility classes ( ADFUtils.java and JSFUtils.java) that the

    Managed Bean utilizes.

    Now that the Managed Bean has been created, open the calendar-task-flow.xml and select

    the Managed Beans node of the Tree. Add the Managed Bean to the calendar-task-flow.xml

    Managed Beans section .

  • Add Functionality using popup

    components

    The basic functionality for the calendar has been created but now popup features will be

    included for the CRUD operations. This is done by creating the popups and associated

    components in the associated facets.

    In the Structure window, expand the calendar component node so that the calendar facets

    are displayed.

    Based on Table 15-1 of the Fusion Middleware Web User Interface Developer's Guide for

    Oracle Application Development Framework, create popup components in the facets that

    correspond to the user actions for which you want to provide functionality. For example, if

    you want users to be able to delete an activity by clicking it and pressing the Delete key,

    you add a popup dialog to the activityDelete facet.

    To add a popup component, right-click the facet in the Structure window and choose Insert

    inside facetName > ComponentName. In this case, a popup for creating a new event is

    being created so this is done by inserting inside of the create facet.

  • A second popup editing and deleting calendar events is also utilized in the sample calendar

    application provided and that is created inside of the activityDetail facet. The details are left

    to the reader and can be reviewed by referring to the source in the calendar.jsff page

    fragment. For more information about creating popup components, see Chapter 13, "Using

    Popup Dialogs, Menus, and Windows".

    Implement any needed logic for the calendarActivityListerner. For example, if you are

    implementing a dialog for the activityDetail facet, then implement logic in the

    calendarActivityListener that can save-off the current activity so that you will know which

    activity to delete. As before, the details are in the code in the CalendarBean Managed Bean

    and are left to the reader to review.

    Save your work at this point and create a jsf xml document and give it an appropriate name

    such as index.jspx. Drop the calendar-task-flow onto the index.jspx page and create it as a

    Region.

    Run the Calendar Application.

  • To run the application simply right click on the index.jspx page and select Run from

    context. This packages up the application, starts up the integrated WebLogic server and

    deploy the application to the server so that you can test your work. Click anywhere in the

    calendar and a popup dialog will appear to create an event. Also, experiment with the

    various views that are provided by default with the calendar component.

    Select an existing event to update or delete.