Package ru.bitel.common

# Class ParameterMap

java.lang.Object
ru.bitel.common.ParameterMap

Direct Known Subclasses:
  `ParameterMap.DefaultParameterMap`, `Preferences`

public abstract class ParameterMap extends Object
Исходный map параметров.
Его главная ф-ция - get( key, value ). Остальные используют эту функцию для парсинга значений (float, double). Во всей этой схеме отсутствие элемента и value==null одно и то же (иногда это важно понимать). Можно врапить различные объекты, например сделать ParameterMap из XML элемента, из Map, из HttpRequest.
TODO: хорошо бы HttpRequest обернуть ParameterMap, тогда в акшенах, которые используются также для рассылки почты request можно было использовать прозрачно HttpRequest или парамерты рассылки почты

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static class`
  `ParameterMap.DefaultParameterMap`
  Примитивная/минимальная имплементация ParameterMap хранящая в Mapinvalid input: '<'String, String>

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ParameterMap()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `abstract Set<Map.Entry<String,String>>`
  `entrySet()`
  `protected void`
  `extract(Map<String,String> data)`
  `ParameterMap`
  `filter(String prefix)`
  Аналог sub, но префикс не отрезается, просто в новом ParameterMap остаются ключи с указанным префиксом.
  `String`
  `get(String key)`
  Получение значения из конфига.
  `abstract String`
  `get(String key, String def)`
  `BigDecimal`
  `getBigDecimal(String key, BigDecimal def)`
  `boolean`
  `getBoolean(String key, boolean def)`
  `char`
  `getChar(String key, char def)`
  `double`
  `getDouble(String key, double def)`
  `<T extends Enum<T>>
  T`
  `getEnum(Class<T> enumType, String key, T def)`
  Получение значения представляющего строковое значение enum-типа
  `float`
  `getFloat(String key, float def)`
  `int`
  `getInt(String key, int def)`
  `List<Integer>`
  `getIntegerList(String key, List<Integer> defList)`
  Получение списка целых чисел из числовой строки разделенной запятыми.
  `LocalDate`
  `getLocalDate(String key, LocalDate def)`
  `long`
  `getLong(String key, long def)`
  `Map<String,String>`
  `getMap()`
  Возвращает в виде жавовского Map все значения.
  `ParameterMap`
  `inherit(ParameterMap parameterMap)`
  Создает новый ParameterMap, где текущий становится родительским к аргументу parameterMap.
  Т.е. при вызове `get(String, String)` у результата значение будет взято у аргумента parameterMap, а при отсутсвии - у текущего (ставшего родительским).
  ``
  `ParameterMap`
  `sub(String prefix)`
  Возвращает новый подмап объектов, с ключами, начинающимися с префикса.
  `SortedMap<Integer,ParameterMap>`
  `subIndexed(String prefix)`
  Возвращает новый мап ParameterMap-ов.
  `Map<String,ParameterMap>`
  `subKeyed(String prefix)`
  Возвращает новый мап ParameterMap-ов.
  `ParameterMap`
  `subLined(String key, String defValue)`
  Возвращает новый подмап объектов, с ключами разбитыми из строки вида "custom:Пользовательские;test:Тестовые;0:Активен".
  `void`
  `toReference(Reference ref)`
  `String`
  `toString()`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- ## Constructor Details

  - ### ParameterMap

    public ParameterMap()

- ## Method Details

  - ### get

    public String get(String key)
    Получение значения из конфига.
    Parameters:
      `key` - ключ
    Returns:
      значение или null, если отсутствует.

  - ### get

    public abstract String get(String key, String def)

  - ### getInt

    public int getInt(String key, int def)

  - ### getFloat

    public float getFloat(String key, float def)

  - ### getLong

    public long getLong(String key, long def)

  - ### getDouble

    public double getDouble(String key, double def)

  - ### getBigDecimal

    public BigDecimal getBigDecimal(String key, BigDecimal def)

  - ### getBoolean

    public boolean getBoolean(String key, boolean def)

  - ### getChar

    public char getChar(String key, char def)

  - ### getLocalDate

    public LocalDate getLocalDate(String key, LocalDate def)

  - ### getEnum

    public <T extends Enum<T>> T getEnum(Class<T> enumType, String key, T def)
    Получение значения представляющего строковое значение enum-типа
    Type Parameters:
      `T` - тип, представляющий enum (!)
    Parameters:
      `enumType` - класс енума, указанный напрямую (если получать например из def то не получится передать def=null)
      `key` - ключ
      `def` - значение по умолчанию
    Returns:
      значение enum-типа или значение по умолчанию

  - ### getIntegerList

    public List<Integer> getIntegerList(String key, List<Integer> defList)
    Получение списка целых чисел из числовой строки разделенной запятыми.
    Parameters:
      `key` -
      `defList` -
    Returns:
      если параметр не задан вернет defList, иначе пустой лист или со значениями.

  - ### entrySet

    public abstract Set<Map.Entry<String,String>> entrySet()

  - ### extract

    protected void extract(Map<String,String> data)

  - ### getMap

    public Map<String,String> getMap()
    Возвращает в виде жавовского Map все значения. По-нормальному перегрузить, чтобы брал напрямую оттуда где хранит имплементация, а не юзалась общая entrySet.

  - ### sub

    public ParameterMap sub(String prefix)
    Возвращает новый подмап объектов, с ключами, начинающимися с префикса. Ключи теряют этот префикс, остаётся часть после префикса. Не забывайте завершающую точку передавать с префиксом. Хак: для клонирования параметрМапа можно передать пустую строку.

         prefix.1=2
         prefix.3=4
         ->
         1=2
         3=4

    Parameters:
      `prefix` - префикс.
    Returns:
      подмножество исходного мэпа c отрезанными из ключей префиксами. Никогда не null.

  - ### filter

    public ParameterMap filter(String prefix)
    Аналог sub, но префикс не отрезается, просто в новом ParameterMap остаются ключи с указанным префиксом.

  - ### subIndexed

    public SortedMap<Integer,ParameterMap> subIndexed(String prefix)
    Возвращает новый мап ParameterMap-ов. Берёт всё под префиксами и составляет мэп из числовых ид за ними и последующих значений, формируя из них ParameterMap. Аналогична subKeyed, но составляет сортированный мэп с числовыми ключами.

         prefix.1.12=2
         prefix.1.34=4
         prefix.2.56=2
         prefix.2.78=4
         ->
         сортированный мэп
         1={12=2,34=4}
         2={56=2,78=4}

    Parameters:
      `prefix` - префикс определяющий мэп
    Returns:
      SortedMap. Никогда не null.
    See Also:
      - `subKeyed(String)`

  - ### subKeyed

    public Map<String,ParameterMap> subKeyed(String prefix)
    Возвращает новый мап ParameterMap-ов. Берёт всё под префиксами и иставляет мэп из строковых ид за ними и последующих значений, формируя из них ParameterMap. Аналогична subIndexed, но составляет несортированный мэп со строковыми ключами.

         prefix.a.12=2
         prefix.a.34=4
         prefix.b.56=2
         prefix.b.78=4
         ->
         несортированный мэп
         a={12=2,34=4}
         b={56=2,78=4}

    Parameters:
      `prefix` - префикс определяющий мэп
    Returns:
      Map. Никогда не null.
    See Also:
      - `subIndexed(String)`

  - ### toReference

    public void toReference(Reference ref)

  - ### inherit

    public ParameterMap inherit(ParameterMap parameterMap)
    Создает новый ParameterMap, где текущий становится родительским к аргументу parameterMap.
    Т.е. при вызове `get(String, String)` у результата значение будет взято у аргумента parameterMap, а при отсутсвии - у текущего (ставшего родительским).
    `

         ParameterMap parent;
         ParameterMap child;
         ...
         ParameterMap current = parent.inherit( child );

    `
    Parameters:
      `parameterMap` -
    Returns:

  - ### toString

    public String toString()
    Overrides:
      `toString` in class `Object`

  - ### subLined

    public ParameterMap subLined(String key, String defValue)
    Возвращает новый подмап объектов, с ключами разбитыми из строки вида "custom:Пользовательские;test:Тестовые;0:Активен".

         key=1:2;3:4
         ->
         1=2
         3=4

    Parameters:
      `key` - ключ.
      `defValue` - по дефолту значение ключа в исходном виде , или null если пусть вернётся пустой мап
    Returns:
      подмножество исходного мэпа c сформированными ключами из значения. Врзвращается упорядоченный LinkedHashMap, т.е. entrySet выдаст в порядке как описано в строке. Никогда не null.