kinugasa.contents.event
クラス MultiClassEventManager

java.lang.Object
  上位を拡張 kinugasa.contents.event.EventManager
      上位を拡張 kinugasa.contents.event.MultiClassEventManager
すべての実装されたインタフェース:
java.io.Serializable, Freeable

public abstract class MultiClassEventManager
extends EventManager

複数のクラスのイベントを扱うイベントマネージャです.
このクラスは複数の型のEventの実装を時系列に発生させる仕組みを提供します。
クラスインスタンスによって、次に発生するイベントを検索する必要があるため、通常はSingleClassEventManagerよりも低速です。

イベントを登録するには、このクラスの具象クラスを定義し、initメソッド内でaddメソッドを使用してイベントを追加します。

イベントを実行するにはhasNextメソッドとexecuteメソッドを利用します。
while(manager.hasNext(Item.class)){ items.add(manager.execute(Item.class)); }

バージョン:
1.0.0 - 2012/11/15_8:42:48
作成者:
Dra0211

関連項目:
直列化された形式

フィールドの概要
private  java.util.List<Event<?>> events
          このマネージャのイベントリストです.
private static long serialVersionUID
           
 
クラス kinugasa.contents.event.EventManager から継承されたフィールド
TIME_BASE_ENTRY_MODEL
 
コンストラクタの概要
MultiClassEventManager()
          新しいイベントマネージャを構築します.
MultiClassEventManager(int initialSize)
          新しいイベントマネージャを構築します.
 
メソッドの概要
 void add(Event<?> e)
          このマネージャに新しいイベントを追加します.
 void addAll(Event<?>... e)
          このマネージャに新しいイベントを追加します.
 void clear()
          マネージャに追加されているすべてのイベントを破棄します.
 boolean contains(Event<?> evt)
          マネージャにイベントevtが含まれているかを調べます.
<T extends java.io.Serializable>
T
execute(java.lang.Class<T> type)
          指定した型の、最初に見つかったイベントが実行可能であれば実行してイベントのアイテムを返します.
 MultiClassEventManager free()
          コンテンツをメモリから破棄出来るようにします.
 java.util.List<Event<?>> getEvents()
          このマネージャに含まれているすべてのイベントを取得します.
<T extends java.io.Serializable>
Event<T>
getNext(java.lang.Class<T> type)
          指定した型の、最初に見つかったイベントを返します.
<T> boolean
hasNext(java.lang.Class<T> type)
          指定した型のイベントが、実行可能な状態で待機中であるかを検査します.
protected abstract  void init()
          マネージャに追加されているイベントを初期化します.
 boolean isEmpty()
          マネージャの破棄されていないイベントの数が0個であるかを検査します.
 MultiClassEventManager load()
          コンテンツをロードして展開します.
 void printAll(java.io.PrintStream stream)
          ストリームにイベントの情報を発行します.
 void remove(Event<?> evt)
          マネージャにイベントevtが含まれていれば削除します.
 void removeAll(Event<?>... evt)
          マネージャにイベントevtが含まれていれば削除します.
 int size()
          マネージャに追加されており、まだ破棄されていないイベントの数を取得します.
 void sort()
          マネージャに追加されているイベントを、時系列に沿ってソートします.
 java.lang.String toString()
           
 
クラス kinugasa.contents.event.EventManager から継承されたメソッド
getProgressTime, isLoaded, update
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

フィールドの詳細

serialVersionUID

private static final long serialVersionUID
関連項目:
定数フィールド値

events

private java.util.List<Event<?>> events
このマネージャのイベントリストです.

コンストラクタの詳細

MultiClassEventManager

public MultiClassEventManager()
新しいイベントマネージャを構築します. このメソッドでは、イベントの初期値は32となります。


MultiClassEventManager

public MultiClassEventManager(int initialSize)
新しいイベントマネージャを構築します.

パラメータ:
initialSize - イベントの初期容量を指定します。
メソッドの詳細

init

protected abstract void init()
クラス EventManager の記述:
マネージャに追加されているイベントを初期化します. このメソッドはloadメソッドをコールすると自動的に呼ばれます。
具象クラスでは、addメソッドを使用してイベントを追加する処理を記述する 必要があります。

定義:
クラス EventManager 内の init

load

public MultiClassEventManager load()
インタフェース Freeable の記述:
コンテンツをロードして展開します. すでにロードされている場合の動作は、実装によって異なります。
再度ロードすることで、データを最新のものに更新するなど、効果のある場合には、すでにロードされている場合でも 再度ロードすることがあります。

定義:
インタフェース Freeable 内の load
オーバーライド:
クラス EventManager 内の load
戻り値:
インスタンス化と同時にロードするために、thisインスタンスを返します。戻り値は 適切な型にキャストする必要があります。

free

public MultiClassEventManager free()
インタフェース Freeable の記述:
コンテンツをメモリから破棄出来るようにします. 実際にメモリから破棄されるタイミングは、GCに依存します。
まだロードされていないか、開放済みのオブジェクトを開放した場合には、通常は何も行いません。

定義:
インタフェース Freeable 内の free
オーバーライド:
クラス EventManager 内の free
戻り値:
デフォルトでロードされる実装を、インスタンス化と同時に開放するためにthisインスタンスを返します。
戻り値は適切な型にキャストする必要があります。通常、このような実装は効率的でないため推奨されません。

printAll

