okuyama.imdst.util
クラス KeyManagerValueMap

java.lang.Object
  上位を拡張 java.util.AbstractMap
      上位を拡張 okuyama.imdst.util.CoreValueMap
          上位を拡張 okuyama.imdst.util.KeyManagerValueMap
すべての実装されたインタフェース:
java.io.Serializable, java.lang.Cloneable, java.util.Map

public class KeyManagerValueMap
extends CoreValueMap
implements java.lang.Cloneable, java.io.Serializable

KeyとValueを管理する独自Mapクラス.
メモリモードとファイルモードで動きが異なる.
メモリモード:KeyとValueを親クラスであるHashMapで管理する.
ファイルモード:Keyは親クラスのMapに、Valueはファイルに記録する
KeyとValueが格納させている行数を記録している.
行数から、ファイル内からValueを取り出す.

作成者:
T.Okuyama
関連項目:
直列化された形式

入れ子のクラスの概要
 
クラス java.util.AbstractMap から継承された入れ子のクラス/インタフェース
java.util.AbstractMap.SimpleEntry<K,V>, java.util.AbstractMap.SimpleImmutableEntry<K,V>
 
インタフェース java.util.Map から継承された入れ子のクラス/インタフェース
java.util.Map.Entry<K,V>
 
コンストラクタの概要
KeyManagerValueMap(int size, boolean memoryMode, java.lang.String[] virtualStoreDirs)
           
KeyManagerValueMap(java.lang.String[] dirs, int numberOfDataSize)
           
 
メソッドの概要
 void close()
           
 boolean containsKey(java.lang.Object key)
          containsKeyをオーバーライド.
 void deleteMapDataFile()
          Diskモード時にデータストリームを閉じて、データファイルを削除する.
 java.lang.Object get(java.lang.Object key)
          getをオーバーライド.
 int getAllDataCount()
          getAllDataCount.
 java.lang.String[] getAllDataUseSize()
           
 long getDataUseSize(java.lang.String unique)
           
 int getKeySize()
          getKeySize.
 long getKLastDataChangeTime()
          データを変更した最終時間を取得する.
 java.lang.Object getNoCnv(java.lang.Object key)
          データを無加工で取り出す.
 void initNoMemoryModeSetting(java.lang.String lineFile)
          本メソッドは使用前に必ず呼び出す
Objectに書き出した後でも必須
 java.lang.Object put(java.lang.Object key, java.lang.Object value)
          putをオーバーライド.
 java.lang.Object remove(java.lang.Object key)
          removeをオーバーライド.
 void setKLastDataChangeTime(long time)
          データを変更した最終時間を記録する.
 boolean vacuumData()
          データファイルの不要領域を掃除して新たなファイルを作りなおす.
 
クラス okuyama.imdst.util.CoreValueMap から継承されたメソッド
clear, entrySet, size
 
クラス java.util.AbstractMap から継承されたメソッド
clone, containsValue, equals, hashCode, isEmpty, keySet, putAll, toString, values
 
クラス java.lang.Object から継承されたメソッド
finalize, getClass, notify, notifyAll, wait, wait, wait
 

コンストラクタの詳細

KeyManagerValueMap

public KeyManagerValueMap(int size,
                          boolean memoryMode,
                          java.lang.String[] virtualStoreDirs)

KeyManagerValueMap

public KeyManagerValueMap(java.lang.String[] dirs,
                          int numberOfDataSize)
メソッドの詳細

initNoMemoryModeSetting

public void initNoMemoryModeSetting(java.lang.String lineFile)
本メソッドは使用前に必ず呼び出す
Objectに書き出した後でも必須


getNoCnv

public java.lang.Object getNoCnv(java.lang.Object key)
データを無加工で取り出す.
無加工とは、valueをファイルで保持する場合はpadding文字列をが付加されているが、それを削除せずに返す.

パラメータ:
key -
戻り値:
Object

get

public java.lang.Object get(java.lang.Object key)
getをオーバーライド.
MemoryモードとFileモードで取得方法が異なる.

定義:
インタフェース java.util.Map 内の get
オーバーライド:
クラス CoreValueMap 内の get
パラメータ:
key - 登録kye値(全てStringとなる)
戻り値:
Object 返却値(全てStringとなる)

put

public java.lang.Object put(java.lang.Object key,
                            java.lang.Object value)
putをオーバーライド.
MemoryモードとFileモードで保存方法が異なる.

定義:
インタフェース java.util.Map 内の put
オーバーライド:
クラス CoreValueMap 内の put
パラメータ:
key - 登録kye値(全てStringとなる)
value - 登録value値(全てStringとなる)
戻り値:
Object 返却値(Fileモード時は返却値は常にnull)

remove

public java.lang.Object remove(java.lang.Object key)
removeをオーバーライド.
MemoryモードとFileモード両方で同じ動きをする.

定義:
インタフェース java.util.Map 内の remove
オーバーライド:
クラス CoreValueMap 内の remove
パラメータ:
key - 削除kye値(全てStringとなる)
戻り値:
Object 返却値

containsKey

public boolean containsKey(java.lang.Object key)
containsKeyをオーバーライド.
MemoryモードとFileモード両方で同じ動きをする.

定義:
インタフェース java.util.Map 内の containsKey
オーバーライド:
クラス CoreValueMap 内の containsKey
パラメータ:
key - 登録kye値(全てStringとなる)
戻り値:
boolean 返却値

getDataUseSize

public long getDataUseSize(java.lang.String unique)

getAllDataUseSize

public java.lang.String[] getAllDataUseSize()

vacuumData

public boolean vacuumData()
データファイルの不要領域を掃除して新たなファイルを作りなおす.
方法はMapを一時Mapをつくり出して、現在のsuperクラスのMapから全てのKeyを取り出し、
そのキー値を使用してvalueを自身から取得し、新しいDataファイルに書き出すと同時に、
一時MapにKeyと書き込んだファイル内の行数をputする.
全てのKeyの取得が終わったタイミングで新しいファイルには、フラグメントはないので、
次に、同期を実施し同期中に、superのMapをクリアし、一時Mapの内容をsuperのMapにputする.
これでsuperのMapはフラグメントの存在しない新しいファイルの行数を保持できているので、 あとは元のデータファイルを削除し、新しく作成したフラグメントのないファイルをデータファイル名に リネームすれば、Vacuum完了.


close

public void close()

deleteMapDataFile

public void deleteMapDataFile()
                       throws java.lang.Exception
Diskモード時にデータストリームを閉じて、データファイルを削除する.

例外:
java.lang.Exception

getKeySize

public int getKeySize()
getKeySize.

パラメータ:
-
戻り値:
int
例外:

getAllDataCount

public int getAllDataCount()
getAllDataCount.

パラメータ:
-
戻り値:
int
例外:

setKLastDataChangeTime

public void setKLastDataChangeTime(long time)
データを変更した最終時間を記録する.

パラメータ:
time - 変更時間

getKLastDataChangeTime

public long getKLastDataChangeTime()
データを変更した最終時間を取得する.

戻り値:
long 変更時間