/*
このファイルの中身は、NTT オープンソースライセンス　バージョン 1.0（「本
契約」という）の適用を受けます。
本契約を遵守しない限り、このファイルを使用してはなりません。
本契約のコピーは、次のＵＲＬから入手できます。
【配布サイトのURL】 http://www.oss.ecl.ntt.co.jp/lms/

本契約に基づき頒布されるソフトウェアは、現状のまま、明示又は黙示のあらゆ
る種類の保証なしで、頒布されます。本契約に基づく権利及び制限を律する特定
の文言については、本契約を参照してください。

「オリジナルコード」は、 NTT Cyber Space Laboratories Code です。 
「オリジナルコード」の「初期開発者」は、日本電信電話株式会社です。  
日本電信電話株式会社により創作された部分は、Copyright (C) 2004 
日本電信電話株式会社 です。
全ての権利が留保されます。 
「コントリビュータ」：_____________________________________ 


The contents of this file are subject to the NTT Opensource License
Version 1.0 (the License); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
【配布サイトのURL】 http://www.oss.ecl.ntt.co.jp/lms/

Software distributed under the License is distributed on an AS IS
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
License for the specific language governing rights and limitations
under the License.

The Original Code is NTT Cyber Space Laboratories Code .

The Initial Developer of the Original Code is NIPPON TELEGRAPH AND 
TELEPHONE CORPORATION.
Portions created by the NIPPON TELEGRAPH AND TELEPHONE CORPORATION 
are Copyright (C) 2004 NIPPON TELEGRAPH AND TELEPHONE CORPORATION. 
All Rights Reserved.

Contributor(s) ______________________________________.
*/

//
//	進捗状況一覧グループデータストアクラス
//			変更履歴
//				2004/01/08 新規作成    M.Asada
//
package jp.co.ntt.lms.lo.WBT.IndividualLog;

// Java API
import java.text.DecimalFormat;
import java.util.Vector;


import jp.co.ntt.lms.Common.RDF.RDFNode;

/**
 * 進捗状況一覧グループのデータストア<BR>
 * 
 * @author M.Asada
 * @version 0.0.0.1 2004/01/08
 */
public class IndividualLogGroupProgressStatusStoreData extends IndividualLogStoreData {

	/** LOID */
	private String mstrLOID;
	
	/** UserID */
	private String mstrUserID;
	
	/** LoType */
	private String mstrLoType;
	
	/** 教材構造 */
	private RDFNode mobjNode;

	/**　SQL取得データ格納領域　*/
	private String mstrWrkData[ ][ ];

	/** SQL取得データ格納領域(ユーザー情報取得）*/
	private String mstrWrkDataUser[ ][ ];

	/** 進捗状況一覧グループデータ（全件+Userデータ）*/
	private Vector mvecStoreDataUser;
	
	/** 進捗状況一覧グループデータ（全件）*/
	private Vector mvecStoreData;
	
	/**
	 * コンストラクタ
	 * @param LOID
	 * @param UserID
	 * @param LoType
	 * @param objNode
	 **/
	public IndividualLogGroupProgressStatusStoreData(String strLOID,String strUserID,String strLoType,RDFNode objNode ) {
		this.mstrLOID = strLOID;
		this.mstrUserID = strUserID;
		this.mstrLoType = strLoType;
		this.mobjNode = objNode;
		//ストアデータ生成
		mvecStoreData = new Vector();
		mvecStoreDataUser = new Vector();

	}

	/**
	 * 進捗状況一覧グループデータオブジェクト作成
	 * @return 正常、異常
	 **/
	public boolean makeStoreData() {
	
		try{
			//SQLを発行してテーブルデータを取得(RecordSet)
			makeResultSql();
			
			//データが存在した場合
			if(mstrWrkDataUser != null){
				//RecordSet→データObj
				setStoreData();

				//学習者全てのUserIdでストアデータを生成
				setStoreDataUserAll();

				//IndividualLogStoreDataに作成した一覧表Objをセット
				setStoreDataObj(mvecStoreDataUser);

			}
			return true;

		}catch(Exception e){
			return false;
		}
	}

