using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using CommonMP.HYSSOP.Interface.HSData;
using CommonMP.HYSSOP.Interface.HSController;
using CommonMP.HYSSOP.Interface.HSViewer;

using CommonMP.HYSSOP.CoreImpl;
using CommonMP.HYSSOP.CoreImpl.HSData;
using CommonMP.HYSSOP.CoreImpl.HSTools;
using CommonMP.HYMCO.CoreImpl.Controller;
using CommonMP.HYMCO.Interface.Viewer;


using CommonMP.HYMCO.Interface;
using CommonMP.HYMCO.Interface.Model;
using CommonMP.HYMCO.Interface.Data;
using CommonMP.HYMCO.Interface.Controller;

using CommonMP.HYMCO.CoreImpl.Model;
using CommonMP.HYMCO.CoreImpl.Data;

using CommonMP.HYSSOP.CoreImpl.HSController;

using CommonMP.HYMCO.CoreOptionl.HymcoExpansionModel;
using CommonMP.HYMCO.Ocean.McOceanBaseModel;

namespace CommonMP.HYMCO.Ocean.McOceanModelTemplate
{
    /// <summary>
    /// 伝送情報パターンファクトリ
    /// </summary>
    public class MzMyFlowObjFactory : MzFlowObjBaseFactory
    {
        static McCellModelPropertyInfo csRtnCellPrptyDt = null;

        /// <summary>
        /// 
        /// </summary>
        /// <param name="objID"></param>
        /// <param name="csModelKind"></param>
        /// <param name="sName"></param>
        /// <returns></returns>
        static public new McTranInfoPattern CreateFlow(HySID objID, HySObjectKind csModelKind, string sName = "")
        {
            McTranInfoPattern csTrnPtn = MzFlowObjBaseFactory.CreateFlow( objID,  csModelKind,  sName);

            /*
            csRtnCellPrptyDt = new McCellModelPropertyInfo(MzMyOceanDefine.OCEANBASE_TEMPLATE_MODEL_LIB, csModelKind);

            if (objID == MzOceanBaseDefine.PREDATION)
            {   // 捕食

                McMutualTranInfoPattern csMutualTrnPtn = McExpansionModelFactory.CreateMutualTranInfo(
                                 "捕食／被捕食", objID, McTranInfoDefine.MUTUAL_D1_TRAN_SERIAL, "捕食(捕食量) ", "被捕食(必要量) ");

                // Downstream
                {
                    McTranInfoPattern csDownTrnPtn = csMutualTrnPtn.GetDwnPattern();
                    // セル内変数設定
                    HySDataCharacteristicInCell csCellChara = csDownTrnPtn.CreateCellDataCharacteristic(5);
                    {
                        csCellChara.SetDataKind(0, "捕食した有機物", HySDataCharacteristicInCell.DATA_KIND.ANY_VALUE, "g/m3"); // ｇ/(立方ｍ)
                        csCellChara.SetDataKind(1, "捕食した有機物中の炭素量", HySDataCharacteristicInCell.DATA_KIND.ANY_VALUE, "g/m3"); // ｇ/(立方ｍ)
                        csCellChara.SetDataKind(2, "捕食した無機物", HySDataCharacteristicInCell.DATA_KIND.ANY_VALUE, "g/m3"); // ｇ/(立方ｍ)
                        csCellChara.SetDataKind(3, "現在の全有機物量（資源量）", HySDataCharacteristicInCell.DATA_KIND.ANY_VALUE, "g/m3"); // ｇ/(立方ｍ)
                        csCellChara.SetDataKind(4, "捕食物の密度", HySDataCharacteristicInCell.DATA_KIND.ANY_VALUE, "g/cm3"); // ｇ/(立方ｍ)
                    }
                    csDownTrnPtn.SetCellDataCharacteristic(csCellChara);
                    csDownTrnPtn.SetInterpolateType(HySDefine.InterpolateType.LINEAR); // 内挿方法設定
                }
                // Upstream
                {
                    McTranInfoPattern csUppTrnPtn = csMutualTrnPtn.GetUpPattern();
                    // セル内変数設定
                    HySDataCharacteristicInCell csCellChara = csUppTrnPtn.CreateCellDataCharacteristic(1);
                    {
                        csCellChara.SetDataKind(0, "要求する有機物量", HySDataCharacteristicInCell.DATA_KIND.ANY_VALUE, "g/m3)"); // 
                    }
                    csUppTrnPtn.SetCellDataCharacteristic(csCellChara);
                    csUppTrnPtn.SetInterpolateType(HySDefine.InterpolateType.LINEAR); // 内挿方法設定
                }
                csTrnPtn = csMutualTrnPtn;
            }
            */

            return csTrnPtn;
        }
    }

}
