Einleitung
Mit der experimentellen Search-API wird für den Integrator die Möglichkeit geschaffen individuelle Such-Services an die Suche anzubinden. Dafür müssen diese als Such-Adapter registriert werden. Durch die Bereitstellung der Search-API als experimentelle API gelten für diese die Bedingungen der Experimental jadice API , die in der Dokumentation der document platform dokumentiert sind.
Als einer der nächsten Schritte bezüglich der experimentellen Search-API ist geplant, dass abstrakte Klassen der RolloutSearch und des SearchPanels bereitgestellt werden, so dass der Integrator die Möglichkeit hat eine vereinfachte Anpassung der GUI-Komponenten vorzunehmen, ohne sich an dieser Stelle um die zugrundeliegende Verwendung der Search-API zu kümmern.
Such-Service als Adapter einhängen
Um einen weiteren Such-Service als Such-Adapter einzuhängen, müssen die beiden Interfaces /jadice-search/src/main/java/com/levigo/jadice/search/engine/SearchEngine.java und /jadice-search/src/main/java/com/levigo/jadice/search/engine/Search.java implementiert werden.
Es wird ein Listener-Mechanismus zur Verfügung gestellt, der Updates über die laufende Suche liefern kann, wie beispielsweise Zwischenergebnisse, um dadurch eine GUI zu updaten. Falls der zur Verfügung gestellte Listener-Mechanismus genutzt werden soll, gibt es dafür zwei verschiedene Möglichkeiten. Einerseits kann der Listener selbst eingebunden werden oder es kann die bereits bereitgestellte Implementation in der abstrakten Klasse AbstractSearch genutzt werden. Dafür muss dann statt dem Interface /jadice-search/src/main/java/com/levigo/jadice/search/engine/Search.java die abstrakte Klasse /jadice-search/src/main/java/com/levigo/jadice/search/engine/AbstractSearch.java implementiert werden.
Nachdem die beiden Interfaces oder das Interface und die abstrakte Klasse eingebunden wurden, kann der Such-Adapter über com.levigo.jadice.search.engine.SearchEngineRegistry.registerSearchEngine(SearchEngine, int) zusammen mit seiner Priorität registriert werden. Mit Hilfe der Priorität hat der Integrator die Möglichkeit die Reihenfolge der Such-Adapter anzugeben.
Wenn die Priorität eines Such-Adapters geändert werden soll, kann der Integrator diese über com.levigo.jadice.search.engine.SearchEngineRegistry.changePriority(SearchEngine, int) ändern.
Wenn ein Such-Adapter nicht mehr genutzt werden soll, kann er mit com.levigo.jadice.search.engine.SearchEngineRegistry.deregisterSearchEngine(SearchEngine) aus den registrierten Such-Adaptern entfernt werden.
Such-Optionen hinzufügen
Da die verschiedenen Such-Services die eingebunden werden weitere Such-Optionen mit sich bringen können, wird im Folgenden erläutert welche Schritte erfolgen müssen, um in der Demo-Anwendung weitere Such-Optionen hinzuzufügen. Beispielhaft wird dies an der Such-Option Wildcard gezeigt. Wildcard/wildcard muss somit jeweils durch den Namen der neuen Such-Option ersetzt werden:
Die Such-Option muss als Parameter in /jadice-swing-appbase/src/main/resources/com/levigo/jadice/appbase/search/engine/ui/resources/commands.properties ergänzt werden.
Beispiel:ToggleWildcard=com.levigo.jadice.appbase.search.engine.ui.ToggleOptionCommand ToggleWildcard.param.optionName=wildcard
Die Such-Option muss in /jadice-swing-appbase/src/main/resources/com/levigo/jadice/appbase/search/engine/ui/resources/actions.properties und /jadice-swing-appbase/src/main/resources/com/levigo/jadice/appbase/search/engine/ui/resources/actions_de.properties ergänzt werden, mit einem eigenen Namen, einer Beschreibung und einem eigenen MnemonicKey.
Beispiel:ToggleWildcard.commands = ToggleWildcard ToggleWildcard.Name = Wildcard ToggleWildcard.ShortDescription = Suche mit Wildcards ToggleWildcard.SmallIcon = defaulticons.TB_TEXTSEARCH ToggleWildcard.menuType = checkbox ToggleWildcard.MnemonicKey = I
→ Für actions.properties sollten der Name und die ShortDescription jeweils auf Englisch erfolgen. Der MnemonicKey sollte sich von den übrigen unterscheiden.
Die Such-Option muss in /jadice-swing-appbase/src/main/resources/com/levigo/jadice/appbase/search/engine/ui/resources/menucomponents.properties für die RolloutSearch ergänzt werden. Dafür muss sie unter actions vor ,|,ExtendedSearch ergänzt werden.
Beispiel (wenn es nur die Such-Option Wildcard gibt):rolloutSearchPopup.actions = ToggleWildcard,|,ExtendedSearch
Im SearchPanel muss eine getter-Methode, in welcher eine JCheckBox erstellt wird, wie im Beispiel zu sehen, eingefügt werden. In der Methode levigo.jadice.appbase.search.engine.ui.SearchPanel.getSearchSection() wird die JCheckBox für die Such-Option dann mit Hilfe der getter-Methode der searchSection hinzugefügt.
Beispiel:
Die getter-Methode:private JCheckBox getWildcardOption() { if (wildcardOption == null) { wildcardOption = new JCheckBox(getActionFactory().getAction(ctx, "ToggleWildcard")); } return wildcardOption; }
In der Methode com.levigo.jadice.appbase.search.engine.ui.SearchPanel.getSearchSection():
searchSection.add(getWildcardOption());
Es ist zu beachten, dass überall derselbe ToggleOptionsname verwendet werden muss.