...
Rozszerzenia aplikacji redaktora i administratora bazują na Java Plugin Framework (JPF). Podstawowym elementem w tym mechanizmie jest plik opisujący plugin JPF:
...
<?xml version="1.0" ?>
<!DOCTYPE plugin PUBLIC "-//JPF//Java Plug-in Manifest 0.4" "http://jpf.sourceforge.net/plugin_0_7.dtd">
<plugin id="pl.psnc.dlibra.app.extension" version="${pom.currentVersion}">
<extension-point id="metadata">
<parameter-def id="class"/>
<parameter-def id="name"/>
<parameter-def id="icon" multiplicity="none-or-one"/>
</extension-point>
<extension-point id="fileParser">
<parameter-def id="class"/>
</extension-point>
<extension-point id="interfaceLanguage">
<parameter-def id="class"/>
</extension-point>
<extension-point id="graphicProvider">
<parameter-def id="class"/>
</extension-point>
<extension-point id="sourceLocator">
<parameter-def id="class"/>
</extension-point>
<extension-point id="dictionaryManager">
<parameter-def id="class"/>
</extension-point>
<extension-point id="filesHandler">
<parameter-def id="class"/>
</extension-point>
<extension-point id="tool">
<parameter-def id="class"/>
</extension-point>
<extension-point id="miniatureProvider">
<parameter-def id="class"/>
</extension-point>
</plugin>
Poniżej opisane są wszystkie możliwe rozszerzenia (punkty rozszerzeń) zdefiniowane dla aplikacji redaktora i administratora dLibra.
Table of Contents | ||||||
---|---|---|---|---|---|---|
|
Jak widać plugin ten definiuje dziewięć możliwych rozszerzeń (punktów rozszerzeń) aplikacji redaktora i administratora opisanych w kolejnych sekcjach.
Note | ||||
---|---|---|---|---|
| ||||
Interfejsy programistyczne wyszczególnione w poniższych opisach znajdują się w bibliotece programistycznej | os | 1 | dlibraos | .
Rozszerzenie metadata
Rozszerzenie metadata służy do poszerzania możliwości importujących i eksportujących metadane w aplikacji. Poprzez to rozszerzenie możemy dodać funkcję importowania lub/i eksportowania metadanych z/do zewnętrznego formatu.
...
Interfejs programistyczny (język Java) dla tego rozszerzenia to dljdoc
pl.psnc.dlibra.app.extension.metadata.MetadataFinder
...
- Import metadanych z formatu MARC (
dlproj os 1 dlibra-app-extension-mf-marc
os ). - Import metadanych z formatu XML (
dlproj os 1 dlibradcore-app-extension-mf-xml
os ). - Import metadanych z formatu BibTeX (
dlproj os 1 dlibra-app-extension-mf-bibtex
os ). - Eksport w formacie RDF - to rozszerzenie jest zintegrowane z aplikacją redaktora i administratora - nie jest zdefiniowane w odrębnym projekcie.
...
Rozszerzenie to przyjmuje jeden parametr class
, który specyfikuje nazwę klasy implementującej interfejs programistyczny rozszerzenia. Interfejs programistyczny (język Java) dla tego rozszerzenia to dljdoc
pl.psnc.dlibra.app.extension.fileparser.FileParser
...
- Format DjVu - rozszerzenie odnajduje pliki powiązane z danym plikiem w formacie DjVu (
dlproj os 1 dlibradcore-app-extension-fp-djvu
os ). - Format HTML - rozszerzenie odnajduje pliki powiązane z danym plikiem w formacie HTML (
dlproj os 1 dlibradcore-app-extension-fp-html
os ).
Rozszerzenie interfaceLanguage
...
Rozszerzenie to przyjmuje jeden parametr class
, który specyfikuje nazwę klasy implementującej interfejs programistyczny rozszerzenia. Interfejs programistyczny (język Java) dla tego rozszerzenia to dljdoc
pl.psnc.dlibra.app.extension.language.InterfaceLanguage
...
- Polski - rozszerzenie udostępnia wszystkie słowa/frazy interfejsu użytkownika w języku polskim (
dlproj os 1 dlibra-app-extension-il-pl
os ). - Angielski - rozszerzenie udostępnia wszystkie słowa/frazy interfejsu użytkownika w języku angielskim (
dlproj os 1 dlibra-app-extension-il-en
os ).Ukraiński - rozszerzenie udostępnia wszystkie słowa/frazy interfejsu użytkownika w języku ukraińskim (dlproj os 1 dlibra-app-extension-il-uk os ).
Rozszerzenie graphicProvider
...
W aplikacji domyślnie zainstalowana jest wtyczka zapewniająca domyślny wygląd (dlproj
dlibra-app-extension-gp
Rozszerzenie sourceLocator
...
Rozszerzenie to przyjmuje jeden parametr class
, który specyfikuje nazwę klasy implementującej interfejs programistyczny rozszerzenia. Interfejs programistyczny (język Java) dla tego rozszerzenia to dljdoc
pl.psnc.dlibra.app.extension.sourcelocator.SourceLocator
...
- Z39.50 - pozwala na lokalizowanie plików metadanych przy użyciu serwerów Z39.50 (
dlproj os 1 dlibra-app-extension-sl-z3950
os ).
Opis konfiguracji poszczególnych rozszerzeń można znaleźć tutaj.
...
Rozszerzenie to przyjmuje jeden parametr class
, który specyfikuje nazwę klasy implementującej interfejs programistyczny rozszerzenia. Interfejs programistyczny (język Java) dla tego rozszerzenia to dljdoc
pl.psnc.dlibra.app.extension.dictionarymanager.DictionaryManager
...
- Import grup wartości z plików MARC - pozwala na odczyt plików w formacie MARC-21 (
dlproj os 1 dlibra-app-extension
-dictcopyos -dl-marc
). Zapis do plików nie jest wspierany. - Import/export grup wartości z/do plików XML - pozwala na zapis i odczyt plików w postaci XML. Można je wykorzystać do kopiowania wartości atrybutów pomiędzy bibliotekami (
dlproj os 1 dlibradcore-app-extension-dm-dictcopy
os ).
Opis konfiguracji poszczególnych rozszerzeń można znaleźć tutaj.
...
Rozszerzenie to przyjmuje jeden parametr class
, który specyfikuje nazwę klasy implementującej interfejs programistyczny rozszerzenia. Interfejs programistyczny (język Java) dla tego rozszerzenia to dljdoc
pl.psnc.dlibra.app.extension.fileshandler.FilesHandler
...
- Prezentacje JPG - jeśli wybrano folder zawierający pliki .jpg, ta wtyczka pozwala na zdefiniowanie kolejności obrazków i przypisanie opisu do każdego obrazka. Informacje te są zapisywane w pliku PresentationData.xml, który jest oznaczany jako plik główny (
dlproj os 1 dlibradcore-app-extension-fh-jpg
os ).
Rozszerzenie tool
...
To rozszerzenie pozwala dodać nowe elementy do menu Narzędzia w aplikacji administratora lub redaktora, jak pokazano na poniższym rysunku.
...
- class, który specyfikuje nazwę klasy implementującej interfejs programistyczny rozszerzenia. Interfejs programistyczny (język Java) dla tego rozszerzenia to
pl.psnc.dlibra.app.extension.tool.Tool
. Szczegółowe informacje związane z tym interfejsem znajdują się w komentarzach metod i samego interfejsu (JavaDocs). - type, który określa przeznaczenie narzędzia, tj. czy jest to narzędzie aplikacji administratora czy aplikacji redaktora. W związku z tym parametr ten może przyjąć tylko dwie wartości: ADMIN (określający aplikację administratora) oraz EDITOR (określający aplikację redaktora). W efekcie ustawienie parametru sprawi, że narzędzie będzie wyświetlane w menu „Narzędzia” w aplikacji administratora, bądź aplikacji redaktora.
...
- Lista publikacji w publikacji grupowej - zapisuje publikacje należące do wybranej publikacji grupowej w pliku html (dlibra
dcore-app-extension-tl-
leafslistleaflist
). - Narzędzie do czyszczenia słownika atrybutu - pozwala usunąć ze słownika wartości, które nie są przypisane do żadnej publikacji. To rozszerzenie jest zintegrowane bezpośrednio z aplikacją administratora - nie jest zdefiniowane w odrębnym projekcie.
Przykładowe rozszerzenie tool
Instalacja
Narzędzie ilustrujące możliwości rozszerzeń typu tool zostało przygotowane przez zespół rozwijający system dLibra i jest dostępne do pobrania tutaj.
Aby zainstalować wtyczkę w systemie dLibra należy skopiować plik .jar wtyczki do katalogu /WEB-INF/jnlp-jars aplikacji czytelnika i uruchomić w panelu administracyjnym proces uaktualnienia aplikacji redaktora/administratora. Więcej na temat panelu administracyjnego aplikacji czytelnika można dowiedzieć się tutaj.
Funkcjonalność
Rozszerzenie realizuje następujące funkcje:
- odczytuje zaznaczone obiekty cyfrowe w ramach listy elementów aplikacji redaktora i wyświetla je na panelu rozszerzenia (panel „Tabela wyników selekcji” – patrz rysunek poniżej)
- umożliwia wybieranie obiektów na liście elementów aplikacji redaktora, poprzez wskazanie obiektu do zaznaczenia na panelu rozszerzenia (panel „Tabela selekcji” – patrz rysunek poniżej).
Okno rozszerzenia zawiera dwie tabele:
- Aktualnie zaznaczone publikacje na liście elementów AR
- Publikacje zaznaczone na liście elementów AR przy uruchomieniu narzędzia
Pierwsza tabela wyświetla podstawowe informacje na temat aktualnie zaznaczonych publikacji na liście elementów aplikacji redaktora. Zmiana zaznaczonych publikacji na liście elementów aplikacji redaktora powoduje zmianę wyświetlanych informacji w tej tabeli.
Tabela druga wyświetla podstawowe informacje na temat publikacji zaznaczonych w momencie uruchamiania rozszerzenia. Oznacza to, że zmiana zaznaczenia po uruchomieniu rozszerzenia nie wpływa na listę wyświetlonych publikacji w ramach tej tabeli. Tabela druga ma dodatkową właściwość, mianowicie zaznaczenie na niej publikacji przekłada się na zaznaczenie tej publikacji na liście elementów aplikacji redaktora. Jeśli przed uruchomieniem rozszerzenia z menu „Narzędzia” nie był zaznaczony żaden element na liście elementów aplikacji redaktora, wówczas druga tabela będzie pusta. Warto zaznaczyć, iż zmiana zaznaczenia na tabeli drugiej w sposób pośredni zmienia listę publikacji umieszczonych w tabeli pierwszej. To dlatego, iż zaznaczenia w tabeli drugiej wpływają na zaznaczenia na liście elementów aplikacji redaktora. Z kolei zaznaczenia na liście elementów aplikacji redaktora odzwierciedlane są na bieżąco w tabeli pierwszej.
Kod źródłowy wtyczki oraz jego pełną dokumentację techniczną można znaleźć tutaj.
Oprócz powyższych rozszerzeń, zespół rozwijający system dLibra przygotował dla programistów zainteresowanych tworzeniem własnych rozszerzeń narzędzie przykładowe, ilustrujące możliwości rozszerzeń typu tool.
Rozszerzenie miniatureProvider
...
Rozszerzenie to przyjmuje jeden parametr class
, który specyfikuje nazwę klasy implementującej interfejs programistyczny rozszerzenia. Interfejs programistyczny (język Java) dla tego rozszerzenia to dljdoc
pl.psnc.dlibra.app.extension.miniatureprovider.MiniatureProvider
...
- najpopularniejsze formaty graficzne (jpg, png, gif)
- pliki djVu
- pliki pdf
...
Rozszerzenie
...
eventListener
Rozszerzenie typu EventListener eventListener pozwala reagować na zdarzenia zachodzące w aplikacji redaktora i administratora.
Rozszerzenie to reprezentowane jest w oprogramowaniu dLibra jako interfejs programistyczny języka Java pl.psnc.dlibra.app.extension.
eventlistenereventListener.EventListener
.
Interfejs ten posiada jedną metodę o nazwie eventPushed
przyjmującą następujące parametry:
event
- reprezentuje zdarzenie, które miało miejsce w aplikacji redaktora i administratora. Parametr ten jest impementacją interfejsu pl.psnc.dlibra.app.extension.eventlistener.AppEvent, który umożliwia określenie identyfikatora obiektu jakiego zdarzenie dotyczy oraz typu zdarzenia, który może być jedną z wartości określonych w typie wyliczeniowym pl.psnc.dlibra.app.extension.eventlistener.AppEventType.
...
- reprezentuje interfejs dostępowy do serwera dLibry, za pośrednictwem którego można odwołać się do usług umożliwiających pobranie danych dotyczących obiektów w dLibrze.s
erverInterface
W domyślnej konfiguracji aplikacji redaktora i administratora nie ma rozszerzeń tego typu. Rozszerzenie to zaprojektowane zostało z myślą o narzędziach wykonujących specyficzne działania w zewnętrznych systemach działania w sposób oczywisty nie , które z oczywistych względów nie są wspierane przez aplikację redaktora i administratora.
Przykładowe rozszerzenie typu EventListener
Instalacja
Narzędzie pokazujące sposób korzystania z punktu rozszerzeń EventListener zostało stworzone przez zespół rozwijający system dLibra i jest dostępne do pobrania tutaj.
Aby zainstalować wtyczkę w systemie dLibra należy skopiować plik dcore-app-extension-el-test-x.x.x.jar wtyczki do katalogu /WEB-INF/jnlp-jars aplikacji czytelnika i uruchomić w panelu administracyjnym proces uaktualnienia aplikacji redaktora/administratora. Więcej na temat panelu administracyjnego aplikacji czytelnika można dowiedzieć się tutaj.
Funkcjonalność
Rozszerzenie to reaguje na zdarzenia zachodzące w aplikacji redaktora i administratora i dla każdego z nich wyświetla okienko dialogowe informujące o typie zdarzenia oraz podające informacje pobrane z serwera dLibry dotyczące obiektu, dla którego zdarzenie miało miejsce.
Dla programistów chcących stworzyć narzędzie tego typu, powstało przykładowe rozszerzenie.
Rozszerzenie objectPanel
Rozszerzenia tego typu pozwalają na dodanie dodatkowej zakładki w aplikacji redaktora, widocznej w dolnej części ekranu po zaznaczeniu obiektu określonego typu. Wtyczka taka ma pełną swobodę w przygotowaniu zawartości zakładki i może w tym celu korzystać z dostępu do funkcji serwera. Rozszerzenie to może posłużyć do wyświetlania dodatkowych informacji związanych z wybranym obiektem, np. pobranych z zewnętrznych systemów.
Rozszerzenie to przyjmuje jeden parametr class
, który specyfikuje nazwę klasy implementującej interfejs programistyczny rozszerzenia. Interfejs programistyczny (język Java) dla tego rozszerzenia to pl.psnc.dlibra.app.extension.objectpanel.ObjectPanel
. Szczegółowe informacje związane z tym interfejsem znajdują się w komentarzach metod i samego interfejsu (JavaDocs).
Domyślnie w aplikacji redaktora nie jest zainstalowane żadne rozszerzenie tego typu, ale można pobrać przykładową implementację, która demonstruje możliwości rozszerzenia.
Rozszerzenie dataSource
Ten typ rozszerzeń umożliwia dodanie nowych sposobów definiowania treści publikacji. W kreatorze nowej publikacji (a także dodawania plików do publikacji, oraz podmiany plików w publikacji), na stornie wyboru plików, użytkownik może wybrać jedno z zainstalowanych rozszerzeń dataSource, dzięki czemu zamiast standardowego panelu wyboru plików pojawi się panel przygotowany przez to rozszerzenie. Kiedy użytkownik wybierze pliki do publikacji w tym panelu, rozszerzenie przekazuje tę informację do aplikacji redaktora i użytkownik może przejść do następnych kroków kreatora. Przy pomocy tego rozszerzenia można wskazać nie tylko pliki na dysku lokalnym, ale też zasoby dostępne w Internecie - w takim przypadku serwer dLibry pobierze je i zapisze w swoim repozytorium (pobieranie może się również odbyć za pośrednictwem komputera redaktora).
Rozszerzenie to przyjmuje jeden parametr class
, który specyfikuje nazwę klasy implementującej interfejs programistyczny rozszerzenia. Interfejs programistyczny (język Java) dla tego rozszerzenia to pl.psnc.dlibra.app.extension.datasource.DataSource
. Szczegółowe informacje związane z tym interfejsem znajdują się w komentarzach metod i samego interfejsu (JavaDocs).
Domyślnie w aplikacji redaktora nie jest zainstalowane żadne rozszerzenie tego typu, ale można pobrać przykładową implementację, która demonstruje możliwości rozszerzeniaKod źródłowy wtyczki oraz jego pełną dokumentację techniczną można znaleźć tutaj.