Class MultipleKeyCaseMap<V>

java.lang.Object
java.util.AbstractMap<K,V>
nablarch.core.util.map.MapWrapper<String,V>
nablarch.core.util.map.MultipleKeyCaseMap<V>
Type Parameters:
V - 値の型
All Implemented Interfaces:
Map<String,V>
Direct Known Subclasses:
DataRecord, SqlRow

public class MultipleKeyCaseMap<V> extends MapWrapper<String,V>
キーの大文字と小文字、アンダースコア(_)の有無を区別しないマップの実装クラス。

以下のメソッドは、キーの大文字と小文字、アンダースコアの有無を区別しない。

同一キーとみなす例
  • 大文字小文字の区別はしない。(USER_NAMEとuser_nameは同一キーとみなす)
  • アンダースコアの有無は区別しない。(USER_NAMEとuserNameは同一キーとみなす)
Author:
Kiyohito Itoh
  • Constructor Details

    • MultipleKeyCaseMap

      @Published(tag="architect") public MultipleKeyCaseMap()
      MultipleKeyCaseMapのインスタンスを生成する。
    • MultipleKeyCaseMap

      @Published(tag="architect") public MultipleKeyCaseMap(Map<String,V> map)
      mapを元に、MultipleKeyCaseMapのインスタンスを生成する。

      呼び出し側でキー変換情報をキャッシュ可能な場合は、 性能劣化を防ぐためにMultipleKeyCaseMap(Map, Map)を使用すること。

      Parameters:
      map - マップ
    • MultipleKeyCaseMap

      public MultipleKeyCaseMap(Map<String,V> map, Map<String,String> keyNames)
      mapとキー変換情報を元にMultipleKeyCaseMapのインスタンスを生成する。

       呼び出し側でキー変換情報をキャッシュしている場合にこのコンストラクタを使用する。
       キー変換情報マップのkeyとvalueは下記のとおり。
      
           key: 実データマップキーの大文字を小文字にし、アンダースコアを削除した値
           value: 実データマップキー
      
       キー変換情報マップを作成する際は、
       StringUtil.lowerAndTrimUnderScore(String)メソッドを使用してkeyの値を取得すること。
       
       本コンストラクタを呼び出す場合は、引数のマップとキー変換情報の整合性が取れている必要がある。
       
      Parameters:
      map - マップ
      keyNames - キー変換情報
    • MultipleKeyCaseMap

      public MultipleKeyCaseMap(MultipleKeyCaseMap<V> orig)
      コピーコンストラクタ。
      Parameters:
      orig - コピー元となるMap
  • Method Details

    • copyValueOf

      protected static <KEY, VAL> Map<KEY,VAL> copyValueOf(Map<KEY,VAL> original)
      引数で与えられたMapをコピーする。
      Type Parameters:
      KEY - キーの型
      VAL - 値の型
      Parameters:
      original - コピー元のMap
      Returns:
      コピーされたMap
    • getDelegateMap

      public Map<String,V> getDelegateMap()
      このラッパーが処理を委譲するMapオブジェクトを返す。
      Specified by:
      getDelegateMap in class MapWrapper<String,V>
      Returns:
      処理を委譲するMapオブジェクト
    • put

      @Published public V put(String key, V value)

      MapWrapper.getDelegateMap()が返すMapオブジェクトに処理を委譲する。

      Specified by:
      put in interface Map<String,V>
      Overrides:
      put in class MapWrapper<String,V>
    • putAll

      @Published public void putAll(Map<? extends String,? extends V> m)

      MapWrapper.getDelegateMap()が返すMapオブジェクトに処理を委譲する。

      Specified by:
      putAll in interface Map<String,V>
      Overrides:
      putAll in class MapWrapper<String,V>
    • containsKey

      @Published public boolean containsKey(Object key)
      キー名の存在チェック。

      指定されるキー名は、大文字小文字は区別しない。 また、アンダースコア(_)を含むキー名の場合には、アンダースコアを除去したキー名を指定してもよい。

      Specified by:
      containsKey in interface Map<String,V>
      Overrides:
      containsKey in class MapWrapper<String,V>
      Parameters:
      key - キー名
      Returns:
      存在している場合は、true
    • get

      @Published public V get(Object key)
      指定されたキー名に対応する値を返却する。

      指定されるキー名は、大文字小文字は区別しない。 また、アンダースコア(_)を含むキー名の場合には、アンダースコアを除去したキー名を指定してもよい。

      Specified by:
      get in interface Map<String,V>
      Overrides:
      get in class MapWrapper<String,V>
      Parameters:
      key - キー名
      Returns:
      指定されたキー名に対応する値(キー名が存在しない場合は、nullを返却する。)
    • addKeyConversion

      protected void addKeyConversion(String key)
      指定されたキー名に対するキー変換情報をキー変換情報マップに追加する。
       キー変換情報マップに追加される内容は下記のとおり。
       
           key: 指定されたキー名を指定してStringUtil.lowerAndTrimUnderScore(String)メソッドを呼び出した結果
           value: 指定されたキー名
       
       
      Parameters:
      key - キー名
    • getActualDataKey

      protected String getActualDataKey(String key)
      指定されたキー名に対応する実データマップのキー名を取得する。
       性能劣化を防止するために、一度指定されたキー名はキャッシュする(=キー変換情報マップに追加する)。
       これにより、次回同一キーが指定された場合にキャッシュから実データマップのキー名が取得できる。
       
       このキャッシュにより、本オブジェクトが保持するキー変換情報マップは、
       StringUtil.lowerAndTrimUnderScore(String)が返す値だけでなく、
       このメソッドで指定されたキー名と実データマップのキー名のペアも含まれる。
       
      Parameters:
      key - キー名
      Returns:
      実データマップのキー名。存在しない場合はnull