24
Projektarbeit EchoBinding Entwurf und Implementierung eines Data Binding Layer für das Echo Web Framework Aufgabensteller: Prof. Dr. Martin Wirsing Betreuer: Axel Rauschmayer Philipp Mpalampanis

Projektarbeit EchoBinding Entwurf und Implementierung eines Data Binding Layer für das Echo Web Framework Aufgabensteller: Prof. Dr. Martin Wirsing Betreuer:

Embed Size (px)

Citation preview

Page 1: Projektarbeit EchoBinding Entwurf und Implementierung eines Data Binding Layer für das Echo Web Framework Aufgabensteller: Prof. Dr. Martin Wirsing Betreuer:

ProjektarbeitEchoBinding

Entwurf und Implementierung eines Data Binding Layer für das

Echo Web Framework

Aufgabensteller: Prof. Dr. Martin WirsingBetreuer: Axel Rauschmayer

Philipp Mpalampanis

Page 2: Projektarbeit EchoBinding Entwurf und Implementierung eines Data Binding Layer für das Echo Web Framework Aufgabensteller: Prof. Dr. Martin Wirsing Betreuer:

LMU München, Institut für Informatik, LFE Programmierung und Softwaretechnik

2

Übersicht

Echo Data Binding EchoBinding

Page 3: Projektarbeit EchoBinding Entwurf und Implementierung eines Data Binding Layer für das Echo Web Framework Aufgabensteller: Prof. Dr. Martin Wirsing Betreuer:

LMU München, Institut für Informatik, LFE Programmierung und Softwaretechnik

3

Echo Web Framework Echo ermöglicht einfache Entwicklung von

sog. Rich Internet Applications (RIA) Echo Applikationen werden zu 100% in Java

programmiert Framework erzeugt notwendiges HTML und

JavaScript

Page 4: Projektarbeit EchoBinding Entwurf und Implementierung eines Data Binding Layer für das Echo Web Framework Aufgabensteller: Prof. Dr. Martin Wirsing Betreuer:

LMU München, Institut für Informatik, LFE Programmierung und Softwaretechnik

4

Echo Web Framework Client-Server-Architektur: server-seitig Java

Servlets, client-seitig HTML+JavaScript Kommunikation zwischen Client und Server erfolgt

über XmlHttpRequests (Ajax)Echo Web App

Application

App Container

Echo FrameworkWeb

Rendering

Java Servlet API

J2EEHTML,

JavaScript, XML

Page 5: Projektarbeit EchoBinding Entwurf und Implementierung eines Data Binding Layer für das Echo Web Framework Aufgabensteller: Prof. Dr. Martin Wirsing Betreuer:

LMU München, Institut für Informatik, LFE Programmierung und Softwaretechnik

5

Echo Web Framework Echo adaptiert Java Swing

Programmiermodell Echo ist komponentenbasiert: jedes GUI

Element ist eine Komponente (Window, Panel, TextField, SelectField, Table usw.)

Echo ist ereignisgesteuert: Anwendung wird durch Events gesteuert (Benutzerinteraktionen, Benachrichtigungen)

Page 6: Projektarbeit EchoBinding Entwurf und Implementierung eines Data Binding Layer für das Echo Web Framework Aufgabensteller: Prof. Dr. Martin Wirsing Betreuer:

LMU München, Institut für Informatik, LFE Programmierung und Softwaretechnik

6

Echo - Beispiel

final Label helloLabel = new Label("Hello!");mainPane.add(helloLabel);

mainPane.add(new Label("What's your name?"));

final TextField tfYourName = new TextField();Button submitButton = new Button("Submit");

submitButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { helloLabel.setText("Hello "+tfYourName.getText()+"!"); }});...

Page 7: Projektarbeit EchoBinding Entwurf und Implementierung eines Data Binding Layer für das Echo Web Framework Aufgabensteller: Prof. Dr. Martin Wirsing Betreuer:

LMU München, Institut für Informatik, LFE Programmierung und Softwaretechnik

7

Übersicht

Echo Data Binding EchoBinding

Page 8: Projektarbeit EchoBinding Entwurf und Implementierung eines Data Binding Layer für das Echo Web Framework Aufgabensteller: Prof. Dr. Martin Wirsing Betreuer:

LMU München, Institut für Informatik, LFE Programmierung und Softwaretechnik

8

Motivation: Album Manager

artist : string = Berliner Philharmonikertitle : string = Tristan und Isoldeclassical : bool = truecomposer : string = Richard Wagner

album : Album

Page 9: Projektarbeit EchoBinding Entwurf und Implementierung eines Data Binding Layer für das Echo Web Framework Aufgabensteller: Prof. Dr. Martin Wirsing Betreuer:

LMU München, Institut für Informatik, LFE Programmierung und Softwaretechnik

