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); } } } }
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(); } }
/// <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(); } }