Class LocalizableItem

All Implemented Interfaces:
Serializable, Comparable
Direct Known Subclasses:
EnumerationValue, GenericItem, TestItem, TypeManagerManaged

public abstract class LocalizableItem extends ExtensibleItem
The superclass of all items which can have localized properties.

Please not that despite of the name the properties are loclized but not the item itself.

See Also:
  • Field Details

    • LANGUAGE_FALLBACK_ENABLED

      public static final String LANGUAGE_FALLBACK_ENABLED
      Session context parameter which enables language fallback for for all localized property read operations. This means that each single property value which is NULL for the requested language is re-read using the (optional) fallback languages of the requested language.
      Since:
      2.20
      See Also:
  • Constructor Details

    • LocalizableItem

      public LocalizableItem()
  • Method Details

    • getAllValuesSessionContext

      protected SessionContext getAllValuesSessionContext(SessionContext ctx)
      creates a session context instance for getting all localized property values using getLocalizedProperty(SessionContext, String). the return value will be a map { Language -> Object }

      the created session context simply doesnt have a language.

      use it as follows:

       public Map myMethod(SessionContext ctx)
       {
              return (Map) getLocalizedProperty(getAllValuesSessionContext(ctx), "theKey");
       }
       
      Parameters:
      ctx - the original session contex
      Returns:
      a session context instance without a language set
    • hasLanguage

      protected boolean hasLanguage(SessionContext ctx)
    • isFallbackEnabled

      protected boolean isFallbackEnabled(SessionContext ctx)
      Since:
      2.20
    • getAllLocalizedProperties

      public Map getAllLocalizedProperties()
      Returns all localized properties in the current session language as as Map of key/value mappings.

      This method calls getAllLocalizedProperties(SessionContext) with the current session's SessionContext object. See this method for more details.

      Returns:
      the Map of key/value mappings.
    • getAllLocalizedProperties

      public Map getAllLocalizedProperties(SessionContext ctx)
      Returns all localized properties in given SessionContext language as as Map of key/value mappings.

      This method is using the following attributes of the given SessionContext:

      CacheUsage   Language   StagingMethod
      yes   yes   yes if called on a StageableItem, no otherwise


      Parameters:
      ctx - A SessionContext object
      Returns:
      the Map of key/value mappings.
    • getLocalizedPropertyNames

      public Set getLocalizedPropertyNames()
      Returns the qualifiers of all localized properties of this item.

      This method calls getLocalizedPropertyNames(SessionContext) with the current session's SessionContext object. See this method for more details.

      Returns:
      the set containing the property names (Strings)
    • getLocalizedPropertyNames

      public Set getLocalizedPropertyNames(SessionContext ctx)
      Returns the qualifiers of all localized properties of this item.

      This method is using the following attributes of the given SessionContext:

      CacheUsage   Language   StagingMethod
      yes   yes   yes if called on a StageableItem, no otherwise


      Parameters:
      ctx - a SessionContext object
      Returns:
      the set containing the property names (Strings)
    • getLocalizedProperty

      public Object getLocalizedProperty(String name)
      Returns the value of a localized property.

      This method calls getLocalizedProperty(SessionContext, String) with the current session's SessionContext object. See this method for more details.

      Parameters:
      name - the name of the property
      Returns:
      the property that is mapped to the name
    • getLocalizedProperty

      public Object getLocalizedProperty(SessionContext ctx, String name)
      Returns the value of a localized property.

      This method is using the following attributes of the given SessionContext:

      CacheUsage   Language   StagingMethod
      yes   yes   yes if called on a StageableItem, no otherwise


      Parameters:
      ctx - a SessionContext object
      name - the name of the property
      Returns:
      the localized property that is mapped to the name
    • isEmptyValue

      protected boolean isEmptyValue(SessionContext ctx, String name, Object value)
      Override this method to implement different language fallback behaviour. As default only null values are considered as empty. Example:
       @Override
       protected boolean isEmptyValue(SessionContext ctx, String name, Object value)
       {
              return super.isEmptyValue(ctx, name, value) || ("myAttr".equals(name) && ((String) value).trim().length() == 0);
       }
       
      Parameters:
      ctx - the session context while getting the property
      name - the property name
      value - the actual stored value
      Returns:
      true if the value should be treated as empty - in this case values for fallback languages are fetched
    • getLocalizedPropertyInternal

      protected Object getLocalizedPropertyInternal(SessionContext ctx, String name)
      Non-language-fallback implementation for getLocalizedProperty(SessionContext, String).
      Since:
      2.20
    • setLocalizedProperty

      public Object setLocalizedProperty(String name, Object value)
      Sets the value of a localized property. The value is set for the current session language.
       jaloSession.getSessionContext().setLanguage(jaloSession.getC2LManager().getLanguageByIsoCode("DE"));
       myLocItem.setLocalizedProperty("de-value");
       
      Parameters:
      name - the name of the property
      value - the new value of this property
      Returns:
      the localized property that was mapped to the name before setting the new property.
    • setLocalizedProperty

      public Object setLocalizedProperty(SessionContext ctx, String name, Object value)
      Sets the value of a localized property. Normally the value is set for the language spcified by the given session context.
       SessionContext ctx = jaloSession.createSessionContext();
       ctx.setLanguage(jaloSession.getC2LManager().getLanguageByIsoCode("DE"));
       myLocItem.setLocalizedProperty(ctx, "de-value");
       

      if the session context doesnt hold a language it is expected that all values are meant to be set at once - the given value has to be a map { Language -> Serializable } in that case !

       Map allValues = new HashMap();
       allValues.put(jaloSession.getC2LManager().getLanguageByIsoCode("DE"), "de-value");
       allValues.put(jaloSession.getC2LManager().getLanguageByIsoCode("EN"), "en-value");
       SessionContext ctx = jaloSession.createSessionContext();
       ctx.setLanguage(null);
       myLocItem.setLocalizedProperty(ctx, allValues);
       
      Parameters:
      name - the name of the property
      value - the new value of this property
      ctx - the session context defining the language to set the value for
      Returns:
      the localized property that was mapped to the name before setting the new property.
    • setAllLocalizedProperties

      public Map<Language,?> setAllLocalizedProperties(SessionContext ctx, String name, Map<Language,?> values)
      Changes multiple localized values of one property at once. The values map specifies which values should be set for their mapped languages.

      Please note that this method will not clear any existing value for languages which are missing in the values map!

      Parameters:
      ctx - the session context
      name - the property name
      values -
      Returns:
      the previous value for the mapped languages
    • setAllLocalizedProperties

      public Map<Language,?> setAllLocalizedProperties(String name, Map<Language,?> values)
      Changes multiple localized values of one property at once. The values map specifies which values should be set for their mapped languages.

      Please note that this method will not clear any existing value for languages which are missing in the values map!

      Parameters:
      name - the property name
      values -
      Returns:
      the previous value for the mapped languages
    • getAllLocalizedProperties

      public Map<Language,?> getAllLocalizedProperties(SessionContext ctx, String name, Set<Language> languages)
      Returns all values of a localized property according to a specified set of languages. Values mapped to other languages are not returned.
      Parameters:
      ctx - the session context
      name - the property name
      languages - the languages to get values for
    • getAllLocalizedProperties

      public Map<Language,?> getAllLocalizedProperties(String name, Set<Language> languages)
      Returns all values of a localized property according to a specified set of languages. Values mapped to other languages are not returned.
      Parameters:
      name - the property name
      languages - the languages to get values for
    • removeLocalizedProperty

      public Object removeLocalizedProperty(String name)
      Removes a localized property from this item.

      This method calls removeLocalizedProperty(SessionContext, String) with the current session's SessionContext object. See this method for more details.

      Parameters:
      name - the name of the property
      Returns:
      the localized property value which was removed
      See Also:
    • removeLocalizedProperty

      public Object removeLocalizedProperty(SessionContext ctx, String name)
      Removes a localized property from this item.

      Please note that only the property in the SessionContext language is removed. Its other values will remain unchanged.

      Parameters:
      name - the name of the property
      ctx - a SessionContext object defining the language to remove value for
      Returns:
      the localized property value which was removed