private static void CreateChatterInfo(string ctext, MieChatterNodeInfo mieChatterInfo, MieFileList fileList)
        {
            //// デシリアライズ
            var oeChatter = JsonConvert.DeserializeObject <MieOEChatter>(ctext);

            foreach (var chatterFile in oeChatter.ChatterFiles)
            {
                var fileID = chatterFile.Filename.Replace(".chatter", string.Empty);
                //// FileIDを統一形式に変換する。
                fileID = MieFileUtils.ConvertFileIDToCommon(fileID);
                fileID = MieStringUtils.NormalizedFileID(fileID);

                MieChatterNodeFile chatterNodeFile = null;

                var fileCode = fileList.GetHashByFileID(fileID);
                if (fileCode == 0)
                {
                    //// 言語情報から生成されたFileListに含まれないものは無視する。
                    continue;
                }
                else
                {
                    chatterNodeFile = new MieChatterNodeFile(fileCode);
                    mieChatterInfo.AddFile(chatterNodeFile);
                }

                foreach (var node in chatterFile.Nodes)
                {
                    var dataType = node.MieChatterNodeDataTypeTag;

                    var  nodeID         = node.NodeID;
                    var  isQuestionNode = node.IsQuestionNode;
                    bool isRootNode     = node.NodeID == 0 ? true : false;

                    //// チャッターエントリー
                    MieChatterNodeEntry.NNodeType nodeType  = MieChatterNodeEntry.NNodeType.Unknown;
                    MieChatterNodeEntry           nodeEntry = new MieChatterNodeEntry(nodeType, nodeID, isRootNode);
                    chatterNodeFile.AddFlatNodeEntry(nodeEntry);

                    //// Link情報の登録
                    foreach (var link in node.Links)
                    {
                        MieChatterLink mieChatterLink = new MieChatterLink(link.FromNodeID, link.ToNodeID);
                        chatterNodeFile.AddLinkEntry(mieChatterLink);
                    }
                }
            }
        }
Esempio n. 2
0
        private static void SaveToTable(SQLiteConnection connection, MieChatterNodeFile nodeFile, long fileCode)
        {
            SQLiteCommand cmd = connection.CreateCommand();

            cmd.CommandText = "INSERT INTO ChatterNodeLinks VALUES(@FileCode,@FromNodeID,@ToNodeID);";
            //// パラメータのセット
            cmd.Parameters.Add("FileCode", System.Data.DbType.Int64);
            cmd.Parameters.Add("FromNodeID", System.Data.DbType.Int32);
            cmd.Parameters.Add("ToNodeID", System.Data.DbType.Int32);
            foreach (var link in nodeFile.Links)
            {
                cmd.Parameters["FileCode"].Value   = fileCode;
                cmd.Parameters["FromNodeID"].Value = link.FromeNode;
                cmd.Parameters["ToNodeID"].Value   = link.ToNode;

                cmd.ExecuteNonQuery();
            }
        }
Esempio n. 3
0
        /// <summary>
        /// 指定したファイルのチャッターノードを保存する。
        /// </summary>
        /// <param name="connection">DB接続情報</param>
        /// <param name="nodeFile">NodeFile</param>
        /// <param name="fileCode">FileCode</param>
        private static void SaveToTable(SQLiteConnection connection, MieChatterNodeFile nodeFile, long fileCode)
        {
            SQLiteCommand cmd = connection.CreateCommand();

            cmd.CommandText = "INSERT INTO ChatterNodeEntries VALUES(@FileCode,@NodeID,@NodeType,@IsRootNode);";
            //// パラメータのセット
            cmd.Parameters.Add("FileCode", System.Data.DbType.Int64);
            cmd.Parameters.Add("NodeID", System.Data.DbType.Int32);
            cmd.Parameters.Add("NodeType", System.Data.DbType.Int32);
            cmd.Parameters.Add("IsRootNode", System.Data.DbType.Boolean);

            foreach (var node in nodeFile.FlatNodes.Values)
            {
                //// 値のセット
                cmd.Parameters["FileCode"].Value   = fileCode;
                cmd.Parameters["NodeID"].Value     = node.NodeID;
                cmd.Parameters["NodeType"].Value   = node.NodeType;
                cmd.Parameters["IsRootNode"].Value = node.IsRootNode;

                cmd.ExecuteNonQuery();
            }
        }