	/**
	 * SQLを発行し、DBからデータ取得
	 **/
	private void makeResultSql() throws Exception{
	
		Vector vecParam = new Vector();		//条件格納領域

		// リアルLOIDを取得。
		String strRealLoID = new IndividualLogStoreData().getRealLoID(mstrLOID);

		//SQL作成
		//条件セット
		vecParam.addElement(strRealLoID);
		vecParam.addElement(mstrUserID);

		//SQL発行
		mstrWrkData = execute( mstrLoType, SQLID_PROGRESS_GROUP,  vecParam);

		Vector vecParamUser = new Vector();		//条件格納領域
		vecParamUser.addElement(mstrUserID);
		//SQL発行
		mstrWrkDataUser = execute( mstrLoType, SQLID_PROGRESS_GET_USER_GROUP,  vecParamUser);
	}

	/**
	 * 学習者全てのUserIdでストアデータを生成
	 */
	private void setStoreDataUserAll(){
		int intRowCnt;									//件数（行）
		String strUserId = new String ();				//UserID保持
		int intElementNo;								//要素番号

		//件数（行）
		intRowCnt = mstrWrkDataUser.length;
		//学習者順にループ
		for(int i = 0; i < intRowCnt; i++){
			//UserId取得
			strUserId = mstrWrkDataUser[ i ][ G_PROGRESS_USER_REC_USERID_COL ];
			//UserIdマッチング
			intElementNo = serchUserId(strUserId);
			if( intElementNo >= 0){
				//マッチしたら編集済みのデータを格納
				mvecStoreDataUser.addElement((Vector)mvecStoreData.get(intElementNo));
			}else{
				//マッチしなければ空データを格納
				Vector vecEmptyData = new Vector();
				// 学習者名
				vecEmptyData.addElement(mstrWrkDataUser[ i ][ G_PROGRESS_USER_REC_USER_NAME_COL ]);
				// 学習開始日
				vecEmptyData.addElement("");
				// 最終アクセス日
				vecEmptyData.addElement("");
				// アクセス回数
				vecEmptyData.addElement("");
				// 累積学習時間
				vecEmptyData.addElement("");
				// 最新得点
				vecEmptyData.addElement("");
				// 最高得点
				vecEmptyData.addElement("");
				// 得点の満点
				vecEmptyData.addElement("");
				// 完了AU数
				vecEmptyData.addElement("");
				// 合格AU数
				vecEmptyData.addElement("");
				// AU数
				vecEmptyData.addElement("");
				// USER_ID
				vecEmptyData.addElement(strUserId);

				//ストアデータに格納
				mvecStoreDataUser.addElement(vecEmptyData);
			}
		}
	}

	/**
	 * ストアデータからUserIdを検索
	 * @param String strUserId 指定USERID
	 * @return int 発見要素番号/-1未発見
	 */
	private int serchUserId(String strUserId){
		int intRowCnt;									//件数（行）
		String strTmp = new String();					//テンポラリ
		Vector vecData = new Vector();					//ユーザデータ

		intRowCnt = mvecStoreData.size();
		for(int i = 0 ; i < intRowCnt ; i++){
			//編集後の１ユーザデータ取得
			vecData = (Vector)mvecStoreData.get(i);
			//UserId取得
			strTmp = (String)vecData.lastElement();
			if(strTmp.equals(strUserId)){
				return i;
			}
		}
		return -1;
	}




	/**
	 * DBから取得したデータを編集し、表示する学習者順にデータObjに格納
	 */
	private void setStoreData(){
		Vector vecUserList = new Vector();				//学習者単位のリスト
		int intRowCnt;									//件数（行）
		String strUserId = new String ();				//UserID保持
		String strUserIdOld = new String();				//前回UserID保持
		String strUID = new String();					//DBから取得したUID
		String strUIDOld = new String();				//比較UID

		//教材構造一覧作成
		createRDFStoreData(mobjNode);

		//件数（行）
		intRowCnt = mstrWrkData.length;

		//学習者順にループ
		for(int i = 0; i < intRowCnt; i++){
			//UserId取得
			strUserId = mstrWrkData[ i ][ G_PROGRESS_REC_USERID_COL ];

			//初回比較UserIdを格納
			if(i == 0){
				strUserIdOld = strUserId;
			}

			//学習者比較
			if(!strUserId.equals(strUserIdOld)){

				//学習者分のAU単位集計
				Vector vecAuData = setAuStore(vecUserList);

				vecUserList.clear();
				//AU単位を学習者単位に集計
				Vector vecUserData = setUserStore(vecAuData);
				//ストアデータに格納
				mvecStoreData.addElement(vecUserData);
			}
			strUserIdOld = strUserId;

			//UID取得
			strUID = mstrWrkData[ i ][ G_PROGRESS_REC_UID_COL ];

			//UID比較-教材構造に含まれていなければ対象外
			if(!strUID.equals(strUIDOld)){
				if(!serchUID(strUID)){
					continue;
				}
			}
			strUIDOld = strUID;

			//学習者の行を確保
			vecUserList.addElement((Vector)storeUserData(i));

		}
		//学習者単位のストアが残っていれば集計
		if(vecUserList.size() > 0){
			//学習者分のAU単位集計
			Vector vecAuData = setAuStore(vecUserList);
			vecUserList.clear();
			//AU単位を学習者単位に集計
			Vector vecUserData = setUserStore(vecAuData);
			//ストアデータに格納
			mvecStoreData.addElement(vecUserData);
		}
	}

