Coverage report

  %line %branch
tsukuba_bunko.peko.session.Session
0% 
0% 

 1  
 /*
 2  
  * All Rights Reserved.
 3  
  * Copyright (C) 1999-2005 Tsukuba Bunko.
 4  
  *
 5  
  * Licensed under the BSD License ("the License"); you may not use
 6  
  * this file except in compliance with the License.
 7  
  * You may obtain a copy of the License at
 8  
  *
 9  
  *       http://www.tsukuba-bunko.org/licenses/LICENSE.txt
 10  
  *
 11  
  * Unless required by applicable law or agreed to in writing, software
 12  
  * distributed under the License is distributed on an "AS IS" BASIS,
 13  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 14  
  * See the License for the specific language governing permissions and
 15  
  * limitations under the License.
 16  
  *
 17  
  * $Id: Session.java,v 1.2 2005/07/23 19:06:28 ppoi Exp $
 18  
  */
 19  
 package tsukuba_bunko.peko.session;
 20  
 
 21  
 import	java.io.Serializable;
 22  
 
 23  
 import	java.util.Date;
 24  
 import	java.util.HashMap;
 25  
 import	java.util.HashSet;
 26  
 
 27  
 import	tsukuba_bunko.peko.Logger;
 28  
 
 29  
 import	tsukuba_bunko.peko.scenario.SceneContext;
 30  
 
 31  
 
 32  
 /**
 33  
  * 現在のセッションの情報を格納します。
 34  
  * @author	$Author: ppoi $
 35  
  * @version	$Revision: 1.2 $
 36  
  */
 37  
 public class Session	implements Serializable	{
 38  
 
 39  
 	/**
 40  
 	 * serial version UID
 41  
 	 */
 42  
 	private static final long	serialVersionUID	= 2010059632489065304L;
 43  
 
 44  
 	/**
 45  
 	 * セッションフラグ
 46  
 	 */
 47  0
 	protected HashSet	_sessionFlags = null;
 48  
 
 49  
 	/**
 50  
 	 * システムフラグ
 51  
 	 */
 52  0
 	protected HashSet	_systemFlags = null;
 53  
 
 54  
 	/**
 55  
 	 * システムフラグのロードタイムスタンプ
 56  
 	 */
 57  0
 	protected Date	_timestamp = null;
 58  
 
 59  
 
 60  
 	/**
 61  
 	 * 現在進行中のシーンのコンテクスト
 62  
 	 */
 63  0
 	protected SceneContext	_sceneContext = null;
 64  
 
 65  
 	/**
 66  
 	 * その他の属性
 67  
 	 */
 68  0
 	protected HashMap	_attributes = new HashMap( 17 );
 69  
 
 70  
 
 71  
 	/**
 72  
 	 * 現在シーンを処理しているスレッド
 73  
 	 */
 74  0
 	protected transient Thread	_activeThread = null;
 75  
 
 76  
 
 77  
 	/**
 78  
 	 * <code>Session</code> のインスタンスを生成します。
 79  
 	 */
 80  
 	public Session()
 81  
 	{
 82  0
 		super();
 83  0
 	}
 84  
 
 85  
 
 86  
 	/**
 87  
 	 * 現在進行中のシーンのコンテクストを設定します。
 88  
 	 * @param	context	シーンコンテクスト
 89  
 	 * @param	processThread	シーンを処理するスレッド
 90  
 	 */
 91  
 	public synchronized void setSceneContext( SceneContext context, Thread processThread )
 92  
 	{
 93  0
 		_sceneContext = context;
 94  0
 		_activeThread = processThread;
 95  0
 	}
 96  
 
 97  
 	/**
 98  
 	 * 現在のスレッドで進行中のシーンのコンテクストを設定します。
 99  
 	 * @param	context	シーンコンテクスト
 100  
 	 */
 101  
 	public void setSceneContext( SceneContext context )
 102  
 	{
 103  0
 		setSceneContext( context, Thread.currentThread() );
 104  0
 	}
 105  
 
 106  
 	/**
 107  
 	 * セッションで現在進行中のシーンのコンテクストを取得します。
 108  
 	 * @return	シーン名
 109  
 	 */
 110  
 	public SceneContext getSceneContext()
 111  
 	{
 112  0
 		return _sceneContext;
 113  
 	}
 114  
 
 115  
 
 116  
 	/**
 117  
 	 * セッションフラグを立てます。
 118  
 	 * @param	flagID	立てるフラグのフラグ ID
 119  
 	 */
 120  
 	public void declareSessionFlag( String flagID )
 121  
 	{
 122  0
 		Logger.debug( "[session] declare session flag: " + flagID );
 123  0
 		if( isActiveThread() )	{
 124  0
 			_sessionFlags.add( flagID );
 125  0
 		}
 126  
 		else	{
 127  0
 			Logger.debug( "[session] canceled declaring session flag: " + flagID );
 128  
 		}
 129  0
 	}
 130  
 
 131  
 	/**
 132  
 	 * セッションフラグを降ろします。
 133  
 	 * @param	flagID	降ろすフラグのフラグ ID
 134  
 	 */
 135  
 	public void undeclareSessionFlag( String flagID )
 136  
 	{
 137  0
 		Logger.debug( "[session] undeclare session flag: " + flagID );
 138  0
 		if( isActiveThread() )	{
 139  0
 			_sessionFlags.remove( flagID );
 140  0
 		}
 141  
 		else	{
 142  0
 			Logger.debug( "[session] canceled undeclaring session flag: " + flagID );
 143  
 		}
 144  0
 	}
 145  
 
 146  
 	/**
 147  
 	 * 指定されたフラグがセッションフラグとして立てられているかどうかを判定します。
 148  
 	 * @param	flagID	判定するフラグ ID
 149  
 	 * @return	フラグが立っている場合 <code>true</code>、それ以外 <code>false</code>
 150  
 	 */
 151  
 	public boolean isDeclaredSessionFlag( String flagID )
 152  
 	{
 153  0
 		return _sessionFlags.contains( flagID );
 154  
 	}
 155  
 
 156  
 	/**
 157  
 	 * システムフラグを立てます。
 158  
 	 * @param	flagID	立てるフラグのフラグ ID
 159  
 	 */
 160  
 	public void declareSystemFlag( String flagID )
 161  
 	{
 162  0
 		Logger.debug( "[session] declare system flag: " + flagID );
 163  0
 		if( isActiveThread() )	{
 164  0
 			_systemFlags.add( flagID );
 165  0
 		}
 166  
 		else	{
 167  0
 			Logger.debug( "[session] canceled declaring system flag: " + flagID );
 168  
 		}
 169  0
 	}
 170  
 
 171  
 	/**
 172  
 	 * システムフラグを降ろします。
 173  
 	 * @param	flagID	降ろすフラグのフラグ ID
 174  
 	 */
 175  
 	public void undeclareSystemFlag( String flagID )
 176  
 	{
 177  0
 		Logger.debug( "[session] undeclare system flag: " + flagID );
 178  0
 		if( isActiveThread() )	{
 179  0
 			_systemFlags.remove( flagID );
 180  0
 		}
 181  
 		else	{
 182  0
 			Logger.debug( "[session] canceled undeclaring system flag: " + flagID );
 183  
 		}
 184  0
 	}
 185  
 
 186  
 	/**
 187  
 	 * 指定されたフラグがシステムフラグとして立てられているかどうかを判定します。
 188  
 	 * @param	flagID	判定するフラグ ID
 189  
 	 * @return	フラグが立っている場合 <code>true</code>、それ以外 <code>false</code>
 190  
 	 */
 191  
 	public boolean isDeclaredSystemFlag( String flagID )
 192  
 	{
 193  0
 		return _systemFlags.contains( flagID );
 194  
 	}
 195  
 
 196  
 
 197  
 	/**
 198  
 	 * セッションフラグ集合を設定します。
 199  
 	 * @param	flagSet	フラグ集合
 200  
 	 */
 201  
 	public void setSessionFlagSet( HashSet flagSet )
 202  
 	{
 203  0
 		_sessionFlags = flagSet;
 204  0
 	}
 205  
 
 206  
 	/**
 207  
 	 * セッションフラグ集合を取得します。
 208  
 	 * @return	フラグ集合
 209  
 	 */
 210  
 	public HashSet getSessionFlagSet()
 211  
 	{
 212  0
 		return _sessionFlags;
 213  
 	}
 214  
 
 215  
 	/**
 216  
 	 * システムフラグ集合を設定した時刻を取得します。
 217  
 	 * @return	システムフラグ集合を設定した時刻
 218  
 	 */
 219  
 	public Date getTimestamp()
 220  
 	{
 221  0
 		return _timestamp;
 222  
 	}
 223  
 
 224  
 	/**
 225  
 	 * システムフラグ集合を設定します。<code>timestamp</code> が、現在のコンテクストに設定されている時刻より古い場合は設定は反映されません。
 226  
 	 * @param	flagSet	フラグ集合
 227  
 	 * @param	timestamp	フラグ集合のタイムスタンプ
 228  
 	 */
 229  
 	public void setSystemFlagSet( HashSet flagSet, Date timestamp )
 230  
 	{
 231  0
 		if( (_timestamp == null) || _timestamp.before(timestamp) )	{
 232  0
 			_systemFlags = flagSet;
 233  0
 			_timestamp = timestamp;
 234  
 		}
 235  0
 	}
 236  
 
 237  
 	/**
 238  
 	 * システムフラグ集合を取得します。
 239  
 	 * @return	フラグ集合
 240  
 	 */
 241  
 	public HashSet getSystemFlagSet()
 242  
 	{
 243  0
 		return _systemFlags;
 244  
 	}
 245  
 
 246  
 
 247  
 	/**
 248  
 	 * セッションに属性を設定します。
 249  
 	 * @param	name	属性名
 250  
 	 * @param	value	属性値
 251  
 	 */
 252  
 	public void setSessionAttribute( String name, Serializable value )
 253  
 	{
 254  0
 		_attributes.put( name, value );
 255  0
 	}
 256  
 
 257  
 	/**
 258  
 	 * セッションの属性を取得します。
 259  
 	 * @param	name	属性名
 260  
 	 * @return	属性値
 261  
 	 */
 262  
 	public Object getSessionAttribute( String name )
 263  
 	{
 264  0
 		return _attributes.get( name );
 265  
 	}
 266  
 
 267  
 
 268  
 	/**
 269  
 	 * 現在のスレッドがシーン処理中のスレッドかどうかを判定します。
 270  
 	 * @return	現在のスレッドがシーン処理中のスレッドの場合 <code>true</code>、それ以外の場合 <code>false</code>
 271  
 	 */
 272  
 	protected boolean isActiveThread()
 273  
 	{
 274  0
 		return (_activeThread == Thread.currentThread());
 275  
 	}
 276  
 }

This report is generated by jcoverage, Maven and Maven JCoverage Plugin.