adf mobile : data services java beans...• add providerchangesupport calls as needed • similar...

Post on 12-Mar-2020

3 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

ADF Mobile :

Data Services – Java Beans

Ma Ping

ping.ma@oracle.com

Overview

Topics covered in this lesson include:

• Roadmap and Best Practices

• Data Services Overview

• Data Objects and “CRUD” Objects

• Data Relationships Definition

• Data Change Events

• Bean Data Controls and Exposing Data to UI

Roadmap for Defining Java Bean

Data Services

• Identify Application Data Requirement

• Data Objects

• Data Relationship

• CRUD (Create/Read/Update/Delete) Operations

Requirement

• Implement Java Beans (POJOs) to support Data

Objects and CRUD operations

• Expose Java Beans as Bean Data Controls

• Bean Data Controls can then be used to

construct the user interface

Best Practices for Data Services

and Application Development

• Always understand data processing requirement

before implementing Data Services

• Start with implementing Java Beans that

implement Data Objects and support CRUD

operations

• Populate the Data Objects initially with local/stub

data specified within the Java Beans

• So that client application can be developed in parallel

with server-side logic

• Test and enhance ADF Mobile application

iteratively using stub data

ADF Mobile Data Services

Overview

Device Native Container

Web ViewADF Mobile

AMX View

Java VMJava Beans

Data Controls

Mobile Device

REST (JSON) Services

HTML5 & JavaScript

ADF Controller

Local Data Server

REST (XML w/ XSD) Services

SOAP Web ServicesLocal HTML

Beans and Data Controls Types

Device Native Contaier Java VMJava Beans

Data Controls

• Data Controls – exposes

data to User Interface:

• Bean Data Controls

• Web Services Data Controls

• URL Data Controls

• Java Beans

• Data Objects and “CRUD” Objects: contains core

application logic to process data

• Managed Beans: Invoked by user interface/AMX page

to perform UI related functions

• This lesson focuses on Bean Data Control, Data

Objects, and “CRUD” Objects

Embedded Java Virtual Machine

• ADF Mobile container embeds a light-weight, “headless”

Java Virtual Machine

• Headless = no UI library as ADF Mobile leverages HTML5-

based UI

• Based on Java version 1.4

• No generics support such as typed collections like set<string>

• No annotation support

• Additional links/documentation on JVM:1. CDC API comparison chart:

http://www.oracle.com/technetwork/java/cdc-packages-150013.pdf

(See especially column for "FP 1.1 JSR 219" which is the same as the ADF

Mobile’s embedded JVM)

2. Javadoc of APIs in CDC/Foundation Profile Libraries:

http://docs.oracle.com/javame/config/cdc/ref-impl/fp1.1.2/jsr219/index.html

Java Bean Data Services

• Two types of POJOs need to be developed to process

data:

• Data Objects:

• Represents a Data Object (e.g. Employees)

• Define attributes and types for each data object

• Contain getter/setter for the attributes

• Represent data object hierarchical relationships

• “CRUD” Objects:

• Instantiate and populates Data Objects

• Support CRUD (Create/Read/Update/Delete) operations

• Access web services or local database

• Expose data access methods to UI via Bean Data Control

Data Objects Definition

• Typically one Java class per data object

• Steps to create data object to hold data

• Create a Java Class

• Declare and initialize data attributes as variables

• Generate Accessors through context menu

• Check “Notify Listener when Property Changes” to add

data change listeners to propagate changes to UI

• This adds propertyChangeSupport APIs to all the “SET”,

“ADD”, and “REMOVE” methods in the Data Object

• Propagate attribute value changes to the user interface

“CRUD” Objects Definition

• Expose methods for CRUD operations

• Data may reside in CRUD object itself, flat files, local

database, and/or web services

• Instantiate and populate one or more Data

Objects

• May contain additional Property and Provider

Data change notification logic

Steps to Create “CRUD” Objects

• Declare one or more collections to hold data

within the “CRUD” Object

• In the Constructor,

• Instantiate the list variable (for example as ArrayList)

• Invoke data population logic here if you wish to load

data whenever the CRUD Object is instantiated

• In the “GET” or data retrieval method

