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); } } } }
public static void LoadFromSystemDB(MieSystemDB systemDB, MieChatterNodeInfo convNodeInfo) { SQLiteCommand command = systemDB.Connection.CreateCommand(); command.CommandText = @"SELECT FileCode,FromNodeID,ToNodeID FROM ChatterNodeLinks ORDER BY FileCode;"; using (SQLiteDataReader reader = command.ExecuteReader()) { while (reader.Read() == true) { var fileCode = (long)reader["FileCode"]; var fromNodeID = (int)(long)reader["FromNodeID"]; var toNodeID = (int)(long)reader["ToNodeID"]; var nodeFile = convNodeInfo.GetNodeFile(fileCode); MieChatterLink nodeLink = new MieChatterLink(fromNodeID, toNodeID); nodeFile.AddLinkEntry(nodeLink); } } }