Class BaseDynamicStateDescriptionProvider

java.lang.Object
org.openhab.core.thing.binding.AbstractDynamicDescriptionProvider
org.openhab.core.thing.binding.BaseDynamicStateDescriptionProvider
All Implemented Interfaces:
DynamicStateDescriptionProvider

@NonNullByDefault public abstract class BaseDynamicStateDescriptionProvider extends AbstractDynamicDescriptionProvider implements DynamicStateDescriptionProvider
The BaseDynamicStateDescriptionProvider provides a base implementation for the DynamicStateDescriptionProvider.

It provides localized patterns and dynamic StateOptions while leaving other StateDescription fields as original. Therefore the inheriting class has to request a reference for the ChannelTypeI18nLocalizationService on its own.

Author:
Christoph Weitkamp - Initial contribution, Christoph Weitkamp - Added ChannelStateDescriptionChangedEvent
  • Field Details

  • Constructor Details

    • BaseDynamicStateDescriptionProvider

      public BaseDynamicStateDescriptionProvider()
  • Method Details

    • setStatePattern

      public void setStatePattern(ChannelUID channelUID, String pattern)
      For a given ChannelUID, set a pattern that should be used for the channel, instead of the one defined statically in the ChannelType.
      Parameters:
      channelUID - the ChannelUID of the channel
      pattern - a pattern
    • setStateOptions

      public void setStateOptions(ChannelUID channelUID, List<StateOption> options)
      For a given ChannelUID, set a List of StateOptions that should be used for the channel, instead of the one defined statically in the ChannelType.
      Parameters:
      channelUID - the ChannelUID of the channel
      options - a List of StateOptions
    • getStateDescription

      public @Nullable StateDescription getStateDescription(Channel channel, @Nullable StateDescription original, @Nullable Locale locale)
      Description copied from interface: DynamicStateDescriptionProvider
      For a given Channel, return a StateDescription that should be used for the channel, instead of the one defined statically in the ChannelType. For a particular channel, there should be only one provider of the dynamic state description. When more than one description is provided for the same channel (by different providers), only one will be used, from the provider that registered first. If the given channel will not be managed by the provider null should be returned. You never must return the original state description in such case.
      Specified by:
      getStateDescription in interface DynamicStateDescriptionProvider
      Parameters:
      channel - channel
      original - original state description retrieved from the channel type this is the description to be replaced by the provided one
      locale - locale (can be null)
      Returns:
      state description or null if none provided
    • localizeStatePattern

      protected @Nullable String localizeStatePattern(String pattern, Channel channel, @Nullable Locale locale)
      Localizes a pattern that should be used for the channel.
      Parameters:
      pattern - a pattern
      channel - the channel
      locale - a locale
      Returns:
      the localized pattern
    • localizedStateOptions

      protected List<StateOption> localizedStateOptions(List<StateOption> options, Channel channel, @Nullable Locale locale)
      Localizes a List of StateOptions that should be used for the channel.
      Parameters:
      options - a List of StateOptions
      channel - the channel
      locale - a locale
      Returns:
      the localized List of StateOptions
    • deactivate

      public void deactivate()
      Overrides:
      deactivate in class AbstractDynamicDescriptionProvider