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(