Package org.dspace.content.authority
Class DSpaceControlledVocabulary
- java.lang.Object
-
- org.dspace.core.SelfNamedPlugin
-
- org.dspace.content.authority.DSpaceControlledVocabulary
-
- All Implemented Interfaces:
ChoiceAuthority,HierarchicalAuthority,NameAwarePlugin
public class DSpaceControlledVocabulary extends SelfNamedPlugin implements HierarchicalAuthority
ChoiceAuthority source that reads the hierarchical vocabularies from${dspace.dir}/config/controlled-vocabularies/*.xmland turns them into autocompleting authorities. Configuration: This MUST be configured as a self-named plugin, e.g.:plugin.selfnamed.org.dspace.content.authority.ChoiceAuthority = \ org.dspace.content.authority.DSpaceControlledVocabularyIt AUTOMATICALLY configures a plugin instance for each XML file in the controlled vocabularies directory. The name of the plugin is the basename of the file; e.g.,${dspace.dir}/config/controlled-vocabularies/nsi.xmlwould generate a plugin called "nsi". Each configured plugin comes with three configuration options:vocabulary.plugin._plugin_.hierarchy.store = <true|false> # Store entire hierarchy along with selected value. Default: TRUE vocabulary.plugin._plugin_.hierarchy.suggest = <true|false> # Display entire hierarchy in the suggestion list. Default: TRUE vocabulary.plugin._plugin_.delimiter = "<string>" # Delimiter to use when building hierarchy strings. Default: "::"- Author:
- Michael B. Klein
-
-
Field Summary
Fields Modifier and Type Field Description protected StringhierarchyDelimiterprotected static StringidParentTemplateprotected static StringidTemplateprotected static StringlabelTemplateprotected static String[]pluginNamesprotected IntegerpreloadLevelprotected static StringrootTemplateprotected BooleanstoreHierarchyprotected BooleansuggestHierarchyprotected InputSourcevocabularyprotected StringvocabularyNameprotected static StringxpathTemplate
-
Constructor Summary
Constructors Constructor Description DSpaceControlledVocabulary()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected StringbuildString(Node node)ChoicesgetBestMatch(String text, String locale)Get the single "best" match (if any) of a value in the authority to the given user value.ChoicegetChoice(String authKey, String locale)Build the preferred choice associated with the authKey.ChoicesgetChoicesByParent(String authorityName, String parentId, int start, int limit, String locale)Get all values from the authority that match the preferred value.StringgetLabel(String key, String locale)Get the canonical user-visible "label" (i.e.ChoicesgetMatches(String text, int start, int limit, String locale)Get all values from the authority that match the preferred value.ChoicegetParentChoice(String authorityName, String childId, String locale)It returns the parent choice in the hierarchy if anystatic String[]getPluginNames()IntegergetPreloadLevel()Provides an hint for the UI to preload some levels to improve the UX.ChoicesgetTopChoices(String authorityName, int start, int limit, String locale)Get all values from the authority that match the preferred value.StringgetValue(String key, String locale)Get the canonical value to store for a key in the authority.protected voidinit()booleanisHierarchical()Return true for hierarchical authoritiesbooleanstoreAuthorityInMetadata()Provide a recommendation to store the authority in the metadata value if available in the in the provided choice(s).-
Methods inherited from class org.dspace.core.SelfNamedPlugin
getPluginInstanceName, setPluginInstanceName
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.dspace.content.authority.ChoiceAuthority
getExtra, isScrollable
-
Methods inherited from interface org.dspace.core.NameAwarePlugin
getPluginInstanceName, setPluginInstanceName
-
-
-
-
Field Detail
-
xpathTemplate
protected static String xpathTemplate
-
idTemplate
protected static String idTemplate
-
labelTemplate
protected static String labelTemplate
-
idParentTemplate
protected static String idParentTemplate
-
rootTemplate
protected static String rootTemplate
-
pluginNames
protected static String[] pluginNames
-
vocabularyName
protected String vocabularyName
-
vocabulary
protected InputSource vocabulary
-
suggestHierarchy
protected Boolean suggestHierarchy
-
storeHierarchy
protected Boolean storeHierarchy
-
hierarchyDelimiter
protected String hierarchyDelimiter
-
preloadLevel
protected Integer preloadLevel
-
-
Method Detail
-
storeAuthorityInMetadata
public boolean storeAuthorityInMetadata()
Description copied from interface:ChoiceAuthorityProvide a recommendation to store the authority in the metadata value if available in the in the provided choice(s). Usually ChoiceAuthority should recommend that so the default is true and it only need to be implemented in the unusual scenario- Specified by:
storeAuthorityInMetadatain interfaceChoiceAuthority- Returns:
trueif the authority provided in any choice of this authority should be stored in the metadata value
-
getPluginNames
public static String[] getPluginNames()
-
init
protected void init()
-
getMatches
public Choices getMatches(String text, int start, int limit, String locale)
Description copied from interface:ChoiceAuthorityGet all values from the authority that match the preferred value. Note that the offering was entered by the user and may contain mixed/incorrect case, whitespace, etc so the plugin should be careful to clean up user data before making comparisons. Value of a "Name" field will be in canonical DSpace person name format, which is "Lastname, Firstname(s)", e.g. "Smith, John Q.". Some authorities with a small set of values may simply return the whole set for any sample value, although it's a good idea to set the defaultSelected index in the Choices instance to the choice, if any, that matches the value.- Specified by:
getMatchesin interfaceChoiceAuthority- Parameters:
text- user's value to matchstart- choice at which to start, 0 is first.limit- maximum number of choices to return, 0 for no limit.locale- explicit localization key if available, or null- Returns:
- a Choices object (never null).
-
getBestMatch
public Choices getBestMatch(String text, String locale)
Description copied from interface:ChoiceAuthorityGet the single "best" match (if any) of a value in the authority to the given user value. The "confidence" element of Choices is expected to be set to a meaningful value about the circumstances of this match. This call is typically used in non-interactive metadata ingest where there is no interactive agent to choose from among options.- Specified by:
getBestMatchin interfaceChoiceAuthority- Parameters:
text- user's value to matchlocale- explicit localization key if available, or null- Returns:
- a Choices object (never null) with 1 or 0 values.
-
getLabel
public String getLabel(String key, String locale)
Description copied from interface:ChoiceAuthorityGet the canonical user-visible "label" (i.e. short descriptive text) for a key in the authority. Can be localized given the implicit or explicit locale specification. This may get called many times while populating a Web page so it should be implemented as efficiently as possible.- Specified by:
getLabelin interfaceChoiceAuthority- Parameters:
key- authority key known to this authority.locale- explicit localization key if available, or null- Returns:
- descriptive label - should always return something, never null.
-
getValue
public String getValue(String key, String locale)
Description copied from interface:ChoiceAuthorityGet the canonical value to store for a key in the authority. Can be localized given the implicit or explicit locale specification.- Specified by:
getValuein interfaceChoiceAuthority- Parameters:
key- authority key known to this authority.locale- explicit localization key if available, or null- Returns:
- value to store - should always return something, never null.
-
getChoice
public Choice getChoice(String authKey, String locale)
Description copied from interface:ChoiceAuthorityBuild the preferred choice associated with the authKey. The default implementation delegate the creato to theChoiceAuthority.getLabel(String, String)ChoiceAuthority.getValue(String, String)andChoiceAuthority.getExtra(String, String)methods but can be directly overriden for better efficiency or special scenario- Specified by:
getChoicein interfaceChoiceAuthority- Parameters:
authKey- authority key known to this authority.locale- explicit localization key if available, or null- Returns:
- the preferred choice for this authKey and locale
-
isHierarchical
public boolean isHierarchical()
Description copied from interface:ChoiceAuthorityReturn true for hierarchical authorities- Specified by:
isHierarchicalin interfaceChoiceAuthority- Specified by:
isHierarchicalin interfaceHierarchicalAuthority- Returns:
trueif hierarchical, defaultfalse
-
getTopChoices
public Choices getTopChoices(String authorityName, int start, int limit, String locale)
Description copied from interface:HierarchicalAuthorityGet all values from the authority that match the preferred value. Note that the offering was entered by the user and may contain mixed/incorrect case, whitespace, etc so the plugin should be careful to clean up user data before making comparisons. Value of a "Name" field will be in canonical DSpace person name format, which is "Lastname, Firstname(s)", e.g. "Smith, John Q.". Some authorities with a small set of values may simply return the whole set for any sample value, although it's a good idea to set the defaultSelected index in the Choices instance to the choice, if any, that matches the value.- Specified by:
getTopChoicesin interfaceHierarchicalAuthority- Parameters:
authorityName- authority namestart- choice at which to start, 0 is first.limit- maximum number of choices to return, 0 for no limit.locale- explicit localization key if available, or null- Returns:
- a Choices object (never null).
-
getChoicesByParent
public Choices getChoicesByParent(String authorityName, String parentId, int start, int limit, String locale)
Description copied from interface:HierarchicalAuthorityGet all values from the authority that match the preferred value. Note that the offering was entered by the user and may contain mixed/incorrect case, whitespace, etc so the plugin should be careful to clean up user data before making comparisons. Value of a "Name" field will be in canonical DSpace person name format, which is "Lastname, Firstname(s)", e.g. "Smith, John Q.". Some authorities with a small set of values may simply return the whole set for any sample value, although it's a good idea to set the defaultSelected index in the Choices instance to the choice, if any, that matches the value.- Specified by:
getChoicesByParentin interfaceHierarchicalAuthority- Parameters:
authorityName- authority nameparentId- user's value to matchstart- choice at which to start, 0 is first.limit- maximum number of choices to return, 0 for no limit.locale- explicit localization key if available, or null- Returns:
- a Choices object (never null).
-
getParentChoice
public Choice getParentChoice(String authorityName, String childId, String locale)
Description copied from interface:HierarchicalAuthorityIt returns the parent choice in the hierarchy if any- Specified by:
getParentChoicein interfaceHierarchicalAuthority- Parameters:
authorityName- authority namechildId- user's value to matchlocale- explicit localization key if available, or null- Returns:
- a Choice object
-
getPreloadLevel
public Integer getPreloadLevel()
Description copied from interface:HierarchicalAuthorityProvides an hint for the UI to preload some levels to improve the UX. It usually mean that these preloaded level will be shown expanded by default- Specified by:
getPreloadLevelin interfaceChoiceAuthority- Specified by:
getPreloadLevelin interfaceHierarchicalAuthority- Returns:
0if hierarchical, null otherwise
-
-