public void printAll(java.io.PrintStream stream)
クラス EventManager の記述:
ストリームにイベントの情報を発行します. このメソッドはデバッグ用です。loadメソッドによって実行されます。

定義:
クラス EventManager 内の printAll
パラメータ:
stream - 発行するストリームを送信します。

sort

public void sort()
クラス EventManager の記述:
マネージャに追加されているイベントを、時系列に沿ってソートします.

定義:
クラス EventManager 内の sort

size

public int size()
クラス EventManager の記述:
マネージャに追加されており、まだ破棄されていないイベントの数を取得します.

定義:
クラス EventManager 内の size
戻り値:
追加ずみイベントの数を返します。

isEmpty

public boolean isEmpty()
クラス EventManager の記述:
マネージャの破棄されていないイベントの数が0個であるかを検査します.

定義:
クラス EventManager 内の isEmpty
戻り値:
マネージャにイベントがない場合はtrue、1個以上のイベントが待機中である場合はfalseを返します。

clear

public void clear()
クラス EventManager の記述:
マネージャに追加されているすべてのイベントを破棄します.

定義:
クラス EventManager 内の clear

contains

public boolean contains(Event<?> evt)
クラス EventManager の記述:
マネージャにイベントevtが含まれているかを調べます.

定義:
クラス EventManager 内の contains
パラメータ:
evt - 検査するイベントを送信します。
戻り値:
evtがイベントリストに含まれている場合はtrueを返します。

remove

public void remove(Event<?> evt)
クラス EventManager の記述:
マネージャにイベントevtが含まれていれば削除します. このメソッドは実行したイベントを破棄するためにも使用されます。
evtが含まれていない場合は何も行いません。

定義:
クラス EventManager 内の remove
パラメータ:
evt - 削除するイベントを送信します。

removeAll

public void removeAll(Event<?>... evt)
クラス EventManager の記述:
マネージャにイベントevtが含まれていれば削除します. このメソッドは実行したイベントを破棄するためにも使用されます。
evtが含まれていない場合は何も行いません。

定義:
クラス EventManager 内の removeAll
パラメータ:
evt - 削除するイベントを送信します。

add

public final void add(Event<?> e)
このマネージャに新しいイベントを追加します. 追加するイベントの型は任意です。
このメソッドは、マネージャがロード済みでも使用できます。
ただしその場合はイベントがソートされません。
ロード前の場合は、ロード時にソートされます。
ソートをする場合はsortメソッドを使用してください。

パラメータ:
e - 追加するイベントを送信します。

addAll

public final void addAll(Event<?>... e)
このマネージャに新しいイベントを追加します. 追加するイベントの型は任意です。
このメソッドは、マネージャがロード済みでも使用できます。
ただしその場合はイベントがソートされません。
ロード前の場合は、ロード時にソートされます。
ソートをする場合はsortメソッドを使用してください。

パラメータ:
e - 追加するイベントを送信します。

getNext

public final <T extends java.io.Serializable> Event<T> getNext(java.lang.Class<T> type)
                                                    throws NotYetLoadedException,
                                                           NameNotFoundException
指定した型の、最初に見つかったイベントを返します. このメソッドでは発見されたイベントを実行/削除せずに返します。
通常はhasNextおよびexecuteを使用してください。

型パラメータ:
T - 検索するイベントの型を指定します。
パラメータ:
type - 検索するイベントの型を指定します。
戻り値:
指定した型のイベントで最初に見つかったものをそのまま返します。
例外:
NotYetLoadedException - マネージャがロードされていない場合に投げられます。
NameNotFoundException - 指定された型のイベントがこのマネージャに含まれていない場合に投げられます。

hasNext

public final <T> boolean hasNext(java.lang.Class<T> type)
                      throws NotYetLoadedException
指定した型のイベントが、実行可能な状態で待機中であるかを検査します. このメソッドでは、このマネージャに登録されているイベントのうち、指定した型の最初に見つかったイベントの isReachingがtrueを返すかどうかを検査します。

型パラメータ:
T - 検索するイベントの型を指定します。
パラメータ:
type - 検索するイベントの型を指定します。
戻り値:
指定した型の最初に発見されたイベントのisReachingの結果を返します。
例外:
NotYetLoadedException - マネージャがロードされていない場合に投げられます。

execute

public final <T extends java.io.Serializable> T execute(java.lang.Class<T> type)
                                             throws NotYetLoadedException
指定した型の、最初に見つかったイベントが実行可能であれば実行してイベントのアイテムを返します. このメソッドで返されるオブジェクトは、発見されたイベントのexecuteの結果です。
このメソッドは、実行できるイベントが存在しない場合にnullを返す点に注意してください。
通常は、以下のようにhasNextを組み合わせて使用します。

while (eventManager.hasNext(TextLabel.class)) {
labels.add(eventManager.execute(TextLabel.class));
}

型パラメータ:
T - 検索するイベントの型を指定します。
パラメータ:
type - 検索するイベントの型を指定します。
戻り値:
イベントを実行した場合は、そのイベントのexecuteの結果を返します。実行するイベントがない場合はnullを返します。
例外:
NotYetLoadedException - マネージャがロードされていない場合に投げられます。

getEvents

public java.util.List<Event<?>> getEvents()
このマネージャに含まれているすべてのイベントを取得します. このメソッドは参照を保持します。戻り値に対する操作はこのマネージャに反映されます。

戻り値:
マネージャに現在格納されているイベントのリストを返します。

toString

public java.lang.String toString()
オーバーライド:
クラス EventManager 内の toString