Class MetadataExposureServiceImpl

java.lang.Object
org.dspace.app.util.MetadataExposureServiceImpl
All Implemented Interfaces:
MetadataExposureService

public class MetadataExposureServiceImpl extends Object implements MetadataExposureService
Static utility class to manage configuration for exposure (hiding) of certain Item metadata fields. This class answers the question, "is the user allowed to see this metadata field?" Any external interface (UI, OAI-PMH, etc) that disseminates metadata should consult it before disseminating the value of a metadata field. Since the MetadataExposure.isHidden() method gets called in a lot of inner loops, it is important to implement it efficiently, in both time and memory utilization. It computes an answer without consuming ANY memory (e.g. it does not build any temporary Strings) and in close to constant time by use of hash tables. Although most sites will only hide a few fields, we can't predict what the usage will be so it's better to make it scalable. Algorithm is as follows: 1. If a Context is provided and it has a user who is Administrator, always grant access (return false). 2. Return true if field is on the hidden list, false otherwise. The internal maps are populated from DSpace Configuration at the first call, in case the properties are not available in the static context. Configuration Properties: ## hide a single metadata field #metadata.hide.SCHEMA.ELEMENT[.QUALIFIER] = true # example: dc.type metadata.hide.dc.type = true # example: dc.description.provenance metadata.hide.dc.description.provenance = true
Version:
$Revision: 3734 $
Author:
Larry Stone
  • Field Details

  • Constructor Details

    • MetadataExposureServiceImpl

      protected MetadataExposureServiceImpl()
  • Method Details

    • isHidden

      public boolean isHidden(Context context, String schema, String element, String qualifier) throws SQLException
      Description copied from interface: MetadataExposureService
      Returns whether the given metadata field should be exposed (visible). The metadata field is in the DSpace's DC notation: schema.element.qualifier
      Specified by:
      isHidden in interface MetadataExposureService
      Parameters:
      context - DSpace context
      schema - metadata field schema (namespace), e.g. "dc"
      element - metadata field element
      qualifier - metadata field qualifier
      Returns:
      true (hidden) or false (exposed)
      Throws:
      SQLException - if database error
    • isInitialized

      protected boolean isInitialized()
      Returns whether the maps from configuration have already been loaded into the hiddenElementSets property.
      Returns:
      true (initialized) or false (not initialized)
    • init

      protected void init()
      Loads maps from configuration unless it's already done. The configuration properties are a map starting with the "metadata.hide." prefix followed by schema, element and qualifier separated by dots and the value is true (hidden) or false (exposed).