Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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.  BeanItem ist eine Erweiterung von Item.  
  • Property (Einzelner Wert) - Kann nur 1 einzelnen Wert speichern.  

...

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 
Anchor

...

XdevBeanItemContainer

...

XdevBeanItemContainer

...

Der XdevLazyEntityContainer ist eine Erweiterung von Container.

...

Wird i.d.R. nur von RapidClipse intern verwendet, wenn Property > Auto query data selektiert wird.
Image Removed

XdevBeanItemContainer ist der Standard Daten-Container für benutzerdefinierte Queries. 

  • Bietet kein vollautomatisiertes 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 ...), 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 nicht ) möglich.
Model für:
  • Wird von RapidClipse verwendet, wenn bei einer UI-Komponente in den Properties Entity > Data > findAll selektiert ist.
    Image Added
Summary:
Data-ContainerMethodenErklärungExampleUI-Komponenten
XdevBeanItemContainersetContainerDataSourceXdevBeanItemContainer einer UI-Komponente zuweisen
table.setContainerDataSource(productContainer);
  • XdevTable
  • XdevComboBox
  • XdevListSelect
  • XdevTwinColSelect
  • XdevTree
  • XdevTreeTable

...

Der XdevBeanItemContainer ist eine Erweiterung, die von Container ableitet.

  • Wird von RapidClipse automatisch verwendet, wenn Property > Data > findAll oder eine eigene Query-Methode ausgewählt wird.
    Image Removed
  • 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.
Examples:

...

getContainerDataSourceXdevBeanItemContainer 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
    languagejava
    themeConfluence
    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
    languagejava
    themeConfluence
    XdevBeanItemContainer<Product> productContainer = new XdevBeanItemContainer<Product>(Product.class); 
    productContainer.addAll(productList);
  • Primary-Keys - Gibt eine Liste (Collection) aller Primary-Keys zurück.

    Code Block
    languagejava
    themeConfluence
    Collection<?> itemIds = table.setContainerDataSourcegetContainerDataSource().getItemIds(productsContainer);


  • Container von XdevTabel zurückgeben lassenWert via ID - Liefert den Wert mit der ID 5 zurück.

    Code Block
    languagejava
    themeConfluence
    XdevBeanItemContainer<Products>Product productsContainerselProduct = table.getContainerDataSource().getItem(5).getBean();
  • Container InstanzierenXdevBeanItemContainer leeren

    Code Block
    languagejava
    themeConfluence
    XdevBeanItemContainer<Products> productsContainer = new XdevBeanItemContainer<Products>(Products.class);

BeanItem

...

  • table.getContainerDataSource().removeAll();

XdevLazyEntityContainer 
Anchor
XdevLazyEntityContainer
XdevLazyEntityContainer

Der XdevLazyEntityContainer wird nur von RapidClipse verwendet, wenn bei einer UI-Komponente in den Properties Entity > Auto query data selektiert ist.

Image Added

  • 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:

Item 

Ein Item kann eine Liste mit Properties (einzelne Werten) und damit nur 1 Datensatz aufnehmen. RapidClipse verwendet standardmäßig die Item-Erweiterung BeanItem

Chai10 boxes x 20 bags18390false10
Summary:
Data-ContainerMethodenErklärungExampleUI-Komponenten
BeanItemgetItemDataSourceBeanItem von einer UI-Komponente zurückgeben lassen
BeanItem<Product> itemDataSource = fieldGroup.getItemDataSource();
  • XdevFieldGroup

setItemDataSource

BeanItem einer UI-Komponente zuweisen

fieldGroup.setItemDataSource(product);
Model für:

...

Examples:
  • BeanItem instanzieren

    Code Block
    languagejava
    themeConfluence

...

  • BeanItem<Product> product = new 

...

  • BeanItem<Product>(null);
Häufiger Anwendungsfall:

...

  • Selektierte Zeile aus XdevTable auslesen

    Code Block
    languagejava
    themeConfluence

...

  • BeanItem<Product> product = table.getSelectedItem();
Zuweisung:
  • Datensatz einem Formular zuweisen - Die Zuweisung erfolgt mit der Methode setItemDataSource.

    Code Block
    languagejava
    themeConfluence
    fieldGroup.setItemDataSource(product);

Property

Eine Property kann nur einen einzelnen Wert (Datenfeld) aufnehmen.   

Chai
Summary:
Data-ContainerMethodenErklärungExampleUI-Komponenten
PropertygetPropertyDataSourceWert aus einer UI-Komponente auslesen.
Property<?> propertyDataSource = this.label.getPropertyDataSource();
  • XdevTextField
  • XdevPasswordField
  • XdevInlineDateField
  • XdevPopupDateField
  • XdevNativeSelect
  • XdevRichTextArea 
  • XdevLabel
  • XdevCheckBox

setPropertyDataSource

Wert einer UI-Komponente zuweisen.

label.setPropertyDataSource("text");
Model für: 

...


Exmaples: 
  • Property instanzieren 

    Code Block
    languagejava
    themeConfluence
    Property<String> productName = new ObjectProperty<String>("Chai");
Häufiger Anwendungsfall:

...

  • Datenfeld aus einer selektierten Zeile einer

...

  • XdevTable auslesen

    Code Block
    languagejava
    themeConfluence
    Property<String> productName = product.getItemProperty("productname");
Zuweisung:
  • Wert einem XdevTextField zuweisen
    • Zuweisung mit der Methode setPropertyDataSource:

      Code Block
      languagejava
      themeConfluence
      textField.setPropertyDataSource(productName);

...

    • Zuweisung mit der Methode setValue

...

    • :

...

    • Code Block
      languagejava
      themeConfluence
      textField.setValue(productName);

...

Workflow von Daten-Eingang bis Visualisierung