Da sich die UI-Komponenten in ihrer Fähigkeit Daten anzuzeigen zum Teil stark unterscheiden, stehen in RapidClipse 3 verschiedene Daten-Container Typen zur Verfügung:
- Container (Tabelle) - Kann eine Liste mit Datensätzen (Items) speichern.
- Item (Datensatz) - Kann 1 Datensatz bestehend aus mehreren Properties speichern.
- Property (Einzelner Wert) - Kann nur 1 einzelnen Wert speichern.
Container
Ein Container kann eine Liste mit beliebig vielen Datensätzen (BeanItems) aufnehmen. RapidClipse bietet mit dem XdevLazyEntityContainer und dem XdevBeanItemContainer 2 verschiedene Container-Varianten.
XdevBeanItemContainer
Der XdevBeanItemContainer ist der Standard Daten-Container für benutzerdefinierte Queries.
- Bietet kein vollautomatisiertes Lazy-Loading zwischen Datenbank und Server, sondern lediglich zwischen Server und Client. Das gesamte Abfrageergebnis wird im XdevBeanItemContainer zwischengespeichert. Das Abfrageergebnis muss eigenständig mit Hilfe gängiger Abfragebedingungen minimiert werden.
- Manuelles Hinzufügen von Datensätzen (BeanItems) möglich.
- Wird von RapidClipse verwendet, wenn bei einer UI-Komponente in den Properties Entity > Data > findAll selektiert ist.
Examples:
Container Instanzieren
XdevBeanItemContainer<Products> productsContainer = new XdevBeanItemContainer<Products>(Products.class);
Container von XdevTabel zurückgeben lassen
XdevBeanItemContainer<Products> productsContainer = table.getContainerDataSource();
Entity programmatisch zuweisen - Die Zuweisung erfolgt mit der Methode setContainerDataSource.
table.setContainerDataSource(productsContainer);
XdevLazyEntityContainer
Der XdevLazyEntityContainer wird nur von RapidClipse verwendet, wenn bei einer UI-Komponente in den Properties Entity > Auto query data selektiert ist.
Bietet vollautomatisiertes Lazy-Loading zwischen Datenbank, Server und Client. Es werden immer nur so viele Datensätze zwischen Datenbank und Server übertragen, wie vom Client durch Scrollen oder Paging angefordert werden.
- Nimmt keine dynamischen SQLs entgegen (automatisch immer SELECT * FROM ...)
- Manuelles Hinzufügen von BeanItems nicht möglich.
Model für:
- XdevTable
- XdevComboBox
- XdevListSelect
- XdevTwinColSelect
- XdevTree
- XdevTreeTable
Item
Ein Item kann eine Liste mit Properties (einzelne Werten) und damit nur 1 Datensatz aufnehmen. RapidClipse verwendet standardmäßig die Item Erweiterung BeanItem.
Chai | 10 boxes x 20 bags | 18 | 39 | 0 | false | 10 |
Model für:
- XdevTextField
Examples:
BeanItem instanzieren
BeanItem<Products> product = new BeanItem<Products>(null);
Selektierte Zeile aus XdevTable auslesen
BeanItem<Products> product = table.getSelectedItem();
Datensatz einem Formular zuweisen - Die Zuweisung erfolgt mit der Methode setItemDataSource.
fieldGroup.setItemDataSource(product);
Property
Eine Property kann nur einen einzelnen Wert (Datenfeld) aufnehmen.
Chai |
Model für:
- XdevTextField
- XdevPasswordField
- XdevInlineDateField
- XdevPopupDateField
- XdevNativeSelect
- XdevRichTextAreaInstanzierung:
Exmaples:
Property instanzieren
Property<String> productName = new ObjectProperty<String>("Chai");
Datenfeld aus einer selektierten Zeile einer XdevTable auslesen
Property<String> productName = product.getItemProperty("productname");
- Wert einem XdevTextField zuweisen
Zuweisung mit der Methode setPropertyDataSource:
textField.setPropertyDataSource(productName);
Zuweisung mit der Methode setValue:
textField.setValue(productName);
Workflow von Daten-Eingang bis Visualisierung