9

Motivation: Synchronisation Ipublic class AlbumManagerView extends Column { TextField tfArtist; TextField tfTitle; CheckBox cbClassical; TextField tfComposer; Album album; ...

}

tfArtist.setText( album.getArtist() );tfTitle.setText( album.getTitle() );cbClassical.setSelected( ... );...

ViewModel

Page 10: Projektarbeit EchoBinding Entwurf und Implementierung eines Data Binding Layer für das Echo Web Framework Aufgabensteller: Prof. Dr. Martin Wirsing Betreuer:

LMU München, Institut für Informatik, LFE Programmierung und Softwaretechnik

10

Motivation: Synchronisation II Speichern der modifzierten Daten Benutzer drückt „Apply“-Button

album.setArtist( tfArtist.getText() );album.setTitle( tfTitle.getText() );album.setClassical( cbClassical.is ...

ViewModel

Page 11: Projektarbeit EchoBinding Entwurf und Implementierung eines Data Binding Layer für das Echo Web Framework Aufgabensteller: Prof. Dr. Martin Wirsing Betreuer:

LMU München, Institut für Informatik, LFE Programmierung und Softwaretechnik

11

Motivation: Album Manager Extended

Zusätzliches Feld „Erscheinungsdatum“

album.setReleaseDate( tfRelease.getText() );

tfRelease.setText( album.getReleaseDate() );

album.setReleaseDate(format.parse(

tfRelease.getText() );

DateFormat format = new SimpleDateFormat(...);

Validierung notwendig!

Konvertierung notwendig!

Page 12: Projektarbeit EchoBinding Entwurf und Implementierung eines Data Binding Layer für das Echo Web Framework Aufgabensteller: Prof. Dr. Martin Wirsing Betreuer:

LMU München, Institut für Informatik, LFE Programmierung und Softwaretechnik

12

Data Binding: Aufgaben Synchronisation von Model und View Automatische Typ-Konvertierung Eingabevalidierung (Plausibiltätsprüfung)

album : Albumartist : string = Berliner Philharmonikertitle : string = Tristan und Isoldeclassical : bool = truecomposer : string = Richard Wagner

Page 13: Projektarbeit EchoBinding Entwurf und Implementierung eines Data Binding Layer für das Echo Web Framework Aufgabensteller: Prof. Dr. Martin Wirsing Betreuer:

LMU München, Institut für Informatik, LFE Programmierung und Softwaretechnik

13

Data Binding: Voraussetzung Verknüpfung von Elementen der Benutzer-

schnittstelle mit Attributen aus Domänenmodell

Page 14: Projektarbeit EchoBinding Entwurf und Implementierung eines Data Binding Layer für das Echo Web Framework Aufgabensteller: Prof. Dr. Martin Wirsing Betreuer:

LMU München, Institut für Informatik, LFE Programmierung und Softwaretechnik

14

Übersicht

Echo Data Binding EchoBinding

Page 15: Projektarbeit EchoBinding Entwurf und Implementierung eines Data Binding Layer für das Echo Web Framework Aufgabensteller: Prof. Dr. Martin Wirsing Betreuer:

LMU München, Institut für Informatik, LFE Programmierung und Softwaretechnik

15

EchoBinding: PropertyAdapter Repräsentiert eine bestimmte Bean-

Eigenschaft Zugriff auf Wert der Eigenschaft:

getValue(Object bean) setValue(Object bean, Object value)

An keinen Typ gebunden Eigenschaft wird z.B. durch Expression

Language-Ausdruck spezifiziert

Bean sollte in PA spezifizierte Eigenschaft besitzen

Page 16: Projektarbeit EchoBinding Entwurf und Implementierung eines Data Binding Layer für das Echo Web Framework Aufgabensteller: Prof. Dr. Martin Wirsing Betreuer:

LMU München, Institut für Informatik, LFE Programmierung und Softwaretechnik

16

EchoBinding: Beispiel OgnlPropertyAdapter Verwendet Object Graph Navigation Language

(OGNL) zur Beschreibung der Bean-Eigenschaft

PropertyAdapter street = new OgnlPropertyAdapter("address.street");

Customer customer = ...;

street.getValue( customer );// := customer.getAddress().getStreet();

street.setValue( customer, "Oettingenstr." );// := customer.getAddress().setStreet( "Oettingenstr." );

OGNL-Ausdruck

Page 17: Projektarbeit EchoBinding Entwurf und Implementierung eines Data Binding Layer für das Echo Web Framework Aufgabensteller: Prof. Dr. Martin Wirsing Betreuer:

LMU München, Institut für Informatik, LFE Programmierung und Softwaretechnik

17

EchoBinding: BindingContext Daten-Kontext für View (mehrere Models möglich) View greift über BindingContext auf Model zu PropertyAdapter werden im BindingContext zusammen mit Alias

in Adapter-Tabelle abgelegt

BindingContext: Album

- artist- title- classical : Customer

- name

: Address

- street- city

Model

#album

„address.street“

„artist“ „#album.artist“

„title“ „#album.title“

... ...

Alias Adapter

„street“

default

Page 18: Projektarbeit EchoBinding Entwurf und Implementierung eines Data Binding Layer für das Echo Web Framework Aufgabensteller: Prof. Dr. Martin Wirsing Betreuer:

LMU München, Institut für Informatik, LFE Programmierung und Softwaretechnik

18

EchoBinding: Beispiel OgnlBindingContext

OgnlBindingContext ctx = new OgnlBindingContext();

ctx.setModel( customer ); // default modelctx.addModel( "album", album ); //additional model

ctx.add( "customerName", new OgnlPropertyAdapter(„name") );

ctx.getValue( "customerName" ); // := ctx.getAdapter( "customerName" ).getValue( customer );// := customer.getName();

ctx.getValue( "#album.artist" ); // Ad-Hoc-Binding// := album.getArtist();

Page 19: Projektarbeit EchoBinding Entwurf und Implementierung eines Data Binding Layer für das Echo Web Framework Aufgabensteller: Prof. Dr. Martin Wirsing Betreuer:

LMU München, Institut für Informatik, LFE Programmierung und Softwaretechnik

19

EchoBinding: BoundControls BoundControls sind Subklassen von Echo-

Komponenten Für jede Echo- Komponenten existiert entspr.

BoundControl (TextField, Radio-Button, ... ) Zugriff auf Model erfolgt über BindingContext Durch Adapter-Alias an ein bestimmten

PropertyAdapter gebunden BindingContext kann BoundControls „steuern“:

ctx.update(): lädt Daten aus Model in Controls ctx.synchronize(): überträgt Werte in das Model ctx.validate(): überprüft Gültigkeit der Eingaben

Page 20: Projektarbeit EchoBinding Entwurf und Implementierung eines Data Binding Layer für das Echo Web Framework Aufgabensteller: Prof. Dr. Martin Wirsing Betreuer:

LMU München, Institut für Informatik, LFE Programmierung und Softwaretechnik

20

EchoBinding: BoundControls

PropertyAdapter BoundControlAlias

PropertyAdapter BoundControlAlias

PropertyAdapter BoundControlAlias

BindingContext

Text:

Select

Text:

Viewa : Object

- propertyA1- propertyA2

b : Object

- propertyB1- propertyB2

c : Object

- propertyC1- propertyC2

d : Object

- propertyD1- propertyD2

Model

Schnittstellen

Page 21: Projektarbeit EchoBinding Entwurf und Implementierung eines Data Binding Layer für das Echo Web Framework Aufgabensteller: Prof. Dr. Martin Wirsing Betreuer:

LMU München, Institut für Informatik, LFE Programmierung und Softwaretechnik

21

EchoBinding: Album Manager

Konfiguration BindingContext

OgnlBindingContext ctx = new OgnlBindingContext();

OgnlPropertyAdapter releaseDate = new OgnlPropertyAdapter("realeaseDate");

releaseDate.setFormat( new DateFormat("MM/yyyy") );releaseDate.addValidator( new RegexValidator("[0-9]...") );

ctx.add( "releaseDate", releaseDate );

ctx.setModel( album ); Online

Offline

Page 22: Projektarbeit EchoBinding Entwurf und Implementierung eines Data Binding Layer für das Echo Web Framework Aufgabensteller: Prof. Dr. Martin Wirsing Betreuer:

LMU München, Institut für Informatik, LFE Programmierung und Softwaretechnik

22

EchoBinding: Album Manager Viewpublic class AlbumManagerView extends Column {

public AlbumManagerView(BindingContext ctx) {

add( new TextField("artist", ctx) ); ... add( new CheckBox("classical", ctx) ); add( new TextField("releaseDate", ctx) ); ... }

}

ctx.update();ViewModel

ctx.synchronize();

BoundControls

Page 23: Projektarbeit EchoBinding Entwurf und Implementierung eines Data Binding Layer für das Echo Web Framework Aufgabensteller: Prof. Dr. Martin Wirsing Betreuer:

LMU München, Institut für Informatik, LFE Programmierung und Softwaretechnik

23

EchoBinding

Fragen?

Page 24: Projektarbeit EchoBinding Entwurf und Implementierung eines Data Binding Layer für das Echo Web Framework Aufgabensteller: Prof. Dr. Martin Wirsing Betreuer:

LMU München, Institut für Informatik, LFE Programmierung und Softwaretechnik

24

EchoBinding

Danke.