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>
 
フィールドの概要
protected  java.util.Map dataSizeMap
           
 boolean memoryMode
           
 
クラス okuyama.imdst.util.CoreValueMap から継承されたフィールド
useStorageObjectTime
 
コンストラクタの概要
KeyManagerValueMap(int size, boolean memoryMode, java.lang.String[] virtualStoreDirs, boolean renewFlg, java.io.File bkupObjFile, java.lang.String diskCacheFile)
           
KeyManagerValueMap(java.lang.String[] dirs, int numberOfDataSize, boolean renewFlg, java.lang.String diskCacheFile)
           
 
メソッドの概要
 void close()
           
 boolean containsKey(java.lang.Object key)
          containsKeyをオーバーライド.
 long dataPointGet(java.lang.Object key)
          Valueがファイルにある場合の位置を取得する
 void deleteMapDataFile()
          Diskモード時にデータストリームを閉じて、データファイルを削除する.
 void fileStoreMapObject(java.io.File file)
           
 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に書き出した後でも必須
 void initNoMemoryModeSetting(java.lang.String lineFile, boolean renewFlg)
          本メソッドは使用前に必ず呼び出す
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, fileStoreMapObject, size
 
クラス java.util.AbstractMap から継承されたメソッド
clone, containsValue, equals, hashCode, isEmpty, keySet, putAll, toString, values
 
クラス java.lang.Object から継承されたメソッド
finalize, getClass, notify, notifyAll, wait, wait, wait
 

フィールドの詳細

memoryMode

public boolean memoryMode

dataSizeMap

protected java.util.Map dataSizeMap
コンストラクタの詳細

KeyManagerValueMap

public KeyManagerValueMap(int size,
                          boolean memoryMode,
                          java.lang.String[] virtualStoreDirs,
                          boolean renewFlg,
                          java.io.File bkupObjFile,
                          java.lang.String diskCacheFile)

KeyManagerValueMap

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

initNoMemoryModeSetting

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


initNoMemoryModeSetting

public void initNoMemoryModeSetting(java.lang.String lineFile,
                                    boolean renewFlg)
本メソッドは使用前に必ず呼び出す
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となる)

dataPointGet

public long dataPointGet(java.lang.Object key)
Valueがファイルにある場合の位置を取得する


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()

fileStoreMapObject

public void fileStoreMapObject(java.io.File file)
                        throws java.lang.Exception
例外:
java.lang.Exception

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 変更時間