using System;
using System.Data;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.VisualBasic.FileIO;

using SystemCommon;


namespace 顧客分析君
{
	////class C03CSV取込処理基底
	////{
	////}

	///// <summary>
	///// マスタメンテ用のCSV取込処理基底クラス
	///// </summary>
	//#region CSV取込処理基底クラス

	//public abstract class C03CSV取込処理基底
	//{
	//    ////////////////////////////////////////////////////////////////////////
	//    // メンバ変数
	//    ////////////////////////////////////////////////////////////////////////
	//    #region メンバ変数
	//    //読み込んだCSVデータの配列
	//    private List<List<string>> mデータ;
	//    protected string mLastErrorMessage;
	//    protected string mErrorDetail;
	//    protected DateTime m現在日時;
	//    protected int mログインユーザ;
	//    #endregion

	//    ////////////////////////////////////////////////////////////////////////
	//    // プロパティ
	//    ////////////////////////////////////////////////////////////////////////
	//    #region プロパティ

	//    public string LastErrorMessage
	//    {
	//        get { return mLastErrorMessage; }
	//    }

	//    public string ErrorDetail
	//    {
	//        get { return mErrorDetail; }
	//    }
	//    #endregion

	//    ////////////////////////////////////////////////////////////////////////
	//    // 共通メソッド 
	//    ////////////////////////////////////////////////////////////////////////
	//    #region 共通メソッド
	//    /// <summary>
	//    /// コンストラクタ
	//    /// </summary>
	//    public C03CSV取込処理基底()
	//    {
	//        mデータ = null;
	//        mLastErrorMessage = string.Empty;
	//        mErrorDetail = string.Empty;
	//    }

	//    /// <summary>
	//    /// CSV取込メイン処理として、以下の処理を実施し引数のDataTableに変換された値を返す。<br/>
	//    /// これら処理は継承先で定義する。
	//    /// 　①基底CSV取込クラスからの検証
	//    /// 　②基底CSV取込クラスからのデータ変換
	//    /// </summary>
	//    /// <param name="CSVファイル名">入力元のCSVファイルを指定する。</param>
	//    /// <param name="dt">０行にクリアされているDataTableを渡す。</param>
	//    /// <param name="btマスタ種別">１：各種マスタ　２：各種マスタ以外</param>
	//    /// <returns>検証に失敗した場合はfalseを返す。そうでない場合はtrueを返す。</returns>
	//    public bool CSV変換(string CSVファイル名, DataTable dt, byte btマスタ種別)
	//    {
	//        mデータ = new List<List<string>>();

	//        int readcnt = 0;
	//        TextFieldParser tfp = new TextFieldParser(CSVファイル名, System.Text.Encoding.GetEncoding("Shift_JIS"));
	//        using (tfp)
	//        {
	//            tfp.TextFieldType = FieldType.Delimited;
	//            tfp.SetDelimiters(",");

	//            while (!tfp.EndOfData)
	//            {
	//                readcnt++;

	//                string[] row = tfp.ReadFields();

	//                List<string> col = new List<string>();

	//                foreach (string field in row)
	//                    col.Add(field);

	//                mデータ.Add(col);
	//            }
	//        }

	//        for (int i = 0; i < mデータ.Count; i++)
	//        {
	//            int colcnt = mデータ[i].Count;
	//            if (colcnt != 基底CSV取込クラスからの列数取得())
	//            {
	//                mLastErrorMessage = Properties.Resources.MSG_W_CSVファイルのレイアウトが異なっているため_ファイル入力を中断しました;
	//                mErrorDetail = string.Format(Properties.Resources.MSG_W_CSVファイルは_A列でなければなりません, 基底CSV取込クラスからの列数取得());
	//                return false;
	//            }