	/**
	 * 指定行のデータを確保
	 * @param int intRow 指定Row
	 * @return Vector 学習者情報
	 */
	private Vector storeUserData(int intRow){
		Vector vecRet = new Vector();
		for(int i = 0 ; i < mstrWrkData[ intRow ].length ; i++){
			vecRet.addElement(mstrWrkData[ intRow ][ i ]);
		}
		return vecRet;
	}

	/**
	 * User単位集計<BR>
	 * 同一UserID,AU毎を１vectorとして生成する<BR>
	 * @param Vector vecUserList ユーザ情報
	 * @return Vector User単位の集計結果
	 */
	private Vector setUserStore(Vector vecUserList){
		Vector vecRet = new Vector();					//User単位の集計結果
		int intRowCnt;									//件数（行）
		String strTmp;									//テンポラリ
		String strUserName = new String();				//ストアする学習者名
		String strStoreStudyStartDateNew = new String();//ストアする学習開始日
		String strStoreStudyStartDateOld = new String();//ストアする最終アクセス日
		String strUserID = new String();				//ストアするUserID
		int intStoreUIDCount = 0;						//ストアするアクセス回数
		String strStoreTotalLearnTime = new String();	//ストアする累積学習時間
		String strStoreMaxScore = new String();			//ストアする得点（最新）
		String strStoreRawScore = new String();			//ストアする得点（最高）
		int intStorePerfectScore = 0;					//ストアする得点満点
		int intStoreComplete = 0;						//ストアする完了AU
		int intStorePass = 0;							//ストアする合格AU
		String strStoreAUCount = new String();			//ストアするAU数

		intRowCnt = vecUserList.size();

		//AU毎にループ
		for(int i = 0 ; i < intRowCnt ; i++){
			Vector vecUser = (Vector)vecUserList.get(i);
			if(i == 0){
				// 学習者名
				strUserName = (String)vecUser.get(G_PROGRESS_LIST_USERNAME);
				//学習開始日
				strStoreStudyStartDateNew = (String)vecUser.get(G_PROGRESS_LIST_STUDYSTIME);
				//最終アクセス日
				strStoreStudyStartDateOld = (String)vecUser.get(G_PROGRESS_LIST_LASTACCESS);
				// 得点の満点
				//strStorePerfectScore = new Integer(intRowCnt*100).toString();
				// AU数
				strStoreAUCount = new Integer(intRowCnt).toString();
				// USER_ID
				strUserID = (String)vecUser.get(G_PROGRESS_LIST_USERID);
			}
			// 学習開始日
			strTmp = (String)vecUser.get(G_PROGRESS_LIST_STUDYSTIME);
			if(!strStoreStudyStartDateNew.equals("") && !strTmp.equals("")){
				//strTmpがNewより以前の日付か
				int intRet = compareDateTime(strTmp,strStoreStudyStartDateNew);
				if( intRet == DEF_PAST){
					strStoreStudyStartDateNew = strTmp;
				}
			}
			// 最終アクセス日
			strTmp = (String)vecUser.get(G_PROGRESS_LIST_LASTACCESS);
			if(!strStoreStudyStartDateOld.equals("") && !strTmp.equals("")){
				//strTmpがOldより以前の日付か
				int intRet = compareDateTime(strTmp,strStoreStudyStartDateOld);
				if( intRet == DEF_FUTURE){
					strStoreStudyStartDateOld = strTmp;
				}
			}
			// アクセス回数
			strTmp = (String)vecUser.get(G_PROGRESS_LIST_ACCESSCNT);
			if(!strTmp.equals("")){
				intStoreUIDCount = intStoreUIDCount + new Integer(strTmp).intValue();
			}
			// 累積学習時間
			strTmp = (String)vecUser.get(G_PROGRESS_LIST_TOTALSTUDYTIME);
			if(!strTmp.equals("")){
				double dblLearnTime;
				double dblTime;
				if(!strStoreTotalLearnTime.equals("")){
					dblLearnTime = Double.parseDouble( strStoreTotalLearnTime );
				}else{
					dblLearnTime = (double)0.0;
				}
				dblTime = Double.parseDouble( strTmp );
				dblLearnTime = dblLearnTime + dblTime;
				strStoreTotalLearnTime = new Double(dblLearnTime).toString();
			}

			// 最新得点
			strTmp = (String)vecUser.get(G_PROGRESS_LIST_LASTSCORE);
			if(!strTmp.equals("")){
				//得点のカウント
				intStorePerfectScore++;
				float fNew;
				float fOld;
				if(!strStoreMaxScore.equals("")){
					float fResult = new Float(strStoreMaxScore).floatValue() + new Float(strTmp).floatValue();
					strStoreMaxScore = new Float(fResult).toString();
				}else{
					strStoreMaxScore = strTmp;
				}
			}
			// 最高得点
			strTmp = (String)vecUser.get(G_PROGRESS_LIST_MAXSCORE);
			if(!strTmp.equals("")){
				float fNew;
				float fOld;
				if(!strStoreRawScore.equals("")){
					float fResult = new Float(strStoreRawScore).floatValue() + new Float(strTmp).floatValue();
					strStoreRawScore = new Float(fResult).toString();
				}else{
					strStoreRawScore = strTmp;
				}
			}

			// 完了AU数
			strTmp = (String)vecUser.get(G_PROGRESS_LIST_COMPLETEAU);
			if(strTmp.equals(DEF_AU_COMPLETE)){
				intStoreComplete++;
			}
			
			// 合格AU数
			strTmp = (String)vecUser.get(G_PROGRESS_LIST_PASSAU);
			if(strTmp.equals(DEF_AU_PASS)){
				intStorePass++;
			}
		}
		// 学習者名
		vecRet.addElement(strUserName);
		// 学習開始日
		vecRet.addElement(strStoreStudyStartDateNew);
		// 最終アクセス日
		vecRet.addElement(strStoreStudyStartDateOld);
		// アクセス回数
		vecRet.addElement(new Integer(intStoreUIDCount).toString());
		// 累積学習時間
		if(!strStoreTotalLearnTime.equals("")){
			double dblTiime = Double.parseDouble( strStoreTotalLearnTime );
			DecimalFormat objFormat = new DecimalFormat( DEF_TOTAL_LEARN_TIME_FORMAT );
			try{
				strStoreTotalLearnTime = objFormat.format(dblTiime);
			}catch(Exception e ){
				strStoreTotalLearnTime = "";
			}
		}
		vecRet.addElement(strStoreTotalLearnTime);
		// 最新得点
		vecRet.addElement(strStoreMaxScore);
		// 最高得点
		vecRet.addElement(strStoreRawScore);
		// 得点の満点
		//vecRet.addElement(strStorePerfectScore);
		vecRet.addElement(new Integer(intStorePerfectScore*100).toString());
		
		// 完了AU数
		vecRet.addElement(new Integer(intStoreComplete).toString());
		// 合格AU数
		vecRet.addElement(new Integer(intStorePass).toString());
		// AU数
		vecRet.addElement(strStoreAUCount);
		// USER_ID
		vecRet.addElement(strUserID);

		return vecRet;
	}

