code: private String addDataUsage(String attribute, Set<DataUsage> usages) throws PropertyException {
          Validate.notNull(attribute);
          Validate.notEmpty(attribute);
          Validate.notNull(usages);
          Validate.noNullElements(usages);
          String dataUsageName = String.format(DATA_USAGE_FORMAT, getNextDataUsageIndex());
          props.setProperty(dataUsageName, String.format(DATA_USAGE_VALUE_FORMAT, attribute, ArrayUtils.toString(usages.toArray())));
          addDataUsageNameToList(dataUsageName);
          return dataUsageName;
      }
docs: Adds the given data usage to the context properties.<br>
  This requires to generate a new name for the data usage (e.g.
  DATA_USAGE_1) <br>
  and storing a string-representation of this data usage under this
  name.<br>
  Additionally, the new data usage name is stored in the property field
  which is summing up all data usage names (ACTIVITY_DATA_USAGES).
  
  @return The newly generated name for the data usage under which it is
  accessible.
  @throws ParameterException if the given data usage parameters are
  invalid.
  @throws PropertyException if the data usage property name cannot be
  generated or the data usage cannot be stored.
  @see #getNextDataUsageIndex()
  @see #addDataUsageNameToList(String)