DSpace API v praxi Vlastimil Krejčíř, krejcir@ics.muni.cz Ústav výpočetní techniky, Masarykova univerzita, Brno CZDSUG 2010, Ostrava Vlastimil Krejčíř, krejcir@ics.muni.cz DSpace API v praxi Obsah Architektura DSpace, kompilace. Public API, dostupné třídy, metody. Context. Community, Collection, Item, Bundle, Bitstream. AuthorizeManager, Group, MetadataSchema. Vlastní import. Knihovny (.jar). Konfigurační soubor. Metadata DC, řešení. Vlastimil Krejčíř, krejcir@ics.muni.cz DSpace API v praxi Architektura DSpace – datový model Základní „objekty pro práci se DSpace: Community →∗ (Subcommunity) → Collection → Item Item – kontejner zapouzdřující: – metadata DC (popř. jiná) – Bundle → Bitstream Bundle – pojmenovaný svazek souborů (Bitstreams) Vlastimil Krejčíř, krejcir@ics.muni.cz DSpace API v praxi Architektura DSpace – vnitřní schéma Logicky tři (provázané) vrstvy: aplikační vrstva (org.dspace.app) JSP rozhraní (webui) import, export filtrace obsahu pro fulltext, náhledy OAI server . . . bussines vrstva (org.dspace) vše kromě app a storage nejdůležitější třídy pro práci s objekty storage vrstva (org.dspace.storage) JDBC wrapper bitstore wrapper Vlastimil Krejčíř, krejcir@ics.muni.cz DSpace API v praxi Architektura DSpace – vlastnosti „čistá Java ⇒ žádný framework (viz JDBC wrapper) knihovny třetích stran Lucene PDFbox (doporučuji poslední verzi!) Handle PostgreSQL ... JavaBeans v JSPUI (vlastní tagy) výborné Public API přes JavaDocs Apache Ant – nyní náš přítel Vlastimil Krejčíř, krejcir@ics.muni.cz DSpace API v praxi Generování dokumentace Public API: DSPACE SRC$ ant public api Vygenerované API je v build/public-api. Alternativně použitím JavaDocs pro Manakin: MANAKIN SRC$ javadoc -public -d public-api \ -sourcepath src/ org.dspace.app.xmlui org.dspace.app.xmlui.wing Vlastimil Krejčíř, krejcir@ics.muni.cz DSpace API v praxi Úprava build.xml Kompilace kódu a instalace dspace.jar – nový cíl v souboru build.xml: Vlastimil Krejčíř, krejcir@ics.muni.cz DSpace API v praxi Spouštění kódu – dsrun $DSPACE/bin/dsrun Nastaví cesty ke knihovnám, paměť apod. Spouštěná třída musí obsahovat metodu public static void main(String[] argv) Viz příklady v této přenášce. Vlastimil Krejčíř, krejcir@ics.muni.cz DSpace API v praxi org.dspace.core.Context Provází nás na každém kroku, nositel informací o: uživateli, skupinách spojeních do databáze nějakých dalších fíčurách V podstatě naprostá většina metod pracuje s kontextem jako s jedním ze svých parametrů. Vytvořit kontext je tedy to první, co je nutné udělat. Užitečná metoda setIgnoreAuthorization(true). Příklad: ContextExample.java Vlastimil Krejčíř, krejcir@ics.muni.cz DSpace API v praxi org.dspace.core.Context II. Metody commit() a complete() třídy Context. DSpace provádí veškeré operace s objekty v paměti a zápis do databáze je prováděn až se zavoláním commit(). Metoda complete() provede commit() a korektně ukončí spojení s databází. Tyto metody je nutné použít vždy, kdy dochází k zápisu do databáze (změna metadat, přístupových práv apod.). Související metoda abort() provede rollback dosud necommitovaných změn. Příklad: ContextCommitAbortExample.java Vlastimil Krejčíř, krejcir@ics.muni.cz DSpace API v praxi org.dspace.content.* V tomto balíku se nachází třídy pro práci s objekty v DSpace: DSpaceObject Community Collection Item Bundle Bitstream Při změně metadat je nutné volat metodu update()! Příklady: CommunityCollectionExample.java CommunityDeleteExample.java Vlastimil Krejčíř, krejcir@ics.muni.cz DSpace API v praxi org.dspace.content.Item K vytvoření Item je potřeba třída org.dspace.content.WorkspaceItem. Z ní následně získáme objekt třídy Item pro nastavení metadat a nahrání souborů. WorkspaceItem se pak použije pro finální vytvoření hotové Item. Zpracujeme metadata a soubory. Pomocí třídy org.dspace.content.InstallItem dokončíme vytvoření Item. InstallItem přidělí identifikátor Handle a archivuje Item v kolekci. Příklad: ItemImportExample.java Vlastimil Krejčíř, krejcir@ics.muni.cz DSpace API v praxi Bundle Soubory (Bitstreams) se neukládají do Item přímo, ale musí se ukládat do tzv. Bundles, které se připojují k Item. Tyto Bundles se rozlišují svým jménem. Je možné (a mnohdy vhodné) vytvářet vlastní pojmenované bundly. Tyto se samozřejmě nijak neprojeví v defaultním rozhraní JSP, ale je výhodné je využívat při zpracování přes Manakin. DSpace samotný (resp. rozhraní JSP) si rezervuje 4 pojmenované bundly (je možné je v Manakinu ignorovat nebo použít na jiné účely – nedoporučuji to však, protože takové Items nebudou z rohraní JSP moc čitelné). Vlastimil Krejčíř, krejcir@ics.muni.cz DSpace API v praxi Bundle – rezervovaná jména v DSpace ORIGINAL – v něm jsou hlavní dokumenty, které se ukazují uživatelům TEXT – do tohoto Bundlu si DSpace si (spuštěním filter-media) ukládá text, extrahovaný z dokumentů v bundlu ORIGINAL THUMBNAIL – zde si DSpace ukládá náhledy obrázků z bundlu ORIGINAL (opět spuštěním filter-media) LICENSE – uložené soubory s licencemi (např. CC) Vlastimil Krejčíř, krejcir@ics.muni.cz DSpace API v praxi Item – související třídy Spolu s Item souvisejí další užitečné třídy: DCValue FormatIdentifier ItemComparator ItemIterator BitstreamFormat . . . Příklad: ItemInfoExample.java Vlastimil Krejčíř, krejcir@ics.muni.cz DSpace API v praxi Jiné užitečné třídy Práce s identifikátory: org.dspace.handle.HandleManager Třídy pro autorizaci (omezení přístupu apod.): org.dspace.authorize.AuthorizeManager org.dspace.eperson.EPerson org.dspace.eperson.Group Práce s metadatovým formátem: org.dspace.content.MetadataSchema org.dspace.content.MetadataField Příklad: MetadataSchemaExample.java Vlastimil Krejčíř, krejcir@ics.muni.cz DSpace API v praxi Jiné užitečné třídy II Interní indexy pro procházení (viz bin/index-all): org.dspace.browse.* Nastavení BrowseScope setFocus(