	/**
	 * AU単位集計
	 * 同一UserID,AU毎に集計してを１ユーザ１ＡＵに集計する<BR>
	 * @param Vector vecUserList ユーザ情報
	 * @return Vector AU単位の集計結果
	 */
	private Vector setAuStore(Vector vecUserList){
		Vector vecRet = new Vector();					//AU単位の集計結果
		String strUID = new String();					//DBから取得したUID
		String strUIDOld = new String();				//前回UID
		Vector vecUser = new Vector();					//1ユーザ情報
		String strTmp;									//テンポラリ
		int intRowCnt;									//件数（行）
		String strStoreUID = new String();				//ストアするUID
		String strUserName = new String();				//ストアする学習者名
		String strUserID = new String();				//ストアするUserID
		String strStoreStudyStartDateNew = new String();//ストアする学習開始日
		String strStoreStudyStartDateOld = new String();//ストアする最終アクセス日
		int intStoreUIDCount;							//ストアするアクセス回数
		String strStoreTotalLearnTime;					//ストアする累積学習時間
		String strStoreMaxScore = new String();			//ストアする得点（最新）
		String strStoreRawScore = new String();			//ストアする得点（最高）
		String strStoreComplete = new String();			//ストアする完了AU
		String strStorePass = new String();				//ストアする合格AU
		String strStoreAURow = new String();			//ストアするAU_ROW
		String strStoreSectionRow = new String();		//ストアするSECTION_ROW

		//AU単位のデータ保持領域初期化
		strStoreUID = "";
		strUserName = "";
		strStoreStudyStartDateNew = "";
		strStoreStudyStartDateOld = "";
		intStoreUIDCount = 0;
		strStoreTotalLearnTime = "";
		strStoreMaxScore = "";
		strStoreRawScore = "";
		strStoreComplete = "0";
		strStorePass = "0";
		strStoreAURow = "";

		//同一UserIDの学習者情報でループ
		intRowCnt = vecUserList.size();
		for( int i = 0 ; i < intRowCnt ; i++ ){
			vecUser = (Vector)vecUserList.get(i);

			//1件目の情報時
			if(i == 0){
				//UID取得
				strUIDOld = (String)vecUser.get(G_PROGRESS_REC_UID_COL);
				//学習者名確保
				strUserName = (String)vecUser.get(G_PROGRESS_REC_USER_NAME_COL);
				//USERID確保
				strUserID = (String)vecUser.get(G_PROGRESS_REC_USERID_COL);
			}

			//同一UID判定
			strUID = (String)vecUser.get(G_PROGRESS_REC_UID_COL);

			//AUIDが一致から不一致に変わったらデータストアを１行格納
			if(!strUIDOld.equals(strUID)){

				//AU単位集計
				Vector vecAuStoreData = setAuStoreData(strStoreUID,
														strUserName,
														strUserID,
														strStoreStudyStartDateNew,
														strStoreStudyStartDateOld,
														intStoreUIDCount,
														strStoreTotalLearnTime,
														strStoreMaxScore,
														strStoreRawScore,
														strStoreComplete,
														strStorePass,
														strStoreAURow,
														strStoreSectionRow);

				//データストア行追加
				vecRet.addElement( vecAuStoreData );

				strUIDOld = strUID;

				//AU単位のデータ保持領域初期化
				strStoreUID = "";
				strStoreStudyStartDateNew = "";
				strStoreStudyStartDateOld = "";
				intStoreUIDCount = 0;
				strStoreTotalLearnTime = "";
				strStoreMaxScore = "";
				strStoreRawScore = "";
				strStoreComplete = "0";
				strStorePass = "0";
				strStoreAURow = "";

			}

			//AUIDが一致したら
			if(strUIDOld.equals(strUID)){

				//一致UID数
				intStoreUIDCount++;
				//UIDが初めて一致
				if(intStoreUIDCount == 1){
					//UID保持
					strStoreUID = strUID;
					//学習開始日を保持
					strStoreStudyStartDateNew = (String)vecUser.get(G_PROGRESS_STUDY_DATE_COL);
					//得点（最高）を保持
					strStoreRawScore = (String)vecUser.get(G_PROGRESS_REC_MAXSCORE_COL);
					//AU Rawを保持
					strStoreAURow = new Integer(i).toString();
				}
				//得点（最高）を保持
				strTmp = (String)vecUser.get(G_PROGRESS_REC_MAXSCORE_COL);
				if(!strTmp.equals("")){
					if(strStoreRawScore.equals("")){
						strStoreRawScore = (String)vecUser.get(G_PROGRESS_REC_MAXSCORE_COL);
					}else{
						if(new Float(strStoreRawScore).floatValue() < 
							new Float((String)vecUser.get(G_PROGRESS_REC_MAXSCORE_COL)).floatValue()){
							strStoreRawScore = (String)vecUser.get(G_PROGRESS_REC_MAXSCORE_COL);
						}
					}
				}
				//累積学習時間
				strTmp = (String)vecUser.get(G_PROGRESS_REC_TIME_COL);
				if(!strTmp.equals("")){
					strStoreTotalLearnTime = sumTotal(strStoreTotalLearnTime,(String)vecUser.get(G_PROGRESS_REC_TIME_COL));
				}
				//最終アクセスを保持
				strStoreStudyStartDateOld = (String)vecUser.get(G_PROGRESS_STUDY_DATE_COL);
				//得点（最新）
				strTmp = (String)vecUser.get(G_PROGRESS_REC_RAWSCORE_COL);
				if(!strTmp.equals("")){
					strStoreMaxScore = strTmp;
				}
				//完了を保持
				if(judgeCompletedResult((String)vecUser.get(G_PROGRESS_LESSON_STATUS_COL))){
					strStoreComplete = DEF_AU_COMPLETE;
				}
				//合格を保持
				if(judgePassResult((String)vecUser.get(G_PROGRESS_LESSON_STATUS_COL))){
					strStorePass = DEF_AU_PASS;
				}
			}

			//前回UID保持
			strUIDOld = strUID;
		}

		if(intStoreUIDCount>0){
				//AU単位集計
				Vector vecAuStoreData = setAuStoreData(strStoreUID,
														strUserName,
														strUserID,
														strStoreStudyStartDateNew,
														strStoreStudyStartDateOld,
														intStoreUIDCount,
														strStoreTotalLearnTime,
														strStoreMaxScore,
														strStoreRawScore,
														strStoreComplete,
														strStorePass,
														strStoreAURow,
														strStoreSectionRow);
				//データストア行追加
				vecRet.addElement( vecAuStoreData );
		}
		return vecRet;
	}