• Convert the ArrayList into an Array of Data Objects and

return data

Steps to Create “CRUD” Objects

• Implement additional methods to retrieve or

update data• For example, a “READ” method that calls a web services to

retrieve a list of employees from a department

• Another example, a “UPDATE” method that updates a field in

the local SQLite DB

• Add providerChangeSupport calls as needed

• Similar syntax as propertyChangeSupport calls in the

Data Objects

• Stocktracker sample app contains examples of this call

• Implement any additional methods

• For example, returning employee count, etc.

Define Data Object Relationships

• Define data relationships by creating multiple

layers of Data and ”CRUD” Objects

• For example, in the simple HR example:

• A department (“Parent” data object) contains several

employees (“Child” data object)

• Employees: Data Object for Employees

• Departments: Data Object for Departments

• EmployeeList: “CRUD” Object that returns a list of

employees

• DepartmentList: “CRUD” Object that returns

departments and employees

Department “CRUD” Objects

• Declare a list for Department and declare/instantiate the

EmployeeList “CRUD” Objects

QLite database

• EmployeeList may be populated on instantiation if data is

populated in the constructor, or add a method that invokes

EmployeeList’s GET Method to populate data

public class DepartmentList {

private static List s_departments = null;

private static EmployeeList s_employees = new

EmployeeList();

Department “CRUD” Objects

• Implement additional methods to retrieve data – for

example get employees by department ID

public Employee[] getEmployeesByDept(int deptId) {

ArrayList reports = new ArrayList();

Employee[] emps = s_employees.getEmployees();

for (int x = 0; x < emps.length; x++) {

Employee e = emps[x];

if (e.getDeptId() == deptId) {

reports.add(e);

}

}

return (Employee[])reports.toArray(new Employee[reports.size()]);

}

Note the code that converts ArrayList to Array

ArrayList & Array of Data Objects

• Use ArrayList to hold data when populating and

processing data

• Much more flexible than an Array[ ] as array size

is fixed during creation and data needs to be

assigned to a specific location (array[1])

• Supports methods like

(add/remove/contains/size/get) that allows data to

be easily processed/searched/etc.

• Convert ArrayList to Array of Data Object when

returning data

• Data needs to be returned as an Array of Data

Objects, as required by ADF Mobile internals

Propagate Data Change Events to

User Interface• When data is changed in Java, you must fire a

data change event listener to propagate changes

to bindings and user interface

• Methods are automatically generated when

checking ”Notify Listener When Property Changes”

when generating accessors for the POJOs

• Additional calls are also needed whenever data

change event needs to be propagated

Different Data Change Events and

Corresponding Listeners

• PropertyChangeListener: Invoke to propagate

an attribute value change

• Supports firePropertyChange, firePropertyDelete,

and firePropertyCreate

• propertyChangeSupport.firePropertyChange(“firstName"

, oldFirstName, newFirstName);

• ProviderChangeListener: Invoke to propagate

changes in a data collection/object

• Supports fireProviderChange, fireProviderRefresh,

fireProviderDelete, and fireProviderCreate

• propertyChangeSupport.firePropertyCreate(“perso

ns", personID, personDataObject);

Exposing POJOs to User Interface

• Right (Ctrl) Click on

the “CRUD” Data

Object

• Create Bean Data

Control

• Modify datacontrols.dcx for

data control attributes,

hints, validation rules,

etc.

Modify Data Control Details

1. Modify the DataControls.dcx file – Attribute tab only

2. Set Default Value, Key (to support any Key operation) ,

UI Hints, and Validation Rules (Compare, Length, List,

and Range only)

Use Data Controls on Page

• Data Controls have

been created

• Drag and Drop onto

page, just like with

Web Based ADF

• Modify as needed

•<Insert Picture Here>

Summary

Topics we covered in this lesson were:

• Roadmap and Best Practices

• Data Services Overview

• Data Objects and “CRUD” Objects

• Data Relationships Definition

• Data Change Events

• Bean Data Controls and Exposing Data to UI

<Insert Picture Here>

Learn More

• Oracle.com/technology/jdev

• Download

• Tutorials

• Discussion forum

• Samples

• ADF Developer Guide

• More…

top related