Integrace OpenOffice.org a Javy CZJUG, 15.12.2008, Robert Vojta
Obsah Část 1 - Teorie Úvodní informace, definice pojmů Dokumentace, Java Language Binding Pomocné nástroje Část 2 - Praktické ukázky Lokální použití OpenOffice.org OpenOffice.org na serveru
Definice pojmů
UNO Universal Network Objects Základní technologie OO.o Sdílení komponent mezi jazyky, platformami, lokálně a vzdáleně UNO je dostupné pro Linux, Solaris, Windows, Power PC, FreeBSD a Mac OS X
UNO Podporované jazyky - Java, C++ Tvorba komponent Komponenty je možné používat z Java, C++, Basic Python, Microsoft COM.NET pomocí CLI Javascript, Beansheel, Jython
UNO
UNO IDL UNO Interface Definition Language Univerzální způsob definice rozhraní, konstant a dalších entit pro všechny podporované jazyky Podobné jako CORBA IDL, MIDL Součástí SDK jsou nástroje, které generují hlavičkové soubory a knihovny pro podporované jazyky
UNO IDL ukázka module name { module vojta { struct Sample : com::sun::star::lang::eventobject { short property; }; }; };
URE, SDK, URP UNO Runtime Environment http://download.openoffice.org/ure.html SDK Software Development Kit http://download.openoffice.org/sdk.html URP UNO Remote Protocol
UNO & Java
Mapování typů UNO Java UNO Java void void u/hyper long boolean boolean float float byte byte double double u/short short char char u/long int String String
Type Type com.sun.star.uno.type nesmí být null, je final přetížené metody, které akceptují Class a Type UnoRuntime.queryInterface() queryinterface( Type type, ); queryinterface( Class clazz, );
Any Any com.sun.star.uno.any, final mapováno na java.lang.object výjimka - Any jako parametr funkce com.sun.star.uno.anyconverter statické metody na konverzi boolean isdouble( Object obj ); double todouble( Object obj );
Sekvence Všechny sekvence jsou mapovány na pole sequence< double >; double[]; sequence< sequence < long > >; int[][];
Struktury module name { module vojta { struct Sample : com::sun::star::lang::eventobject { short property; }; }; }; package name.vojta; public class Sample extends EventObject { public short property;
Více informací Developer's Guide Professional UNO UNO Language Bindings Java Language Binding Getting a Service Manager Transparent Use of UNO Handling interface Type Mappings
Dokumentace
Dokumentace Developer's Guide [PDF] Java UNO Runtime reference IDL reference Interface Definition Language IDL Design Guide IDL Documentation Guide
Included services Included services Hlavní objekty Metody jsou přímo přístupné Stejné jako dědění
Properties Pokud objekt podporuje vlastnosti, vždy podporuje rozhraní XPropertySet Dále jsou podporována (nemusí) rozhraní XMultiPropertySet, XPropertyAccess, atd. Více informací v Developer's Guide
Exported services Metody nelze volat přímo Je nutné "přetypování" Object cell = ; XCell xcell = ( XCell ) UnoRuntime. queryinterface( XCell.class, cell );
Exported services Metodu queryinterface() je možné volat i na přetypované objekty, rozhraní Služba Cell podporuje XText, XCell Přetypuji-li Cell na XText, můžu XText přetypovat na XCell = není nutné držet referenci na Cell
Introspekce
XRay Knihovna v BASICu, která používá XIntrospection rozhraní Zobrazuje vlastnosti, metody a rozhraní objektů Stáhnout XRay
XRay v praxi Sub Introspection BasicLibraries. LoadLibrary( "XrayTool" ) XRay ThisComponent End Sub
XRay v praxi
Object inspector Rozšíření napsané v Javě, které nabízí obdobnou funkčnost jako XRay Navíc umožňuje generovat zdrojový kód pro Javu, C++, BASIC Stáhnout Object Inspector
Object inspector v praxi Sub Inspector oinspector = createunoservice("org.openoffice.i nstanceinspector") oinspector.inspect(thiscomponent, "My Document") End Sub
Object inspector v praxi
NetBeans OO.o API plugin
OpenOffice.org plugin Usnadňuje tvorbu rozšíření Podporuje NetBeans 6.5 a OO. 3.0 Instalace - Tools - Plugins NetBeans Beta
OpenOffice.org plugin Add-on rozšíření Calc Add-in nové funkce Component služby (= service) Client Application
Projekt - Addon OpenOffice.org Addon Jednoduché rozšíření Makra v Basicu, Javě, Modifikace menu, ikon, tlačítek Rozšíření může obsahovat šablony, galerii klipartů, apod. Typicky jde o jednoúčelové rozšíření
Projekt - Component OpenOffice.org org Component Je to Addon? Je, ale s tím rozdílem, že musí implementovat minimálně jednu službu (= service) Typicky jde o komponentu, kterou lze použít i z jiných rozšíření Addon, Component, Calc Addin může být zkombinován do jednoho rozšíření
Projekt - Addin, Client OpenOffice.org org Calc Addin Implementace nových funkcí do Calcu OpenOffice.org Client Application Klientská aplikace běžící mimo OpenOffice.org
OO.o na serveru
Úvodní informace Speciální serverová edice neexistuje Vzdálené připojování je standardně vypnuté Je potřeba ošetřit memory leaky pády bezpečnost
Instance Standardně je možné spustit jednu instanci pod jedním uživatelem Neomezený počet instancí je možné zajistit pomocí soffice -env:userinstallation=/ooo/user1
Start služby OpenOffice.org se na serveru spouští pomocí soffice -headless -norestore -invisible -nologo -accept="socket, host=0,port=8001;urp;"
Praktické ukázky