	/**
	 * 学習者AU単位集計
	 * @param String strStoreUID UID
	 * @param String strUserName 学習者名
	 * @param String strUserID UserID
	 * @param String strStoreStudyStartDateNew 学習開始日
	 * @param String strStoreStudyStartDateOld 最終アクセス日
	 * @param int intStoreUIDCount アクセス回数
	 * @param String strStoreTotalLearnTime 累積学習時間
	 * @param String strStoreMaxScore 得点（最新）
	 * @param String strStoreRawScore 得点（最高）
	 * @param String strStoreComplete 完了AU
	 * @param String strStorePass 合格AU
	 * @param String strStoreAURow AU_ROW
	 * @param String strStoreSectionRow SECTION_ROW
	 * @return Vector 集計結果
	 */
	private Vector setAuStoreData(String strStoreUID,
									String strUserName,
									String strUserID,
									String strStoreStudyStartDateNew,
									String strStoreStudyStartDateOld,
									int intStoreUIDCount,
									String strStoreTotalLearnTime,
									String strStoreMaxScore,
									String strStoreRawScore,
									String strStoreComplete,
									String strStorePass,
									String strStoreAURow,
									String strStoreSectionRow){

		Vector vecAuWrk = new Vector();
		//UID
		vecAuWrk.addElement(strStoreUID);
		//学習者名
		vecAuWrk.addElement(strUserName);
		//UserID
		vecAuWrk.addElement(strUserID);
		//学習開始日
		vecAuWrk.addElement(strStoreStudyStartDateNew);
		//最終アクセス日
		vecAuWrk.addElement(strStoreStudyStartDateOld);
		//アクセス回数
		vecAuWrk.addElement(new Integer(intStoreUIDCount).toString());
		//累積学習時間
		vecAuWrk.addElement(convertSecToHour(strStoreTotalLearnTime));
		//得点（最新）
		vecAuWrk.addElement(strStoreMaxScore);
		//得点（最高）
		vecAuWrk.addElement(strStoreRawScore);
		//完了AU
		vecAuWrk.addElement(strStoreComplete);
		//合格AU
		vecAuWrk.addElement(strStorePass);
		//AU_ROW
		vecAuWrk.addElement(strStoreAURow);
		//SECTION_ROW
		vecAuWrk.addElement(strStoreSectionRow);

		return vecAuWrk;
	}
}

