docs: def get_value_by_parameter(self, parameter_id=None):
          """Gets a ``Value`` for the given parameter ``Id``.
  
          If more than one value exists for the given parameter, the most
          preferred value is returned. This method can be used as a
          convenience when only one value is expected.
          ``get_values_by_parameters()`` should be used for getting all
          the active values.
  
          arg:    parameter_id (osid.id.Id): the ``Id`` of the
                  ``Parameter`` to retrieve
          return: (osid.configuration.Value) - the value
          raise:  NotFound - the ``parameter_id`` not found or no value
                  available
          raise:  NullArgument - the ``parameter_id`` is ``null``
          raise:  OperationFailed - unable to complete request
          raise:  PermissionDenied - authorization failure
          *compliance: mandatory -- This method must be implemented.*
  
          """
          pass
          if parameter_id is None:
              raise NullArgument
          try:
              parameter_key = parameter_id.get_identifier() + '.' + parameter_id.get_identifier_namespace()
              parameter_map = self._catalog._config_map['parameters'][parameter_key]
          except KeyError:
              try:
                  parameter_key = parameter_id.get_identifier()
                  parameter_map = self._catalog._config_map['parameters'][parameter_key]
              except KeyError:
                  raise NotFound(str(parameter_id))
          if len(parameter_map['values']) == 0:
              raise NotFound()
          lowest_priority_value_map = None
          for value_map in parameter_map['values']:
              if lowest_priority_value_map is None or lowest_priority_value_map['priority'] < value_map['priority']:
                  lowest_priority_value_map = value_map
          return Value(lowest_priority_value_map, Parameter(parameter_map))