private void mergeEventRegist() { m_merge_worker.DoWork += (s, e) => { double count_of_total_runs = m_merge_file_names.Count + 1; double now_runs = 0; DataSet ds_network = new DataSet(); DataSet ds_deploy = new DataSet(); DataSet ds_level = new DataSet(); DataView dv_network, dv_deploy, dv_level; StringBuilder sb_level = new StringBuilder(); int levelCount = 0; long new_job_id; List <string> buff_list = new List <string>(); m_merge_sql = new Deployment.DeploySQLiteUtility(string.Format("{0}.merge", Path.GetFileNameWithoutExtension(m_merge_file_names[0]))); m_merge_sql.CreateTable(); sb_level.Append("INSERT INTO LevelRecord(job_id, level, node_id, deploy_type)"); foreach (string filePath in m_merge_file_names) { m_query_sql = new QuerySQLiteUtils(filePath); m_merge_worker.ReportProgress((int)(now_runs / count_of_total_runs * 100.0), new object[] { filePath, "Processing..." }); // Query NetworkTopology. m_query_sql.GetResult("SELECT * FROM NetworkTopology;", ref ds_network); dv_network = ds_network.Tables[0].DefaultView; for (int i = 0; dv_network != null && i < dv_network.Count; i++) { buff_list.Add(string.Format("INSERT INTO NetworkTopology(file_name, node_counts, edge_counts, diameter) VALUES('{0}',{1},{2},{3});", dv_network[i]["file_name"], dv_network[i]["node_counts"], dv_network[i]["edge_counts"], dv_network[i]["diameter"])); // Query DeploySimulation. m_query_sql.GetResult("SELECT job_id, k, n, deploy_name FROM DeploySimulation WHERE n_id = @n_id;", ref ds_deploy, new List <SQLiteParameter>() { new SQLiteParameter("@n_id", dv_network[i]["n_id"]) }); dv_deploy = ds_deploy.Tables[0].DefaultView; for (int j = 0; dv_deploy != null && j < dv_deploy.Count; j++) { new_job_id = DateTime.Now.Subtract(new DateTime(1970, 1, 1)).Ticks; buff_list.Add(string.Format("INSERT INTO DeploySimulation(job_id, n_id, k, n, deploy_name) SELECT {0}, n_id, {2}, {3}, '{4}' FROM NetworkTopology WHERE file_name LIKE '{1}';", new_job_id, dv_network[i]["file_name"], dv_deploy[j]["k"], dv_deploy[j]["n"], dv_deploy[j]["deploy_name"])); // Query LevelRecord. m_query_sql.GetResult("SELECT level, node_id, deploy_type FROM LevelRecord WHERE job_id = @job_id;", ref ds_level, new List <SQLiteParameter>() { new SQLiteParameter("@job_id", dv_deploy[j]["job_id"]) }); dv_level = ds_level.Tables[0].DefaultView; for (int k = 0; dv_level != null && k < dv_level.Count; k++) { if (levelCount != 0 && levelCount % 499 == 0) { buff_list.Add(sb_level.ToString().Remove(sb_level.ToString().Length - 6, 6)); levelCount = 0; if (buff_list.Count >= 5000) { m_merge_sql.BulkInsertCommands(buff_list); buff_list.Clear(); } sb_level.Clear(); sb_level.Append("INSERT INTO LevelRecord(job_id, level, node_id, deploy_type)"); sb_level.AppendFormat(" SELECT {0},{1},{2},'{3}' UNION", new_job_id, dv_level[k]["level"], dv_level[k]["node_id"], dv_level[k]["deploy_type"]); } else { sb_level.AppendFormat(" SELECT {0},{1},{2},'{3}' UNION", new_job_id, dv_level[k]["level"], dv_level[k]["node_id"], dv_level[k]["deploy_type"]); } levelCount++; } } } m_merge_worker.ReportProgress((int)(++now_runs / count_of_total_runs * 100.0), new object[] { filePath, "Completed." }); } if (levelCount % 499 != 0) { buff_list.Add(sb_level.ToString().Remove(sb_level.ToString().Length - 6, 6)); } if (buff_list.Count > 0) { m_merge_sql.BulkInsertCommands(buff_list); } m_merge_worker.ReportProgress((int)(++now_runs / count_of_total_runs * 100.0)); }; m_merge_worker.ProgressChanged += (s, e) => { if (e.UserState != null) { object[] args = e.UserState as object[]; string file = args[0] as string; string status = args[1] as string; lv_merge.Items[file].SubItems[1].Text = status; foreach (int index in lv_merge.SelectedIndices) { lv_merge.Items[index].Selected = false; } lv_merge.Items[file].Selected = true; lv_merge.Items[file].Focused = true; //lv_merge.TopItem = lv_merge.Items[file]; } pb_merge.Value = e.ProgressPercentage; }; m_merge_worker.RunWorkerCompleted += (s, e) => { btn_merge.Enabled = true; tb_merge.Enabled = true; }; tb_merge.Click += (s, e) => { OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = "Database Files|*.db"; ofd.Multiselect = true; ofd.Title = "Select Deploy Simulation Database to Merge..."; ofd.InitialDirectory = Path.Combine(Environment.CurrentDirectory, "Deploy"); if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK) { m_merge_file_names = ofd.FileNames.ToList(); lv_merge.BeginUpdate(); lv_merge.Items.Clear(); foreach (var file in ofd.FileNames) { ListViewItem lvi = new ListViewItem(new string[] { Path.GetFileName(file), "Queued." }); lvi.Name = file; lv_merge.Items.Add(lvi); } lv_merge.EndUpdate(); } }; btn_merge.Click += (s, e) => { if (!m_merge_worker.IsBusy) { lv_merge.Focus(); m_merge_worker.RunWorkerAsync(); btn_merge.Enabled = false; tb_merge.Enabled = false; } }; }
private void deployEventRegist() { m_deploy_worker.DoWork += (s, e) => { double count_of_total_runs = m_deploy_file_names.Count * 2; double now_runs = 0; string cmd; DataSet ds = new DataSet(); DataView dv; m_deploy_sql = new DeployStatisticSQLiteUtils(); int itemCount; StringBuilder sb = new StringBuilder(); foreach (string filePath in m_deploy_file_names) { m_query_sql = new QuerySQLiteUtils(filePath); // Count of All Level. m_deploy_worker.ReportProgress((int)(now_runs / count_of_total_runs * 100.0), new object[] { filePath, "Processing (1/2)..." }); cmd = "SELECT file_name, node_counts, edge_counts, diameter, k, n, deploy_name, count_of_nodes, COUNT(*) AS count_of_levels FROM (SELECT file_name, node_counts, edge_counts, diameter, k, n, deploy_name, level, deploy_type, COUNT(*) AS count_of_nodes FROM (NetworkTopology INNER JOIN DeploySimulation ON NetworkTopology.n_id = DeploySimulation.n_id) INNER JOIN LevelRecord ON DeploySimulation.job_id= LevelRecord.job_id WHERE deploy_type LIKE 'Scope' GROUP BY file_name, node_counts, diameter, k, n, deploy_name, level) GROUP BY file_name, node_counts, edge_counts, diameter, k, n, deploy_name, count_of_nodes;"; m_query_sql.GetResult(cmd, ref ds); dv = ds.Tables[0].DefaultView; itemCount = 0; sb.Clear(); sb.Append("INSERT INTO CountOfAllLevel(file_name, node_counts, edge_counts, diameter, k, n, deploy_name, count_of_nodes, count_of_levels)"); for (int i = 0; dv != null && i < dv.Count; i++) { if (itemCount != 0 && itemCount % 499 == 0) { m_deploy_sql.RunCommnad(sb.ToString().Remove(sb.ToString().Length - 6, 6)); sb.Clear(); sb.Append("INSERT INTO CountOfAllLevel(file_name, node_counts, edge_counts, diameter, k, n, deploy_name, count_of_nodes, count_of_levels)"); sb.AppendFormat(" SELECT '{0}',{1},{2},{3},{4},{5},'{6}',{7},{8} UNION", dv[i]["file_name"], dv[i]["node_counts"], dv[i]["edge_counts"], dv[i]["diameter"], dv[i]["k"], dv[i]["n"], dv[i]["deploy_name"], dv[i]["count_of_nodes"], dv[i]["count_of_levels"]); } else { sb.AppendFormat(" SELECT '{0}',{1},{2},{3},{4},{5},'{6}',{7},{8} UNION", dv[i]["file_name"], dv[i]["node_counts"], dv[i]["edge_counts"], dv[i]["diameter"], dv[i]["k"], dv[i]["n"], dv[i]["deploy_name"], dv[i]["count_of_nodes"], dv[i]["count_of_levels"]); } itemCount++; } if (itemCount % 499 != 0) { m_deploy_sql.RunCommnad(sb.ToString().Remove(sb.ToString().Length - 6, 6)); } // Count of Non-Level. m_deploy_worker.ReportProgress((int)(++now_runs / count_of_total_runs * 100.0), new object[] { filePath, "Processing (2/2)..." }); cmd = "SELECT file_name, node_counts, edge_counts, diameter, k, n, deploy_name, deploy_type, COUNT(*) AS count_of_nodes FROM (NetworkTopology INNER JOIN DeploySimulation ON NetworkTopology.n_id = DeploySimulation.n_id) INNER JOIN LevelRecord ON DeploySimulation.job_id = LevelRecord.job_id GROUP BY file_name, node_counts, diameter, k, n, deploy_name, deploy_type;"; m_query_sql.GetResult(cmd, ref ds); dv = ds.Tables[0].DefaultView; itemCount = 0; sb.Clear(); sb.Append("INSERT INTO CountOfNonLevel(file_name, node_counts, edge_counts, diameter, k, n, deploy_name, deploy_type, count_of_nodes)"); for (int i = 0; dv != null && i < dv.Count; i++) { if (itemCount != 0 && itemCount % 499 == 0) { m_deploy_sql.RunCommnad(sb.ToString().Remove(sb.ToString().Length - 6, 6)); sb.Clear(); sb.Append("INSERT INTO CountOfNonLevel(file_name, node_counts, edge_counts, diameter, k, n, deploy_name, deploy_type, count_of_nodes)"); sb.AppendFormat(" SELECT '{0}',{1},{2},{3},{4},{5},'{6}','{7}',{8} UNION", dv[i]["file_name"], dv[i]["node_counts"], dv[i]["edge_counts"], dv[i]["diameter"], dv[i]["k"], dv[i]["n"], dv[i]["deploy_name"], dv[i]["deploy_type"], dv[i]["count_of_nodes"]); } else { sb.AppendFormat(" SELECT '{0}',{1},{2},{3},{4},{5},'{6}','{7}',{8} UNION", dv[i]["file_name"], dv[i]["node_counts"], dv[i]["edge_counts"], dv[i]["diameter"], dv[i]["k"], dv[i]["n"], dv[i]["deploy_name"], dv[i]["deploy_type"], dv[i]["count_of_nodes"]); } itemCount++; } if (itemCount % 499 != 0) { m_deploy_sql.RunCommnad(sb.ToString().Remove(sb.ToString().Length - 6, 6)); } m_deploy_worker.ReportProgress((int)(++now_runs / count_of_total_runs * 100.0), new object[] { filePath, "Completed (2/2)." }); } //// Count of All Level with Max N. //cmd = "INSERT INTO CountOfAllLevelWithMaxN(file_name, node_counts, edge_counts, diameter, k, n, deploy_name, level, deploy_type, count_of_nodes) SELECT c.file_name, c.node_counts, c.edge_counts, c.diameter, c.k, c.n,c.deploy_name, c.level, c.deploy_type, c.count_of_nodes FROM (SELECT file_name, node_counts, edge_counts, diameter, k, MAX(n) AS max_n FROM CountOfAllLevel GROUP BY file_name, node_counts, edge_counts, diameter, k) AS m JOIN CountOfAllLevel AS c ON m.file_name=c.file_name and m.node_counts=c.node_counts and m.edge_counts=c.edge_counts and m.diameter=c.diameter and m.k=c.k and m.max_n=c.n;"; //m_deploy_sql.RunCommnad(cmd); //// Count of Non-Level with Max N. //m_deploy_worker.ReportProgress((int)(++now_runs / count_of_total_runs * 100.0)); //cmd = "INSERT INTO CountOfNonLevelWithMaxN(file_name, node_counts, edge_counts, diameter, k, n, deploy_name, deploy_type, count_of_nodes) SELECT c.file_name, c.node_counts, c.edge_counts, c.diameter, c.k, c.n,c.deploy_name, c.deploy_type, c.count_of_nodes FROM (SELECT file_name, node_counts, edge_counts, diameter, k, MAX(n) AS max_n FROM CountOfNonLevel GROUP BY file_name, node_counts, edge_counts, diameter, k) AS m JOIN CountOfNonLevel AS c ON m.file_name=c.file_name and m.node_counts=c.node_counts and m.edge_counts=c.edge_counts and m.diameter=c.diameter and m.k=c.k and m.max_n=c.n;"; //m_deploy_sql.RunCommnad(cmd); //m_deploy_worker.ReportProgress((int)(++now_runs / count_of_total_runs * 100.0)); }; m_deploy_worker.ProgressChanged += (s, e) => { if (e.UserState != null) { object[] args = e.UserState as object[]; string file = args[0] as string; string status = args[1] as string; lv_deploy.Items[file].SubItems[1].Text = status; foreach (int index in lv_deploy.SelectedIndices) { lv_deploy.Items[index].Selected = false; } lv_deploy.Items[file].Selected = true; lv_deploy.Items[file].Focused = true; //lv_deploy.TopItem = lv_deploy.Items[file]; } pb_deploy.Value = e.ProgressPercentage; }; m_deploy_worker.RunWorkerCompleted += (s, e) => { btn_deploy_start.Enabled = true; tb_deploy_select_files.Enabled = true; }; tb_deploy_select_files.Click += (s, e) => { OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = "Database Files|*.db"; ofd.Multiselect = true; ofd.Title = "Select Deploy Simulation Database to Process..."; ofd.InitialDirectory = Path.Combine(Environment.CurrentDirectory, "Deploy"); if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK) { m_deploy_file_names = ofd.FileNames.ToList(); lv_deploy.BeginUpdate(); lv_deploy.Items.Clear(); foreach (var file in ofd.FileNames) { ListViewItem lvi = new ListViewItem(new string[] { Path.GetFileName(file), "Queued." }); lvi.Name = file; lv_deploy.Items.Add(lvi); } lv_deploy.EndUpdate(); } }; btn_deploy_start.Click += (s, e) => { if (!m_deploy_worker.IsBusy) { lv_deploy.Focus(); m_deploy_worker.RunWorkerAsync(); btn_deploy_start.Enabled = false; tb_deploy_select_files.Enabled = false; } }; }
private void heteroEventRegist() { m_hetero_worker.DoWork += (s, e) => { double count_of_total_runs = m_hetero_file_names.Count * m_deploy_names.Count; double now_runs = 0; int itemCount = 0; int k, n, countOfDeploy, countOfTunneling; int tunneling, marking, filtering, attacker, victim, packets; string fileName; m_hetero_sql = new HeteroDeployStatisticSQLiteUtils(); StringBuilder sb = new StringBuilder(); sb.Append("INSERT INTO HeteroSimulationResults(file_name, tunneling, marking, filtering, attacker, victim, packets, k, n, deploy_name, count_of_deploy, count_of_tunneling)"); foreach (string filePath in m_hetero_file_names) { m_query_sql = new QuerySQLiteUtils(filePath); if (Regex.IsMatch(Path.GetFileNameWithoutExtension(filePath), @"(^[\w\d]+)_T(\d+)M(\d+)F(\d+)_A(\d+)V(\d+)_Pkt(\d+)_(\d+)")) { GroupCollection gc = Regex.Match(Path.GetFileNameWithoutExtension(filePath), @"(^[\w\d]+)_T(\d+)M(\d+)F(\d+)_A(\d+)V(\d+)_Pkt(\d+)_(\d+)").Groups; fileName = Convert.ToString(gc[1].Value); tunneling = Convert.ToInt32(gc[2].Value); marking = Convert.ToInt32(gc[3].Value); filtering = Convert.ToInt32(gc[4].Value); attacker = Convert.ToInt32(gc[5].Value); victim = Convert.ToInt32(gc[6].Value); packets = Convert.ToInt32(gc[7].Value); } else { fileName = "Unkown"; tunneling = 0; marking = 0; filtering = 0; attacker = 0; victim = 0; packets = 0; } DataUtility.Log(string.Format("f={0}, t={1}, m={2}, f={3}, a={4}, v={5}, p={6}\n", fileName, tunneling, marking, filtering, attacker, victim, packets)); foreach (string deploy in m_deploy_names) { string cmd = string.Format("SELECT K, N, count_of_deploy, count_of_tunneling FROM (SELECT K, N, COUNT(*) AS count_of_deploy FROM {0}_Deployment WHERE TracerType=2), (SELECT COUNT(*) AS count_of_tunneling FROM {0}_TunnelingEvents);", deploy); DataView dv = m_query_sql.GetResult(cmd); if (dv != null && dv.Count > 0) { k = Convert.ToInt32(dv[0]["K"]); n = Convert.ToInt32(dv[0]["N"]); countOfDeploy = Convert.ToInt32(dv[0]["count_of_deploy"]); countOfTunneling = Convert.ToInt32(dv[0]["count_of_tunneling"]); if (itemCount != 0 && itemCount % 499 == 0) { m_hetero_sql.RunCommnad(sb.ToString().Remove(sb.ToString().Length - 6, 6)); sb.Clear(); sb.Append("INSERT INTO HeteroSimulationResults(file_name, tunneling, marking, filtering, attacker, victim, packets, k, n, deploy_name, count_of_deploy, count_of_tunneling)"); sb.AppendFormat(" SELECT '{0}',{1},{2},{3},{4},{5},{6},{7},{8},'{9}',{10},{11} UNION", fileName, tunneling, marking, filtering, attacker, victim, packets, k, n, deploy, countOfDeploy, countOfTunneling); } else { sb.AppendFormat(" SELECT '{0}',{1},{2},{3},{4},{5},{6},{7},{8},'{9}',{10},{11} UNION", fileName, tunneling, marking, filtering, attacker, victim, packets, k, n, deploy, countOfDeploy, countOfTunneling); } itemCount++; DataUtility.Log(string.Format("k={0}, n={1}, d={2}, t={3}, d_name={4}\n\n", k, n, countOfDeploy, countOfTunneling, deploy)); } m_hetero_worker.ReportProgress((int)(++now_runs / count_of_total_runs * 100.0)); } m_hetero_worker.ReportProgress((int)(now_runs / count_of_total_runs * 100.0), new object[] { filePath, "Completed." }); } if (itemCount % 499 != 0) { m_hetero_sql.RunCommnad(sb.ToString().Remove(sb.ToString().Length - 6, 6)); } }; m_hetero_worker.ProgressChanged += (s, e) => { if (e.UserState != null) { object[] args = e.UserState as object[]; string file = args[0] as string; string status = args[1] as string; lv_hetero.Items[file].SubItems[1].Text = status; foreach (int index in lv_hetero.SelectedIndices) { lv_hetero.Items[index].Selected = false; } lv_hetero.Items[file].Selected = true; lv_hetero.Items[file].Focused = true; //lv_hetero.TopItem = lv_hetero.Items[file]; } pb_hetero.Value = e.ProgressPercentage; }; m_hetero_worker.RunWorkerCompleted += (s, e) => { btn_hetero_start.Enabled = true; tb_hetero_select_files.Enabled = true; }; tb_hetero_select_files.Click += (s, e) => { OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = "Database Files|*.db"; ofd.Multiselect = true; ofd.Title = "Select Heterogenerous Simulation Database to Process..."; ofd.InitialDirectory = Path.Combine(Environment.CurrentDirectory, "Log"); if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK) { m_hetero_file_names = ofd.FileNames.ToList(); lv_hetero.BeginUpdate(); lv_hetero.Items.Clear(); foreach (var file in ofd.FileNames) { ListViewItem lvi = new ListViewItem(new string[] { Path.GetFileName(file), "Queued." }); lvi.Name = file; lv_hetero.Items.Add(lvi); } lv_hetero.EndUpdate(); } }; btn_hetero_start.Click += (s, e) => { if (!m_hetero_worker.IsBusy) { lv_hetero.Focus(); m_hetero_worker.RunWorkerAsync(); btn_hetero_start.Enabled = false; tb_hetero_select_files.Enabled = false; } }; }