/********************************************************************************
*		ソースファイル名：CollectMining.h										
*		用            途：マイニングデータ収集クラス									
*		備            考：														
*		履            歴：														
********************************************************************************/
/****************************
*   コンパイル環境定数	    *
****************************/
#pragma once
/****************************
*   インクルードファイル    *
****************************/
#include "CollectCommon.h"
#include "Thread.h"
#include "MemManager.h"
#include "RingQueue.h"
#include "ParameterManager.h"
/****************************
*        マクロ定義			*
****************************/
/****************************
*        構造体定義		    *
****************************/
/****************************
*        クラス定義		    *
****************************/
// CCollectMining
class CCollectMining : public CThread 
{

public:
	// 公開メソッド
									CCollectMining();
	virtual							~CCollectMining();

									CCollectMining(const CCollectMining* p);
									CCollectMining(const CCollectMining& p);
									CCollectMining& operator =(const CCollectMining& p);

	//インスタンス取得（初回は生成）
	static	CCollectMining&	GetInstance(void);

			//BOOL					Initialize( CRingQueue* pMiningQueue, CRingQueue* pInprocessQueue ) ;	// 初期化
			BOOL					Initialize( CRingQueue* pMiningQueue ) ;	// 初期化
			void					ClearData () ;															// データクリア
			void					ClearInprocessData ( INT32 nBufIndex ) ;								// インプロセス計測データクリア

protected:
	virtual	BOOL					IsNewFolder();
	virtual BOOL					MakeFolderName(CString *str);

private:
	// 非公開メソッド
	virtual	BOOL					Main();																	// スレッドの処理実体
			INT32					Wait( UINT32 uWaitTime_ms ) ;											// 待機する

			BOOL					FindMiningFile		( CString strInputPath, CString* pstrFilePath ) ;	// マイニングデータファイル検索
			BOOL					AnalyzeMiningFile	( CString strFilePath ) ;							// マイニングデータファイル解析
			void					UpFolderCopy		( INT32 nUpCount, CString strSrcPath, CString* pstrDstPath ) ;
private:
	// 非公開メンバー
			BOOL					m_bInitialize ;					// 初期化完了フラグ
			P_PARAM_COLLECT			m_tpParam ;						// パラメータ構造体ポインタ
			BOOL					m_bInputPath ;					// 入力元パス有効フラグ
			CString					m_strInputPath[NOF_OP] ;		// CSVデータ入力元パス

			MINING_DATA				m_tMiningData ;					// マイニングデータ構造体
			CRingQueue			   *m_pMiningQueue ;				// マイニングデータ格納キュー

			INT32					m_nFileCnt;						// 現在のファイル数
			INT32					m_nFileMax;						// １フォルダー内のファイル数上限
			CString					m_strFolder;					// ファイル格納サブフォルダ名

			//INPROCESS_DATA			m_taInprocessData	[NOF_INP_DATA_BUFFER] ;		// インプロセス計測データ構造体
			//CRingQueue			   *m_pInprocessQueue ;								// インプロセス計測結果格納キュー
			//CMemManager				m_aInpMeasureDataMem[NOF_INP_DATA_BUFFER] ;		// インプロセス計測データメモリ
			//INT32					m_nInpBufIndex ;
};			

/****************************
*         関数 宣言		    *
****************************/
/****************************
*		　変数　宣言	    *
****************************/
/****************************
*   コンパイル環境定数	    *
****************************/

