пятница, 21 июня 2013 г.

12й - практикум. Oracle ADF. Программное наполнение данными. Часть 1

Существует потребность предоставлять данные не только те что находятся в БД, а полученные из других источников, например Webservice, файл, из коллекций и др. В первой части покажу как сделать редактируемую форму от коллекции данных, во второй части от Programmatic ViewObject. Первую часть назовем - Programmatic  POJO Collection Data

Основу примера будет составлять три класса
1. - фасад (DataControl)
2. - элементы коллекции (Items)
3. - сам элемент (Item)

Элемент коллекции

public class Item {
    public Item() {
        super();
    }
    
    private Integer IdItem;
    private String firstName;
    private String lastName;

    public void setIdItem(Integer IdItem) {
        this.IdItem = IdItem;
    }

Список элементов

public class Items {
    public Items() {
        super();
    }
    
    private List<Item> items = null;
    
    public List<Item> getItems(){
        if(items==null){
            items = new ArrayList<Item>();
        }
        return items;
    }

Фасад - DataControl

public class DataControl {
    public DataControl() {
        super();
    }
    
    private Items items= null;
    
    public List<Item> getItems(){
        if (items==null){
            items = new Items();
        }
        return items.getItems();
    }


Теперь можно от фасада сделать Data Controls - "Create Data Control"


После чего имеем обычный Data Control. Добавим в него метод для получения количества элементов коллекции. И он станет доступен для binding - в формах.



Также будут доступны основные предопределенные операции.

Теперь можно сделать форму, наполнить ее через drag and drop формой ввода данных, навигацией, методом создания записи, и др.  


Для доступа в бине к элементам коллекции можно поступать например так:

public class MyBean {
    public MyBean() {
        super();
    }

    public void testItem(ActionEvent actionEvent) {
        DCIteratorBinding itr = ADFUtils.findIterator("itemsIterator");
        Row row = itr.getViewObject().getCurrentRow();       
        JSFUtils.addFacesInformationMessage(String.format("Id %s, firstName %s, lastName %s", row.getAttribute("idItem"),
                                                          row.getAttribute("firstName"),
                                                          row.getAttribute("lastName")));
    }


Вот что получилось


Источники:

Bean DataControl - Edit table records
http://deepakcs.blogspot.ru/2012/05/bean-datacontrol-edit-table-records.html


How-to build pagination into ADF POJO Data Control
http://www.oracle.com/technetwork/developer-tools/adf/learnmore/37-adf-pojo-pagination-169179.pdf


Исходный код




Комментариев нет:

Отправить комментарий