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.
- XdevBeanItemContainer
- Wird von RapidClipse automatisch verwendet, wenn Property > Data > findAll oder eine benutzerdefinierte Query-Methode ausgewählt wird.
- Bietet kein Lazy-Loading zwischen Datenbank und Server. Das Abfrageergebnis wird vollständig an den XdevBeanItemContainer (Server) übertragen.
- Manuelles Hinzufügen von Datensätzen (BeanItems) möglich.
XdevLazyEntityContainer - Wird von RapidClipse automatisch verwendet, wenn Property > Data > findAll oder eine benutzerdefinierte Query-Methode ausgewählt wird.
Wird i.d.R. nur von RapidClipse intern verwendet, wenn Property > Auto query data selektiert wird.
Bietet Lazy-Loading zwischen Datenbank und Server. 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.
- Item (Datensatz) - Kann 1 Datensatz bestehend aus mehreren Properties speichern. BeanItem ist eine Erweiterung von Item.
- 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.
Model für:
- XdevTable
- XdevComboBox
- XdevListSelect
- XdevTwinColSelect
- XdevTree
- XdevTreeTable
XdevBeanItemContainer
Anchor | ||||
---|---|---|---|---|
|
Der XdevBeanItemContainer ist eine Erweiterung, die von Container ableitet.
...
der Standard Daten-Container für benutzerdefinierte Queries.
- Bietet kein vollautomatisiertes Lazy-Loading zwischen Datenbank und Server, sondern lediglich zwischen Server und Client. Das Das gesamte Abfrageergebnis wird vollständig an den XdevBeanItemContainer (Server) übertragen.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.
Summary:
Data-Container | Methoden | Erklärung | Example | UI-Komponenten |
---|---|---|---|---|
XdevBeanItemContainer | setContainerDataSource | XdevBeanItemContainer einer UI-Komponente zuweisen | table. |
...
Instanzierung:
setContainerDataSource(productContainer); |
| |
getContainerDataSource | XdevBeanItemContainer von einer UI-Komponente zurückgeben lassen | XdevBeanItemContainer<Product> productContainer = table.getContainerDataSource(); |
Examples:
Abfrageergebnis in XdevBeanItemContainer speichern
Erzeugt ein neues DAO-Objekt selectProducts, um mit der Methode findAll die Datenbankabfrage SELECT * FROM PPRODUCTS ausführen zu können und speichert das Abfrageergebnis in der Liste productList.
Code Block language java theme Confluence
...
ProductDAO selectProducts = new ProductDAO(); List<Product> productList = selectProducts.findAll();
Erzeugt einen neuen XdevBeanItemContainer productContainer vom Typ Product und weist diesen mit der Methode addAll die Liste productList zu, die das Abfrageergebnis enthält.
Code Block language java theme Confluence XdevBeanItemContainer<Product> productContainer = new
...
XdevBeanItemContainer<Product>(
...
Product.class);
...
Häufiger Anwendungsfall:
...
productContainer.addAll(productList);
Primary-Keys - Gibt eine Liste (Collection) aller Primary-Keys zurück.
Code Block language java theme Confluence
...
Collection<?>
...
itemIds = table.getContainerDataSource().
...
getItemIds();
Zuweisung:
Wert via ID - Liefert den Wert mit der ID 5 zurück.
Code Block language java theme Confluence Product selProduct = table.getContainerDataSource().getItem(5).getBean();
XdevBeanItemContainer leeren
Code Block language java theme Confluence table.getContainerDataSource().
...
removeAll(
...
);
XdevLazyEntityContainer
Anchor | ||||
---|---|---|---|---|
|
Der XdevLazyEntityContainer ist eine Erweiterung, die von Container ableitet.
...
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 ServerClient. 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.
BeanItem
...
Model für:
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 |
Summary:
Data-Container | Methoden | Erklärung | Example | UI-Komponenten |
---|---|---|---|---|
BeanItem | getItemDataSource | BeanItem von einer UI-Komponente zurückgeben lassen | BeanItem<Product> itemDataSource = fieldGroup.getItemDataSource(); |
|
setItemDataSource | BeanItem einer UI-Komponente zuweisen | fieldGroup.setItemDataSource(product); |
Model für:
- XdevTextFieldXdevFieldGroup
...
Examples:
BeanItem instanzieren
Code Block language java theme Confluence
...
BeanItem<Product> product = new
...
BeanItem<Product>(null);
Häufiger Anwendungsfall:
Selektierte Zeile aus XdevTable auslesen
Code Block language java theme Confluence
...
BeanItem<Product> product = table.getSelectedItem();
Zuweisung:
Datensatz einem Formular zuweisen - Die Zuweisung erfolgt mit der Methode setItemDataSource.
Code Block language java theme Confluence fieldGroup.setItemDataSource(product);
Property
Eine Property kann nur einen einzelnen Wert (Datenfeld) aufnehmen.
Chai |
Summary:
Data-Container | Methoden | Erklärung | Example | UI-Komponenten |
---|---|---|---|---|
Property | getPropertyDataSource | Wert aus einer UI-Komponente auslesen. | Property<?> propertyDataSource = this.label.getPropertyDataSource(); |
|
setPropertyDataSource | Wert einer UI-Komponente zuweisen. | label.setPropertyDataSource("text"); |
Model für:
...
Exmaples:
Property instanzieren
Code Block language java theme Confluence Property<String> productName = new ObjectProperty<String>("Chai");
Häufiger Anwendungsfall:
...
Datenfeld aus einer selektierten Zeile einer
...
XdevTable auslesen
Code Block language java theme Confluence Property<String> productName = product.getItemProperty("productname");
- Wert einem XdevTextField zuweisen
Zuweisung
...
mit der Methode setPropertyDataSource:
Code Block language java theme Confluence textField.setPropertyDataSource(productName);
...
Zuweisung mit der Methode setValue
...
:
...
Code Block language java theme Confluence textField.setValue(productName);
...
Workflow von Daten-Eingang bis Visualisierung