/////////////////////////////////////////////////////////////////
//Copyright (C) 2005 NTT CORPORATION.
//
//WBT個別ログ用の教材構造取得メソッド
//
//		変更履歴
//			2005.01.31  新規作成  OGA
//
//	機能
//
//Sessionに登録されているRDFNodeオブジェクトを取得し
//指定されたUIDの配下のAUのUIDリストを返却します。
//
/////////////////////////////////////////////////////////////////

/*
 * 作成日: 2005/02/19
 *
 * TODO この生成されたファイルのテンプレートを変更するには次へジャンプ:
 * ウィンドウ - 設定 - Java - コード・スタイル - コード・テンプレート
 */

package jp.co.ntt.lms.xmf.lo.wbt.IndividualLog.function;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import java.util.*;
import jp.co.ntt.lms.Common.RDF.*;

/**
 * @author Administrator
 *
 * TODO この生成された型コメントのテンプレートを変更するには次へジャンプ:
 * ウィンドウ - 設定 - Java - コード・スタイル - コード・テンプレート
 */
public class GetCsvAuidList {
	/**
	 * 
	 */
	public GetCsvAuidList() {
		super();
		// TODO 自動生成されたコンストラクター・スタブ
	}
		/**
		 * Sessionに登録されているRDFNodeオブジェクトを取得し
		 * 指定されたUIDの配下のAUのUIDリストを返却します。
		 * @param strUID UID
		 * @param strLOID LOID
		 * @param session リクエストのあったセッションオブジェクト
		 * @return Vector (取得できない場合は空のVectorを返します。)
		 */

		public Vector getCsvAuidList( String strUID, String strLOID, HttpSession session ) {
			// パラメータチェック
			if( strUID == null || session == null ) {
				return new Vector();
			}

			RDFNode objNode = null;
			try {
				objNode = (RDFNode)session.getAttribute( strLOID );
			}
			catch( ClassCastException ce ) {
				return new Vector();
			}

			if( objNode == null ) {
				return new Vector();
			}
			Vector vecResult = new Vector();
			objNode = objNode.searchNode( strUID );
			searchAu( objNode, vecResult );
			if ( vecResult.size() == 0 ) {
				vecResult.add( strUID );
			}
			return vecResult;

		}
		public void  searchAu( RDFNode objNode, Vector vecAuIDList ) {
			
			RDFNodeList objNodeList = objNode.getChildNodes();
			RDFNode objNodeTemp = null;
			
			for( int i = 0; i < objNodeList.getLength(); i++ ) {
				objNodeTemp = objNodeList.getNode(i);
				if( objNodeTemp.getNodeType() == RDFNode.AU_NODE ) {
					vecAuIDList.add( objNodeTemp.getID() );
				}
				else {
					searchAu( objNodeTemp, vecAuIDList );
				}
			}
			return;
		}
}
