Transcript
| Dr. Gudrun Pabst | Trivadis GmbH |
Forms und JavaBeans Enhanced JavaBean Support in Forms 9i
Forms und JavaBeans – Inhalt Inhalt: Einführung Einfaches Beispiel Setzen und Abfragen von Properties Indexed Properties
Aufruf von JavaBean-Methoden JavaBean-Events Eigene Datentyp-Encoder ©
Copyright Trivadis GmbH
2
Dr. Gudrun Pabst: Struktur der JavaBeans: siehe JavaBean-Spezifikation, Kapitel 8.3/8.4/8.5: Design Patterns for Properties/for Events/for Methods
Einführung
Wofür JavaBeans? ab Forms9i: Forms nur noch im Web
Problem: Aufruf von Client-Programmen funktioniert mit Forms-Mitteln nicht mehr JavaBeans: Standardisierte Java-Komponenten Enhanced JavaBean-Support von Forms unterstützt die JavaBeanMethoden Beans von Drittanbietern können genutzt werden
©
Copyright Trivadis GmbH
3
Einführung Eine JavaBean umfasst: Properties d.h. get
-, set-Methoden
Indexed Properties d.h. get-, set-Methoden für die gesamte Property und für einen einzelnen Index
Methoden Events Der Enhanced JavaBean-Support kann diese
Elemente ansprechen. ©
Copyright Trivadis GmbH
4
Einführung Erweiterter Java-Support in Forms 9i: Bisher: statische Zuordnung der JavaBean zur BeanArea
set_custom_property
Jetzt: JavaBean wird zur Laufzeit zugeordnet
direktes Ansprechen von Properties und Methoden eigene Datentyp- und Listener-Encoder
©
Copyright Trivadis GmbH
5
Dr. Gudrun Pabst: Datei SimpleBean1.java
Grundlage: einfache JavaBean JavaBean:
import oracle.forms.ui.VBean; public class SimpleBean1 extends VBean { public SimpleBean1() { super(); try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } private void jbInit() throws Exception { System.out.println ("Hallo!"); } }
©
Copyright Trivadis GmbH
6
Dr. Gudrun Pabst: Modul simple_bean1.fmb
Grundlage: zugehöriges Forms-Modul Forms-Modul:
BeanArea TEST_BEAN Button BT_REGISTER WHEN-BUTTON-PRESSED-Trigger: FBean.Register_Bean ( 'CTL.TEST_BEAN' , 1 , 'SimpleBean1' );
©
Copyright Trivadis GmbH
7
Dr. Gudrun Pabst: Datei SimpleBean2.java
Setzen und Abfragen von Properties JavaBean: public void setFortschritt (int Fortschritt) { progBar.setValue(Fortschritt); } public int getFortschritt () { return progBar.getValue(); }
Aus Forms-Sicht: Property Fortschritt
©
Copyright Trivadis GmbH
8
Dr. Gudrun Pabst: Modul simple_bean2.fmb
Setzen und Abfragen von Properties Forms-Modul:
Button zum Setzen des Fortschritts, Code: FBean.set_property ( 'CTL.TEST_BEAN' , 1 , 'Fortschritt' , :ctl.ti_wert ); Button zum Abfragen des Fortschritts, Code: :ctl.ti_wert := FBean.get_property ( 'CTL.TEST_BEAN' , 1 , 'Fortschritt' ); ©
Copyright Trivadis GmbH
9
Indexed Properties JavaBean: 2 set-Methoden: public void setListe (String[] pTest) public void setListe (int pIndex , String pTest)
2 get-Methoden: public String[] getListe () public String getListe (int pIndex)
ACHTUNG: Index startet mit 0!
Aus Forms-Sicht: Indexed Property Liste
©
Copyright Trivadis GmbH
10
Indexed Properties Forms-Modul: Setzen aller Werte der Indexed Property: FBean.set_indexed_property ( 'CTL.TEST_BEAN' , 1 , 'Liste' , fbean.all_rows , :ctl.ti_item1 || ',' || :ctl.ti_item2 || ',' || :ctl.ti_item3 || ',' || :ctl.ti_item4 );
Setzen eines bestimmten Werts der Indexed Property: FBean.set_indexed_property ( 'CTL.TEST_BEAN' , 1 , 'Liste' , :ctl.ti_index , :ctl.ti_wert );
©
Copyright Trivadis GmbH
11
Dr. Gudrun Pabst: Datei SimpleBean4.java
Aufruf von JavaBean-Methoden JavaBean: public double potenzieren( double pBasis , double pExp ) { double vErgebnis; vErgebnis = StrictMath.pow( pBasis ,pExp ); return vErgebnis; }
Die Methode potenziert den Wert pBasis mit dem Exponenten pExponent und gibt den ermittelten Wert zurück.
©
Copyright Trivadis GmbH
12
Dr. Gudrun Pabst: Modul simple_bean4.fmb
Aufruf von JavaBean-Methoden Forms-Modul:
Übergabe der Argumente als String: :ctl.ti_ergebnis := FBean.invoke_num ( 'CTL.TEST_BEAN' , 1 , 'potenzieren' , :ctl.ti_basis || ',' || :ctl.ti_exponent );
©
Copyright Trivadis GmbH
13
Argument-Übergabe als String Regeln: Der String beginnt und endet mit ' (einfaches Anführungszeichen).
Die Argumente sind durch Kommas getrennt. Strings im String müssen in " (doppelte Anführungszeichen) eingeschlossen werden.
" in Strings werden als \" übergeben, \ als \\. Werte vom Typ Boolean werden als true oder false übergeben. Zahlen werden als Zahlen übergeben. ©
Copyright Trivadis GmbH
14
Argument-Übergabe als Argumentliste Forms-Modul: Übergabe der Argumente als Argumentliste: declare v_arglist fbean.arglist; begin v_arglist := fbean.create_arglist; -fbean.add_arg ( v_arglist , :ctl.ti_basis ); fbean.add_arg ( v_arglist , :ctl.ti_exponent ); -:ctl.ti_ergebnis := FBean.invoke_num ( 'CTL.TEST_BEAN' , 1 , 'potenzieren' , v_arglist ); -end;
©
Copyright Trivadis GmbH
15
Dr. Gudrun Pabst:
simple_bean5.fmb
JavaBean-Events
Beim Mausklick werden die Event-Parameter abgefragt und angezeigt.
Forms-Modul: Registrieren des Events: fbean.enable_event Anlegen eines WHEN-CUSTOM-ITEM-EVENT-Triggers SYSTEM.CUSTOM_ITEM_EVENT : Name des Events SYSTEM.CUSTOM_ITEM_EVENT_PARAMETERS : Parameterliste des Events Event-Parameter: siehe "Working with Data Type and Event Encoders"
©
Copyright Trivadis GmbH
16
Dr. Gudrun Pabst: simple_bean6.fmb und SimpleBean6
Eigene Datentyp-Encoder zur Übergabe von Daten an komplexe Java-Objekttypen extends oracle.forms.beans.FormsEncoder zwei Methoden: fromString : konvertiert den übergebenen String in das Objekt toString : erzeugt aus den Objekt-Daten einen String
muss mittels BeanManager.registerEncoder beim Initialisieren der Bean registriert werden
©
Copyright Trivadis GmbH
17
Eigene Datentyp-Encoder JavaBean: import oracle.forms.ui.BeanManager; public class BruchEncoder extends FormsEncoder { public BruchEncoder() { super(Bruch.class); } public Object fromString ( String pBruchText ) { ... return new Bruch ( vZaehlerNeu , vNennerNeu ); } public String toString ( Object pBruch ) { return new String ( pBruch.toString() ); } } ©
Copyright Trivadis GmbH
18
Eigene Datentyp-Encoder JavaBean: public Bruch bruchMult(Bruch pBruch1, Bruch pBruch2)
Methode bruchMult: nimmt zwei Objekte vom Typ Bruch entgegen und gibt das Multiplikationsergebnis als Objekt vom Typ Bruch zurück Forms-Modul: :ctl.ti_ergebnis := fbean.invoke_char ( 'CTL.TEST_BEAN' , 1 , 'bruchMult' , '"3/4","4/5"' );
©
Copyright Trivadis GmbH
19
Eigene Event-Encoder zur Übergabe von selbstdefinierten Events in der JavaBean an Forms extends oracle.forms.beans.EventEncoder Methoden: toString : erzeugt aus den Event-Daten einen String getParameters : erzeugt Liste, die ausgewertet werden kann über :system.custom_item_event_parameters
muss mittels BeanManager.registerEncoder beim Initialisieren der Bean registriert werden ©
Copyright Trivadis GmbH
20
Dokumentation JavaBeans: Spezifikation, Tutorials: http://java.sun.com/products/javabeans/docs/
Forms: Online-Hilfe: "Accessing JavaBeans from a Forms Application" Technet: "Oracle9i Forms Demos" http://otn.oracle.com/sample_code/products/forms/ content.html
©
Copyright Trivadis GmbH
21