	//            for (int j = 0; j < colcnt; j++)
	//            {
	//                if (btマスタ種別 == 1)
	//                {
	//                    if (!基底CSV取込クラスからの検証_各種マスタ(i, j, mデータ[i][j].Trim(), mデータ[i][0].Trim()))
	//                    {
	//                        mLastErrorMessage = string.Format(Properties.Resources.MSG_W_A行目_B列目の値が不正な為_ファイル入力を中断しました, i + 1, j + 1);
	//                        return false;
	//                    }
	//                }
	//                else
	//                {
	//                    if (!基底CSV取込クラスからの検証(i, j, mデータ[i][j].Trim()))
	//                    {
	//                        mLastErrorMessage = string.Format(Properties.Resources.MSG_W_A行目_B列目の値が不正な為_ファイル入力を中断しました, i + 1, j + 1);
	//                        return false;
	//                    }
	//                }
	//            }
	//        }

	//        for (int i = 0; i < mデータ.Count; i++)
	//            基底CSV取込クラスからのデータ変換(i, mデータ[i], dt);

	//        //if (!基底CSV取込クラスからの全体検証(dt))
	//        //    return false;

	//        return true;
	//    }


	//    /// <summary>
	//    /// 各項目で共通の検証（必須、桁数、書式）を行う
	//    /// </summary>
	//    /// <param name="value">検証値を指定する</param>
	//    /// <param name="Is必須入力チェックを行う">必須入力の場合はtrue。そうでない場合はfalseを指定する。</param>
	//    /// <param name="maxlength">最大桁数を指定する</param>
	//    /// <param name="正規表現idx">正規表現を指定する</param>
	//    /// <returns>検証が成功した場合はtrue。そうでない場合はfalseを指定する。</returns>
	//    protected bool IsValidate共通(string value, bool Is必須入力チェックを行う, int maxlength, int 正規表現idx, string header)
	//    {
	//        //if (Is必須入力チェックを行う)
	//        //{
	//        //    if (value == string.Empty)
	//        //    {
	//        //        mErrorDetail = string.Format(Properties.Resources.MSG_INF_075, header);
	//        //        return false;
	//        //    }
	//        //}

	//        //if (value.Length > maxlength)
	//        //{
	//        //    mErrorDetail = string.Format(Properties.Resources.MSG_INF_033, header, maxlength);
	//        //    return false;
	//        //}


	//        //if (value == "") return true;   // データが無ければ、後のチェックを行わない。

	//        //if (!C10Validate.IsMatch(value, 正規表現idx))
	//        //{
	//        //    if (((正規表現idx == C_正規表現.半角数字) || (正規表現idx == C_正規表現.メールアドレス)) &&
	//        //        (value == string.Empty))
	//        //    {
	//        //        //半角数字、メールアドレス、IPアドレスの場合で空文字の場合はエラーとしない
	//        //        return true;
	//        //    }

	//        //    if (正規表現idx == C_正規表現.半角数字)
	//        //    {
	//        //        if (header == "商品単価")
	//        //            mErrorDetail = string.Format(Properties.Resources.MSG_INF_100, header, (long)C_最大値.商品単価);
	//        //        else if (header == "販売個数")
	//        //            mErrorDetail = string.Format(Properties.Resources.MSG_INF_100, header, (long)C_最大値.販売個数);
	//        //        else if (header == "年齢")
	//        //            mErrorDetail = string.Format(Properties.Resources.MSG_INF_100, header, (long)C_最大値.年齢);
	//        //    }
	//        //    else
	//        //    {
	//        //        mErrorDetail = string.Format(Properties.Resources.MSG_INF_052, header, 正規表現idx.ToString());
	//        //    }

	//        //    return false;
	//        //}

	//        //return true;

	//        return C10Validate.IsValidate共通(value, Is必須入力チェックを行う, maxlength, 正規表現idx, header, ref mErrorDetail);
	//    }



	//    protected virtual int 基底CSV取込クラスからの列数取得() { return 0; }
	//    protected virtual bool 基底CSV取込クラスからの検証(int rowIndex, int colIndex, string value) { return true; }
	//    protected virtual bool 基底CSV取込クラスからの検証_各種マスタ(int rowIndex, int colIndex, string value, string str区分) { return true; }
	//    //protected virtual bool 基底CSV取込クラスからの全体検証(DataTable dt) { return true; }
	//    protected virtual void 基底CSV取込クラスからのデータ変換(int rowIndex, List<string> values, DataTable dt) { return; }
	//    #endregion
	//}

	//#endregion

}
