Warstwowy dostęp do danych
Zaawansowane wykorzystanie biblioteki
EXT GWT w aplikacjach opartych o Google
Web Toolkit
copyright BNS MEDIA
www.devcastzone.com
Treść modułu
1. Warstwy dostępowe
2. Format modelu
3. Proxy
4. DataReader
5. Loader
6. Store
Zaawansowane wykorzystanie biblioteki EXT GWT
copyright BNS MEDIA
2
www.devcastzone.com
Warstwy dostępowe
" Kontrolki takie jak ComboBox, ListView, Grid, czy Tree wymagają dostępu
do danych.
" Dane te mogą:
o pochodzid z różnych zródeł,
o byd przechowywane w pamięci podręcznej
o grupowane,
o Dzielone na strony
" GXT udostępnia szereg klas pozwalające na transparentny i warstwowy
dostęp do danych
" Wyróżnia się następujące warstwy:
o warstwa danych
o Proxy z opcjonalną DataReader
o Loader
o Store
o warstwa kontrolki (widgetu)
Zaawansowane wykorzystanie biblioteki EXT GWT
copyright BNS MEDIA
3
www.devcastzone.com
Warstwy model dostępu do danych
Widgety typu List Widgety typu Tree
ListView Grid TreePanel TreeGrid
ComboBox
Warstwa Store
ListStore GroupingStore TreeStore
Warstwa Loader
BaseListLoader BasePagingListLoader BaseTreeLoader BaseRemoteSortTreeLoader
Warstwa Proxy
MemoryProxy PagingModelMemoryProxy RpcProxy HttpProxy ScriptTagProxy
DataReader
Dane
ModelData nie ModelData
Zaawansowane wykorzystanie biblioteki EXT GWT
copyright BNS MEDIA
4
www.devcastzone.com
Format modelu danych
" Aby obiekty reprezentujące wiersze danych mogły
byd zaczytane przez kontrolki GXT, muszą
implementowad interfejs ModelData
" Dopuszczane są również i inne typy, ale wymaga to
zaimplementowania dodatkowego konwertera -
DataReader .
Zaawansowane wykorzystanie biblioteki EXT GWT
copyright BNS MEDIA
5
www.devcastzone.com
Warstwa Proxy
" Warstwa Proxy definiuje interfejs dla obiektów, które
mogą pobrad dane
" Ujednolica metody oraz zródła pobieranych danych
" Rodzina klasy: DataProxy
(com.extjs.gxt.ui.client.data.DataProxy)
" Najpopularniejsze implementacje:
o MemoryProxy
(com.extjs.gxt.ui.client.data.MemoryProxy)
pozwala na przekazanie załadowanych danych do
wyświetlenia przez konstruktor,
Zaawansowane wykorzystanie biblioteki EXT GWT
copyright BNS MEDIA
6
www.devcastzone.com
Warstwa Proxy
" PagingModelMemoryProxy (com.extjs.gxt.ui.
client.data.PagingModelMemoryProxy) pozwala na
wczytanie załadowanych danych z uwzględnieniem paginacji,
" RpcProxy (com.extjs.gxt.ui.client.data.RpcProxy)
implementacja pozwalająca na wczytanie danych poprzez
funkcję zwrotną również i GWT-RPC,
" HttpProxy (com.extjs.gxt.ui.client.data.HttpProxy)
implementacja pozwalająca na pobieranie danych
wykorzystując RequestBuildera,
" ScriptTagProxy (com.extjs.gxt.ui.client.data.
ScriptTagProxy) proxy pozwalające na odczyt danych
znajdujących się w innej domenie (cross-site requests),
Zaawansowane wykorzystanie biblioteki EXT GWT
copyright BNS MEDIA
7
www.devcastzone.com
Warstwa Proxy
" DataReader pozwala na konwersję surowych danych
do klas modelu ModelData i na odwrót
" Stosuje się jedynie w przypadku gdy do części
klienckiej zostały zaczytane obiekty niebędące
instancją klasy ModelData
" Rodzina klasy: DataReader
(com.extjs.gxt.ui.client.data.DataReader)
Zaawansowane wykorzystanie biblioteki EXT GWT
copyright BNS MEDIA
8
www.devcastzone.com
DataReader - implementacje
" Najpopularniejsze implementacje:
o BeanModelReader (com.extjs.gxt.ui.client.data.BeanModelReader)
konwertuje automatycznie obiekty
" oznaczone adnotacją BeanModelMarker
" implementujących BeanModelTag
o JsonLoadResultReader
(com.extjs.gxt.ui.client.data.JsonLoadResultReader)
o JsonPagingLoadResultReader
(com.extjs.gxt.ui.client.data.JsonPagingLoadResultReader)
o XmlLoadResultReader
(com.extjs.gxt.ui.client.data.XmlLoadResultReader)
o XmlPagingLoadResultReader
(com.extjs.gxt.ui.client.data.XmlPagingLoadResultReader)
o TreeBeanModelReader
(com.extjs.gxt.ui.client.data.TreeBeanModelReader)
o TreeModelReader (com.extjs.gxt.ui.client.data.TreeModelReader)
Zaawansowane wykorzystanie biblioteki EXT GWT
copyright BNS MEDIA
9
www.devcastzone.com
Loader
" Loader pozwala na wczytanie określnego zakresu
danych uwzględniając:
o Dzielenie na strony - paginację
o Sortowanie
o Filtry
" Rodzina klasy: Loader
(com.extjs.gxt.ui.client.data.Loader)
Zaawansowane wykorzystanie biblioteki EXT GWT
copyright BNS MEDIA
10
www.devcastzone.com
Loader
" Najpopularniejsze implementacje:
o BaseListLoader (com.extjs.gxt.ui.client.data.BaseListLoader)
domyślna implementacja pozwalająca na ładowanie listy
danych w całości,
o BasePagingLoader (com.extjs.gxt.ui.client.data.BasePagingLoader)
pozwala na wczytywanie zakresu danych od określonej
pozycji o określonej ilości elementów
o BaseTreeLoader (com.extjs.gxt.ui.client.data.BaseTreeLoader)
o BaseRemoteSortTreeLoader
(com.extjs.gxt.ui.client.data.BaseRemoteSortTreeLoader)
Zaawansowane wykorzystanie biblioteki EXT GWT
copyright BNS MEDIA
11
www.devcastzone.com
Loader dzielenie na strony
" Loader odpowiedzialny jest za dzielenie na strony -
paginację
" Paginacja pozwala na wczytanie określonego zakresu
danych:
o Od jakiego miejsca - offset
o Ile wierszy limit
" Kontrolki automatycznie obsługują paginację o ile
zwrócony jest odpowiedni wynik - LoadResult
" Aby zwracane dane zostały wyświetlone bezpośrednio w
widgecie, proxy do którego się odnosi loader powinno
przyjmowad jako parametr LoadConfig a zwracad
ListLoadResult. Jeżeli tak się nie dzieje musi zostad
dołączony odpowiedni DataReader,
Zaawansowane wykorzystanie biblioteki EXT GWT
copyright BNS MEDIA
12
www.devcastzone.com
Loader
" LoadConfig (com.extjs.gxt.ui.client.data.
LoadConfig) jest to interfejs modelu danych, który
służy do przekazywania parametrów przez kontrolki
" String sortField
BaseListLoadConfig
" Określa parametry, " String sortDir
które definiują w jaki
BaseRemoteSortTreeLoadConfig
" Modeldata parent
sposób dane mają zostad
BasedGroupingLoadConfig " String groupBy
pobrane przez system
dostępu do danych (DAO)
" int limit
BasePagingLoadConfig
" int offset
" List
BaseFilterPagingLoadConfig
filters
Zaawansowane wykorzystanie biblioteki EXT GWT
copyright BNS MEDIA
13
www.devcastzone.com
Loader - paginacja
" ListLoadResult (com.extjs.gxt.ui.client.
data.ListLoadResult) stanowi interfejs modelu
danych, który jest wczytywany przez kontrolki.
" Zawiera:
ListLoadResult " List listData
o listę obiektów do
wyświetlenia
" int offset
BasePagingLoadResult
" int totalLength
o informacje o zastosowanych
ograniczeniach na zwróconym
zbiorze danych
Zaawansowane wykorzystanie biblioteki EXT GWT
copyright BNS MEDIA
14
www.devcastzone.com
Loader - paginacja
offset, limit, sortField,
Parametry
sortDir, groupBy,
do
załadowania
fieldFilters
LoadConfig
Baza
WIDGET
Serwer
Danych
LoadResult
List
Parametry
offset, limit
zastosowane
do zestawu
zwracanych
danych
Zaawansowane wykorzystanie biblioteki EXT GWT
copyright BNS MEDIA
15
www.devcastzone.com
Warstwa Store
" Store pozwala na przechowywanie odczytanych
obiektów w pamięci podręcznej (cache) klienta
" Dane te mogą byd przechowywane w sposób:
o płaski (dla ComboBox, List i Grid)
o zgrupowany (Grid, Tree).
" Rodzina klas Store (com.extjs.gxt.ui.client.
store.Store)
Zaawansowane wykorzystanie biblioteki EXT GWT
copyright BNS MEDIA
16
www.devcastzone.com
Store
" Najpopularniejsze implementacje:
o ListStore (com.extjs.gxt.ui.client.store.
ListStore) podstawowa implementacja pamięci
podręcznej
o GroupingStore (com.extjs.gxt.ui.client.store.
GroupingStore) klasa pozwalająca pogrupowad wybrane
obiekty po jednym wybranym polu klasy modelu
o TreeStore (com.extjs.gxt.ui.client.store.
TreeStore) pamięd podręczna dla hierarchicznych
danych. Relacja rodzic-dziecko obsługiwana jest wewnątrz
implementacji Store
Zaawansowane wykorzystanie biblioteki EXT GWT
copyright BNS MEDIA
17
www.devcastzone.com
Warstwowy dostęp do danych - przykład
final FeedModelRpcAsync service = GWT.create(FeedModelRpc.class);
RpcProxy> proxy = new
RpcProxy>() {
@Override
protected void load(Object loadConfig, final
AsyncCallback> callback) {
service.getAllFeeds(new AsyncCallback>() {
@Override
public void onFailure(Throwable caught) {
callback.onFailure(caught);
}
@Override
public void onSuccess(ArrayList result) {
callback.onSuccess(new BaseListLoadResult(result));
}
});
}
};
BaseListLoader> loader = new
BaseListLoader>(proxy);
ListStore store = new ListStore(loader);
Zaawansowane wykorzystanie biblioteki EXT GWT
copyright BNS MEDIA
18
www.devcastzone.com
Wyszukiwarka
Podobne podstrony:
@PSI W14a Platforma NET Kolekcje dostęp do danych
WykladSIT Organizacja dostępu do danych przestrzennych(1)
3 Warstwa dostepu do sieci Ethernet
2008 09 Lazarus – łatwy dostęp do danych [Programowanie]
Prezentacja na zajęcia dostęp do informacji publicznej 9 10 2015 (1)
Hurtownie danych czyli jak zapewnic dostep do wiedzy tkwiacej w danych
Opinie uczniów gimnazjów na temat dostępności do nielegalnych substancji psychoaktywnych i przyczyn
Dostęp do informacji publiczej zawartej w dokumentach osób ubiegających się o pracę
02 Linux Prawa dostępu do plików i katalogów
Rodzaje dostepu do internetu
Definiowanie reguł postępowania dla serwera FireWall określających sposób dostępu do wybranych serwe
Od dysgrafii do kaligrafii prezentacja
Dostęp do poczty z sieci Internet poprzez program Outlook Express i protokół POP3
Metody dostępu do nośnika
więcej podobnych podstron