/*
 * 作成日: 2005/03/15
 *
 * TODO この生成されたファイルのテンプレートを変更するには次へジャンプ:
 * ウィンドウ - 設定 - Java - コード・スタイル - コード・テンプレート
 */
package jp.co.ntt.lms.xmf.lo.method.list;

import java.util.ArrayList;

import jp.co.ntt.lms.xmo.Lo.LoClient;
import jp.co.ntt.lms.xmo.LoRelation.LoRelationClient;

/**
 * @author Administrator
 *
 * 子供のIDを渡してパスを、タイトルとIDのセットで作成していく
 */
public class MethodPathList {

	//パスのリスト
	public ArrayList methodPathList = new ArrayList();
	// 直上の親のID
	public String directParentID = null;
	
	//パスのワークリスト
	private ArrayList workPathList = new ArrayList();
	
	/**
	 * @param strMethodID
	 */
	public MethodPathList(String strMethodID) {
		setPathList(strMethodID);
	}
	
	void setPathList(String strMethodID) {
		try {
			// ワーク用
			String childID;
			String saveChildID = new String();
			String childTitle;
	
			// LoRelation クライアントオブジェクト
			LoRelationClient objLoRelationXMO = new LoRelationClient();
			
			int initFlag = 0;
			childID = strMethodID;
			while(childID != null){
				//念のため、同じ場合ループを終了
				if(childID.equals(saveChildID)){
					break;
				}
				else {
					saveChildID = childID;
				}
				
				// childID のタイトルを取る
				// Lo クライアントオブジェクト
				LoClient objLoXMO = new LoClient();
				// 検索条件の設定
				objLoXMO.setWhereLoID(childID);
				if (objLoXMO.select())
				{
					// タイトルを調べる
					if(objLoXMO.next()){
						childTitle = objLoXMO.getLoTytle();
						
						// 表示用データの構築
						MethodTitleID pathItem = new MethodTitleID(childTitle,childID);
						workPathList.add(pathItem);
					}
					else{
						//該当レコードが存在しないのでエラーである
						break;
					}
				}
				else{
					//Queryでエラーである
					break;
				}
				
				objLoRelationXMO.setChildID(childID);
				if (objLoRelationXMO.select())
				{
					// 親のIDを調べる
					if(objLoRelationXMO.next()) {
						childID = objLoRelationXMO.getParentID();
						//最初の親が直上の親
						if(initFlag == 0){
							//現在の位置がルートのときは表示しない
							if(!childID.equals("/")){
								directParentID = childID; 
							}
							initFlag = 1;
						}
					}
					//現在位置がルートなのでループを終わる
					if(childID.equals("/")){
						break;
					}
				}
				else{
					//Queryでエラーである
					break;
				}
			}
			
			// List の再編成
			for(int i = workPathList.size()-1; i >=0 ; i-- ){
				methodPathList.add(workPathList.get(i));
			}
	
		} catch (Exception e) {
			// TODO 自動生成された catch ブロック
			e.printStackTrace();
		}
	}
	/**
	 * @return directParentID を戻します。
	 */
	public String getDirectParentID() {
		return directParentID;
	}
	/**
	 * @return methodPathList を戻します。
	 */
	public ArrayList getMethodPathList() {
		return methodPathList;
	}
}
