private void InsertButton_Click(object sender, EventArgs e) { int id = 0; //セマンティックリンクID int startNum = 0; //スタート地点NUM #region 仮想ログデータ(JST,車速,車間距離)を生成する処理 //ECOLOGテーブルから,SQLで指定した範囲のECOLOGデータをDataTable型で取得する処理 DataTable ECOLOGData = EcologSimulationDao.GetSelectedData(); //ソートされたリンク(線)を取得する処理 List <LinkData> linkList = getLinkList(id, startNum); //仮想ログデータを生成するメソッド DataTable logData = generateSimulationLog(ECOLOGData, linkList); #endregion DataTable EcologSimulationTable = new DataTable(); //仮想の走行ログから生成したECOLOGデータを格納するDataTableを作成 EcologSimulationTable = DataTableUtil.GetEcologTable(); //↑で生成したDataTableのスキーマをECOLOGテーブルの形にする //ECOLOG計算をして,仮想ECOLOGデータを生成するメソッド for (int i = 0; i < logData.Rows.Count; i++) { DataRow ecologRow = HagimotoEcologCalculator.CalcEcologSimulation(DataRow tripRow, InsertDatum datum, InsertConfig.GpsCorrection.Normal);//TODO: 仮想のGPSログを元にtripRow, Datumを設定 EcologSimulationTable.Rows.Add(ecologRow); } #region 仮想ECOLOGデータをデータベースインサートする処理 //仮想ECOLOGデータをECOLOG_SIMULATIONテーブルへインサートするメソッド EcologSimulationDao.Insert(EcologSimulationTable); #endregion }
public static void InsertEcolog(InsertDatum datum, MainWindowViewModel.UpdateTextDelegate updateTextDelegate, InsertConfig.GpsCorrection correction, out int count) { count = 0; var tripsTable = TripsDao.Get(datum); //int i = 1; //foreach (DataRow row in tripsTable.Rows) //{ // updateTextDelegate($"Insetring ECOLOG ... , {i} / {tripsTable.Rows.Count}"); // LogWritter.WriteLog(LogWritter.LogMode.Ecolog, $"Insetring ECOLOG... , { i} / { tripsTable.Rows.Count}, Datum: {datum}"); // var ecologTable = HagimotoEcologCalculator.CalcEcolog(row, datum, correction); // EcologDao.Insert(ecologTable); // i++; //} int t = 0; Parallel.For(0, tripsTable.Rows.Count, i => { if (tripsTable.Rows[i][(TripsDao.ColumnConsumedEnergy)] == DBNull.Value) { updateTextDelegate($"Insetring ECOLOG ... , {i + 1} / {tripsTable.Rows.Count}"); LogWritter.WriteLog(LogWritter.LogMode.Ecolog, $"Insetring ECOLOG... , { i} / { tripsTable.Rows.Count}, Datum: {datum}"); var ecologTable = HagimotoEcologCalculator.CalcEcolog(tripsTable.Rows[i], datum, InsertConfig.GpsCorrection.Normal); EcologSimulationDao.Insert(ecologTable); t++; } }); count = t; TripsDao.UpdateConsumedEnergy(); }