/// <summary> /// 指定されたコマンド テキストが、 /// 動的パラメタライズド クエリであるか確認する。 /// </summary> /// <param name="commandText">コマンド テキスト</param> /// <remarks>派生のDamXXXから利用する。</remarks> protected void CheckCommandText(string commandText) { #if PERFORMANCE_LOG_SWITCH // 2009/09/25-このプリプロセッサ PerformanceRecorder perfRec = new PerformanceRecorder(); perfRec.StartsPerformanceRecord(); Debug.WriteLine("CheckCommandText(開始)"); #endif // ここでDamのメンバ変数の状態を初期化する。 this.init(); // 2008/10/16---チェック処理の変更(ここから) // XMLかどうかを確認するフラグ。 bool isXML = false; try { // XLMであるか確認する。 this._xml = new XmlDocument(); StringReader sr = new StringReader(commandText); this._xml.Load(sr); // XMLではある。 isXML = true; } catch { // XMLではない。 isXML = false; } if (isXML) { // デバッグ時は構文チェックする。 // XMLの場合、DPQであるか確認する。 foreach (XmlNode xmlNode in this._xml.ChildNodes) { // 大文字・小文字は区別する。 if (xmlNode.Name == PubLiteral.DPQ_TAG_ROOT) { this.Scan(xmlNode); this._QueryStatus = DbEnum.QueryStatusEnum.DPQ; } } } // 2008/10/16---チェック処理の変更(ここまで) #if PERFORMANCE_LOG_SWITCH // 2009/09/25-このプリプロセッサ Debug.WriteLine("CheckCommandText(終了):" + perfRec.EndsPerformanceRecord()); #endif }
/// <summary>ファイルIO(書込)</summary> protected void btnFileIOO_Click(object sender, EventArgs e) { // ループ回数 int j = int.Parse(this.txtExecCnt.Text); // 性能測定オブジェクト PerformanceRecorder prec = new PerformanceRecorder(); // 開始 prec.StartsPerformanceRecord(); // StreamWriter StreamWriter sw = new StreamWriter( this.txtFilePath1.Text, false, Encoding.GetEncoding(CustomEncode.UTF_8)); // ループ処理 for (int i = 1; i <= j; i++) { sw.WriteLine("テスト てすと 手素戸"); } sw.Close(); // 終了 this.lblPrefRec1.Text = prec.EndsPerformanceRecord(); // 結果の出力 this.lblPrefRec2.Text = prec.ExecTime; this.lblPrefRec3.Text = prec.CpuTime; this.lblPrefRec4.Text = prec.CpuKernelTime; this.lblPrefRec5.Text = prec.CpuUserTime; }
/// <summary>ファイルIO(読込)</summary> protected void btnFileIOI_Click(object sender, EventArgs e) { // ループ回数 int j = int.Parse(this.txtExecCnt.Text); // 性能測定オブジェクト PerformanceRecorder prec = new PerformanceRecorder(); // 開始 prec.StartsPerformanceRecord(); StreamReader sr = new StreamReader( this.txtFilePath1.Text, Encoding.GetEncoding(CustomEncode.UTF_8)); // ループ処理 for (int i = 1; i <= j; i++) { this.lblFileData.Text = sr.ReadLine(); } sr.Close(); // 終了 this.lblPrefRec1.Text = prec.EndsPerformanceRecord(); // 結果の出力 this.lblPrefRec2.Text = prec.ExecTime; this.lblPrefRec3.Text = prec.CpuTime; this.lblPrefRec4.Text = prec.CpuKernelTime; this.lblPrefRec5.Text = prec.CpuUserTime; }
/// <summary>一般的な例外発生時の処理を実装</summary> /// <param name="ex">例外オブジェクト</param> /// <param name="rcFxEventArgs">イベントハンドラの共通引数</param> /// <remarks>画面コード親クラス1から利用される派生の末端</remarks> protected override void UOC_ABEND(Exception ex, RcFxEventArgs rcFxEventArgs) { // 一般的な例外発生時の処理を実装 // TODO: // 性能測定終了 // イベント処理開始前にエラーが発生した場合は、 // this.perfRecがnullの場合があるので、null対策コードを挿入する。 if (this.perfRec == null) { // nullの場合、新しいインスタンスを生成し、性能測定開始。 this.perfRec = new PerformanceRecorder(); perfRec.StartsPerformanceRecord(); } this.perfRec.EndsPerformanceRecord(); // ACCESSログ出力----------------------------------------------- if (MyBaseControllerWin.CanOutPutLog) { // ------------ // メッセージ部 // ------------ // ユーザ名, レイヤ, 画面名, コントロール名, // 処理時間(実行時間), 処理時間(CPU時間) // エラーメッセージID, エラーメッセージ等 // ------------ string strLogMessage = "," + UserInfo.UserName + "," + "<-----" + "," + this.Name + "," + rcFxEventArgs.ControlName + "," + this.perfRec.ExecTime + "," + this.perfRec.CpuTime + "," + "other Exception" + "," + ex.Message + "\r\n" + this.OriginalStackTrace; // OriginalStackTrace(ログ出力)の品質向上 if (this.OriginalStackTrace == "") { strLogMessage += ex.StackTrace; } else { strLogMessage += this.OriginalStackTrace; } // Log4Netへログ出力 LogIF.ErrorLog("ACCESS", strLogMessage); } // ------------------------------------------------------------- }
/// <summary>スリープ</summary> protected void btnSleep_Click(object sender, EventArgs e) { // ループ回数 int j = int.Parse(this.txtExecCnt.Text); // 性能測定オブジェクト PerformanceRecorder prec = new PerformanceRecorder(); // 開始 prec.StartsPerformanceRecord(); // ループ処理 for (int i = 1; i <= j; i++) { System.Threading.Thread.Sleep(0); } // 終了 this.lblPrefRec1.Text = prec.EndsPerformanceRecord(); // 結果の出力 this.lblPrefRec2.Text = prec.ExecTime; this.lblPrefRec3.Text = prec.CpuTime; this.lblPrefRec4.Text = prec.CpuKernelTime; this.lblPrefRec5.Text = prec.CpuUserTime; }
// 2009/09/01 & 2009/09/25-end #endregion #region P層フレームワークの共通処理 #region 開始 終了処理のUOCメソッド /// <summary>フレームワークの対象コントロールイベントの開始処理を実装</summary> /// <param name="fxEventArgs">イベントハンドラの共通引数</param> /// <remarks>画面コード親クラス1から利用される派生の末端</remarks> protected override void UOC_PreAction(FxEventArgs fxEventArgs) { // フレームワークの対象コントロールイベントの開始処理を実装する // TODO: // 認証ユーザ情報を取得する ------------------------------------ this.GetUserInfo(); // ------------------------------------------------------------- // 権限チェック ------------------------------------------------ // ------------------------------------------------------------- // 閉塞チェック ------------------------------------------------ // ------------------------------------------------------------- // ACCESSログ出力 ---------------------------------------------- // ------------ // メッセージ部 // ------------ // ユーザ名, IPアドレス, // レイヤ, 画面名, コントロール名, 処理名 // 処理時間(実行時間), 処理時間(CPU時間) // エラーメッセージID, エラーメッセージ等 // ------------ string strLogMessage = "," + UserInfo.UserName + "," + Request.UserHostAddress + "," + "----->" + "," + this.ContentPageFileNoEx + "," + fxEventArgs.ButtonID; // Log4Netへログ出力 LogIF.InfoLog("ACCESS", strLogMessage); // ------------------------------------------------------------- // 性能測定開始 this.perfRec = new PerformanceRecorder(); this.perfRec.StartsPerformanceRecord(); }
/// <summary>業務例外発生時の処理を実装</summary> /// <param name="baEx">BusinessApplicationException</param> /// <param name="rcFxEventArgs">イベントハンドラの共通引数</param> /// <remarks>画面コード親クラス1から利用される派生の末端</remarks> protected override void UOC_ABEND(BusinessApplicationException baEx, RcFxEventArgs rcFxEventArgs) { // 業務例外発生時の処理を実装 // TODO: // ここに、メッセージの組み立てロジックを実装する。 // メッセージ編集処理 ------------------------------------------ // ------------------------------------------------------------- // メッセージ表示処理 ------------------------------------------ // ------------------------------------------------------------- // 性能測定終了 // イベント処理開始前にエラーが発生した場合は、 // this.perfRecがnullの場合があるので、null対策コードを挿入する。 if (this.perfRec == null) { // nullの場合、新しいインスタンスを生成し、性能測定開始。 this.perfRec = new PerformanceRecorder(); perfRec.StartsPerformanceRecord(); } this.perfRec.EndsPerformanceRecord(); // ACCESSログ出力----------------------------------------------- if (MyBaseControllerWin.CanOutPutLog) { // ------------ // メッセージ部 // ------------ // ユーザ名, レイヤ, 画面名, コントロール名, // 処理時間(実行時間), 処理時間(CPU時間) // エラーメッセージID, エラーメッセージ等 // ------------ string strLogMessage = "," + UserInfo.UserName + "," + "<-----" + "," + this.Name + "," + rcFxEventArgs.ControlName + "," + this.perfRec.ExecTime + "," + this.perfRec.CpuTime + "," + baEx.messageID + "," + baEx.Message; // Log4Netへログ出力 LogIF.WarnLog("ACCESS", strLogMessage); } // ------------------------------------------------------------- }
/// <summary>開始処理</summary> protected override void UOC_Pre() { // ACCESSログ出力 ---------------------------------------------- if (MyBaseAsyncFunc.CanOutPutLog) { // ------------ // メッセージ部 // ------------ // ユーザ名, レイヤ, 画面名, コントロール名, // 処理時間(実行時間), 処理時間(CPU時間) // エラーメッセージID, エラーメッセージ等 // ------------ string strLogMessage = "," + "-" + "," + "-----*" + "," + this.UIElementName + "," + this.AsyncFunc.Method.Name; // Log4Netへログ出力 LogIF.InfoLog("ACCESS", strLogMessage); } // ------------------------------------------------------------- // 性能測定開始 this.perfRec = new PerformanceRecorder(); this.perfRec.StartsPerformanceRecord(); }
/// <summary>SQLの実行</summary> private void btnExecQuery_Click(object sender, EventArgs e) { string sql = ""; string log = ""; string caption = ""; #region 性能測定関係の変数 // 2009/09/25-start // 性能測定 PerformanceRecorder prfRec = null; //// 性能測定-開始 //prfRec = new PerformanceRecorder(); //prfRec.StartsPerformanceRecord(); //// 性能情報を出力 //log += "【性能情報-チェック処理】" + "\r\n"; //log += prfRec.EndsPerformanceRecord() + "\r\n\r\n"; // 2009/09/25-end #endregion #region コマンドの設定 try { // 実行中はトランザクションの制御方式を変更できないようにする。 this.groupBoxTx.Enabled = false; // コマンド if (this._loadFilePath == "") { // ファイルパスが指定されている。 ((BaseDam)this._dam).SetSqlByCommand(this.txtSQL.Text); caption = this.RM_GetString("RunTextBox"); } else { // ファイルパスが指定されていない。 ((BaseDam)this._dam).SetSqlByFile(this._loadFilePath); caption = PubCmnFunction.GetFileNameNoEx(this._loadFilePath, '\\') + this.RM_GetString("RunFile"); } } catch (Exception Ex) { // チェックエラーのメッセージを表示する MessageBox.Show(Ex.Message); // 処理の中断 return; } #endregion //// HiRDBデータプロバイダの配列バインド //bool hrdArryBind = false; try { #region メッセージ if (((BaseDam)this._dam).IsDPQ) { MessageBox.Show(this.RM_GetString("MSG_EXEC_DQP"), caption); } else { MessageBox.Show(this.RM_GetString("MSG_EXEC_SPQ"), caption); } #endregion #region パラメタの設定 DataTable dtParams = ((BaseDam)this._dam).GetParametersFromPARAMTag(); foreach (DataRow dr in dtParams.Rows) { if (((bool)dr[0])) { // ユーザパラメタ ((BaseDam)this._dam).SetUserParameter(dr[1].ToString(), dr[2].ToString()); } else { //通常のパラメタ if (dr[3].ToString() == PubLiteral.VALUE_STR_NULL) { // nullを指定 ((BaseDam)this._dam).SetParameter(dr[1].ToString(), null); } else { // null以外の値を指定 if ((this._dam.GetType() == typeof(DamOraOdp)) & (0 < (int)this.nudNumOfBind.Value) // 2009/09/18-この行 & (dr[2].GetType().ToString().IndexOf("[]") != -1)) // 2009/08/12-この行 { // ODP.NETの配列バインドの場合 // ・ODP.NETで実行されている。 // ・配列バインド数が0より大きい値に設定されている。 // ・パラメタに配列が指定されている。 // ArrayBindCountプロパティを指定 ((DamOraOdp)this._dam).ArrayBindCount = (int)this.nudNumOfBind.Value; // 型情報を取得(ODP.NETの配列バインドでは必須のため) object dbTypeInfo = null; // 推論ロジックで推論できない型の場合は、nullが指定される。 this.InferODPType(((Array)dr[2]).GetValue(0).GetType(), out dbTypeInfo); // 配列バインド(型情報が必要) ((BaseDam)this._dam).SetParameter(dr[1].ToString(), dr[2], dbTypeInfo); } //else if ((this._dam.GetType() == typeof(DamHiRDB)) // & (0 < (int)this.nudNumOfBind.Value) // & (dr[2].GetType().ToString().IndexOf("[]") != -1)) //{ // // HiRDBデータプロバイダの配列バインドの場合 // // ・HiRDBデータプロバイダで実行されている。 // // ・配列バインド数が0より大きい値に設定されている。 // // ・パラメタに配列が指定されている。 // // HiRDBデータプロバイダの場合、NonQueryのオーバーロード // // に配列バインド数を指定するのでフラグを立てておく。 // hrdArryBind = true; // // 型の推論の有・無 // if (this.cbxType.Checked == true) // { // // 型の推論(有) // // 型情報を取得 // object dbTypeInfo = null; // // HiRDBデータプロバイダの型情報を推論 // // 推論不明(マニュアル無し) // // 配列パラメタを設定(型情報・有) // ((BaseDam)this._dam).SetParameter(dr[1].ToString(), dr[2], dbTypeInfo); // } // else // { // // 型の推論(無) // // 配列パラメタを設定(型情報・無) // ((BaseDam)this._dam).SetParameter(dr[1].ToString(), dr[2]); // } //} else { // 通常の場合 // 型の推論の有・無 if (this.cbxType.Checked == true) { // 型の推論(有) // 型情報を取得 object dbTypeInfo = null; if (this._dam.GetType() == typeof(DamSqlSvr)) { // sqlClientの型情報を推論 this.InferSQLType(dr[2].GetType(), out dbTypeInfo); } else if (this._dam.GetType() == typeof(DamOLEDB)) { // OLEDBの型情報を推論 this.InferOLEType(dr[2].GetType(), out dbTypeInfo); } else if (this._dam.GetType() == typeof(DamODBC)) { // ODBCの型情報を推論 this.InferODBType(dr[2].GetType(), out dbTypeInfo); } else if (this._dam.GetType() == typeof(DamOraClient)) { // Oracle Clientの型情報を推論 this.InferORAType(dr[2].GetType(), out dbTypeInfo); } else if (this._dam.GetType() == typeof(DamOraOdp)) { // ODP.NETの型情報を推論 this.InferODPType(dr[2].GetType(), out dbTypeInfo); } else if (this._dam.GetType() == typeof(DamDB2)) { // DB2.NETの型情報を推論 this.InferDB2Type(dr[2].GetType(), out dbTypeInfo); } // HiRDBデータプロバイダ、MySQL Connector/NET、PostgreSQL Npgsql // については、推論不明(マニュアル無し)。推論非対応。 // パラメタを設定(型情報・有) ((BaseDam)this._dam).SetParameter(dr[1].ToString(), dr[2], dbTypeInfo); } else { // 型の推論(無) // パラメタを設定(型情報・無) ((BaseDam)this._dam).SetParameter(dr[1].ToString(), dr[2]); } } } } } #endregion // 2009/09/25-start // 性能測定-開始 prfRec = new PerformanceRecorder(); prfRec.StartsPerformanceRecord(); // 2009/09/25-end if (this.cmbSelTxCtrl.SelectedItem.ToString() == Literal.COMMIT_MODE_AUTO) { // トランザクションの開始 ((BaseDam)this._dam).BeginTransaction(this.SelectIso()); } #region SQLの実行 // 検索 DataSet ds = new DataSet(); if (this.cmbSelMethod.SelectedItem.ToString() == Literal.METHOD_DATA_TABLE) { // DataTable // DataTableを生成 DataTable dt = new DataTable(); // Select ((BaseDam)this._dam).ExecSelectFill_DT(dt); // DataSetに追加 ds.Tables.Add(dt); } else if (this.cmbSelMethod.SelectedItem.ToString() == Literal.METHOD_DATA_SET) { // DataSet // Select ((BaseDam)this._dam).ExecSelectFill_DS(ds); // DataTableが無い場合 if (ds.Tables.Count == 0) { // DataTableを生成 ds.Tables.Add(new DataTable()); } } else if (this.cmbSelMethod.SelectedItem.ToString() == Literal.METHOD_SCALAR) { // Scalar // DataTableを生成 DataTable dt = new DataTable(); // Select object obj = ((BaseDam)this._dam).ExecSelectScalar(); // DataTableに設定する。 dt.Columns.Add("Scalar"); DataRow dr = dt.NewRow(); dr["Scalar"] = obj; dt.Rows.Add(dr); // DataSetに追加 ds.Tables.Add(dt); } else if (this.cmbSelMethod.SelectedItem.ToString() == Literal.METHOD_NON_QUERY) { // NonQuery // DataTableを生成 DataTable dt = new DataTable(); // insert、update、delete int i = 0; //if (hrdArryBind) //{ // // HiRDBの配列バインドの場合 // i = ((DamHiRDB)this._dam).ExecInsUpDel_NonQuery((int)this.nudNumOfBind.Value); //} //else //{ // HiRDBの配列バインドでない場合 i = ((BaseDam)this._dam).ExecInsUpDel_NonQuery(); //} // DataTableに設定する。 dt.Columns.Add("Number of effect"); DataRow dr = dt.NewRow(); dr["Number of effect"] = i; dt.Rows.Add(dr); // DataSetに追加 ds.Tables.Add(dt); } else { // ありえん } #endregion if (this.cmbSelTxCtrl.SelectedItem.ToString() == Literal.COMMIT_MODE_AUTO) { // トランザクションのコミット ((BaseDam)this._dam).CommitTransaction(); } // 2009/09/25-start // 性能情報を出力 log += this.RM_GetString("PerformanceExecution") + "\r\n"; log += prfRec.EndsPerformanceRecord() + "\r\n\r\n"; // 2009/09/25-end #region SQLの実行(DataReader独自) // DataReaderの場合は、トランザクションをコミットしてから if (this.cmbSelMethod.SelectedItem.ToString() == Literal.METHOD_DATA_READER) { // DataReader // Select IDataReader idr = (IDataReader)((BaseDam)this._dam).ExecSelect_DR(); // DataTableのスキーマを取得 DataTable dtSchema = idr.GetSchemaTable(); // スキーマからDataTableを作成 DataTable dt = new DataTable(); if (dtSchema != null) { // スキーマあり(参照系のSQLでは、こちらになる) foreach (DataRow drSchema in dtSchema.Rows) { dt.Columns.Add(drSchema[0].ToString()); } // DataReaderからDataTableにデータを移動 while (idr.Read()) { // DataRowに設定する。 DataRow dr = dt.NewRow(); foreach (DataColumn dc in dt.Columns) { dr[dc] = idr[dc.ColumnName]; } // DataTableに設定する。 dt.Rows.Add(dr); } } else { // スキーマなし(更新系のSQLでは、こちらになる) } // 終了したらクローズ idr.Close(); // DataSetに追加 ds.Tables.Add(dt); //// マニュアルの場合はコミット or ロールバックが必要 //if (this.cmbSelTxCtrl.SelectedItem.ToString() == Literal.COMMIT_MODE_MANUAL) //{ // // MANUALの場合 // // トランザクションをコミットするかを選択可能とする。 // DialogResult dlgRet = MessageBox.Show( // "トランザクションをコミットします。", // "DataReaderの場合", MessageBoxButtons.YesNo); // if (dlgRet == DialogResult.Yes) // { // // トランザクションのコミット // //((BaseDam)this._dam).CommitTransaction(); // this.btnCommitTx_Click(sender, e); // // メッセージを表示する // MessageBox.Show(Literal.MSG_TRANSACTION_COMMITED); // } // else if (dlgRet == DialogResult.No) // { // // トランザクションのロールバック // //((BaseDam)this._dam).RollbackTransaction(); // this.btnRollbackTx_Click(sender, e); // // メッセージを表示する // MessageBox.Show(Literal.MSG_TRANSACTION_ROLLBACKED); // } // else // { // // ありえん // } //} } #endregion #region 結果表示(正常時) // 2009/09/16-start // 【SQL】タブ // 実行したSQLを取得 sql = ((BaseDam)this._dam).GetCurrentQuery(); // 【LOG】タブ // ログ出力されるSQLを出力 log += this.RM_GetString("LogOutputText") + "\r\n"; log += ((BaseDam)this._dam).GetCurrentQueryForLog(); // 2009/09/16-end // 取得した結果セットを表示 foreach (DataTable dt in ds.Tables) { Form2 viw = new Form2(); // プロパティを設定 viw._dt = dt; viw._sql = sql; viw._log = log; // 表示位置 viw.StartPosition = FormStartPosition.CenterParent; // 表示 viw.Show(this); } #endregion } catch (Exception Ex) { if (this.cmbSelTxCtrl.SelectedItem.ToString() == Literal.COMMIT_MODE_AUTO) { // トランザクションのロールバック ((BaseDam)this._dam).RollbackTransaction(); } #region 結果表示(異常時) // メッセージを表示する MessageBox.Show(Ex.Message); // 一応結果を表示 // 2009/09/16-start // 【SQL】タブ // 実行したSQLを取得 sql = ((BaseDam)this._dam).GetCurrentQuery(); // 【LOG】タブ // ログ出力されるSQLを出力 log += this.RM_GetString("LogOutputText") + "\r\n"; log += ((BaseDam)this._dam).GetCurrentQueryForLog(); // 2009/09/16-end // エラーとなったSQLを表示 Form2 viw = new Form2(); // プロパティを設定 viw._dt = new DataTable(); viw._sql = sql; viw._log = log; // 表示位置 viw.StartPosition = FormStartPosition.CenterParent; // 表示 viw.Show(this); #endregion } finally { // 実行中はトランザクションの制御方式を変更できないようにする。 this.groupBoxTx.Enabled = true; // クエリ実行完了 ((ToolStripStatusLabel)this.statBar.Items[0]).Text = this.RM_GetString("STATUS_QUERY_EXECED"); } }
/// <summary> /// ⑥ ページの実行を開始する直前に発生 /// </summary> void Application_OnPreRequestHandlerExecute(object sender, EventArgs e) { // ------------ // メッセージ部 // ------------ // ユーザ名, IPアドレス, レイヤ, // 画面名, コントロール名, メソッド名, 処理名 // ------------ string strLogMessage = "," + "-" + "," + Request.UserHostAddress + "," + "-----↓" + "," + "Global.asax" + "," + "Application_OnPreRequest"; // Log4Netへログ出力 LogIF.DebugLog("ACCESS", strLogMessage); // ------------------------------------------------------------- // 性能測定開始 this.perfRec = new PerformanceRecorder(); this.perfRec.StartsPerformanceRecord(); }
/// <summary>例外処理</summary> protected override void UOC_ABEND(Exception ex) { // 性能測定終了 // イベント処理開始前にエラーが発生した場合は、 // this.perfRecがnullの場合があるので、null対策コードを挿入する。 if (this.perfRec == null) { // nullの場合、新しいインスタンスを生成し、性能測定開始。 this.perfRec = new PerformanceRecorder(); perfRec.StartsPerformanceRecord(); } this.perfRec.EndsPerformanceRecord(); // ACCESSログ出力----------------------------------------------- if (MyBaseAsyncFunc.CanOutPutLog) { // ------------ // メッセージ部 // ------------ // ユーザ名, レイヤ, 画面名, コントロール名, // 処理時間(実行時間), 処理時間(CPU時間) // エラーメッセージ等 // ------------ string strLogMessage = "," + "-" + "," + "*-----" + "," + this.UIElementName + "," + this.AsyncFunc.Method.Name + "," + this.perfRec.ExecTime + "," + this.perfRec.CpuTime + "," + ex.Message; // Log4Netへログ出力 LogIF.WarnLog("ACCESS", strLogMessage); } // ------------------------------------------------------------- }
/// <summary>SQL実行開始処理を実装する共通UOCメソッド</summary> /// <remarks>業務コード親クラス1から利用される派生の末端</remarks> protected override void UOC_PreQuery() { // 性能測定開始 this.perfRec = new PerformanceRecorder(); this.perfRec.StartsPerformanceRecord(); }
/// <summary>一般的な例外発生時の処理を実装</summary> /// <param name="ex">例外オブジェクト</param> /// <param name="fxEventArgs">イベントハンドラの共通引数</param> /// <remarks>画面コード親クラス1から利用される派生の末端</remarks> protected override void UOC_ABEND(Exception ex, FxEventArgs fxEventArgs) { // 一般的な例外発生時の処理を実装 // TODO: // 性能測定終了 // イベント処理開始前にエラーが発生した場合は、 // this.perfRecがnullの場合があるので、null対策コードを挿入する。 if (this.perfRec == null) { // nullの場合、新しいインスタンスを生成し、性能測定開始。 this.perfRec = new PerformanceRecorder(); perfRec.StartsPerformanceRecord(); } this.perfRec.EndsPerformanceRecord(); // 認証ユーザ情報を取得する ------------------------------------ this.GetUserInfo(); // ACCESSログ出力----------------------------------------------- // ------------ // メッセージ部 // ------------ // ユーザ名, IPアドレス, // レイヤ, 画面名, コントロール名, 処理名 // 処理時間(実行時間), 処理時間(CPU時間) // エラーメッセージID, エラーメッセージ等 // ------------ string strLogMessage = "," + UserInfo.UserName + "," + Request.UserHostAddress + "," + "<-----" + "," + this.ContentPageFileNoEx + "," + fxEventArgs.ButtonID + "," + "" + "," + this.perfRec.ExecTime + "," + this.perfRec.CpuTime + "," + "other Exception" + "," + ex.Message + "\r\n"; // OriginalStackTrace(ログ出力)の品質向上 if (this.OriginalStackTrace == "") { strLogMessage += ex.StackTrace; } else { strLogMessage += this.OriginalStackTrace; } // Log4Netへログ出力 LogIF.ErrorLog("ACCESS", strLogMessage); // ------------------------------------------------------------- // エラー画面に画面遷移する ------------------------------------ this.TransferErrorScreen(ex); // ------------------------------------------------------------- }
/// <summary>業務例外発生時の処理を実装</summary> /// <param name="baEx">BusinessApplicationException</param> /// <param name="fxEventArgs">イベントハンドラの共通引数</param> /// <remarks>画面コード親クラス1から利用される派生の末端</remarks> protected override void UOC_ABEND(BusinessApplicationException baEx, FxEventArgs fxEventArgs) { // 業務例外発生時の処理を実装 // TODO: // ここに、メッセージの組み立てロジックを実装する。 // メッセージ編集処理 ------------------------------------------ string messageID = baEx.messageID; string messageDescription = ""; // メッセージIDから、対応するメッセージを取得する。 messageDescription = GetMessage.GetMessageDescription(messageID); if (messageDescription == "") { // メッセージが取得できなかった場合 messageDescription = baEx.Message; } else { // メッセージが取得できた場合、 // 必要なら、メッセージに、可変文字列を組み込む。 // 方式は、プロジェクト毎に検討のこと。 messageDescription = messageDescription.Replace("%1", baEx.Message); messageDescription = messageDescription.Replace("%2", baEx.Information); } // ------------------------------------------------------------- // メッセージ表示処理 ------------------------------------------ #region メッセージボックスを使用して表示する場合。 // 「OK」メッセージダイアログの表示処理 this.ShowOKMessageDialog( messageID, messageDescription, FxEnum.IconType.Exclamation, "BusinessApplicationExceptionを使用したダイアログ表示"); #endregion #region マスタ ページ上のラベルに表示する場合。 //// 結果表示するメッセージ エリア //Label label = (Label)this.GetMasterWebControl("Label1"); //label.Text = ""; //// 結果(業務続行可能なエラー) //label.Text = "ErrorMessageID:" + baEx.messageID + "\r\n"; //label.Text += "ErrorMessage:" + baEx.Message + "\r\n"; //label.Text += "ErrorInfo:" + baEx.Information + "\r\n"; #endregion // ------------------------------------------------------------- // 性能測定終了 // イベント処理開始前にエラーが発生した場合は、 // this.perfRecがnullの場合があるので、null対策コードを挿入する。 if (this.perfRec == null) { // nullの場合、新しいインスタンスを生成し、性能測定開始。 this.perfRec = new PerformanceRecorder(); perfRec.StartsPerformanceRecord(); } this.perfRec.EndsPerformanceRecord(); // 認証ユーザ情報を取得する ------------------------------------ this.GetUserInfo(); // ACCESSログ出力----------------------------------------------- // ------------ // メッセージ部 // ------------ // ユーザ名, IPアドレス, // レイヤ, 画面名, コントロール名, 処理名 // 処理時間(実行時間), 処理時間(CPU時間) // エラーメッセージID, エラーメッセージ等 // ------------ string strLogMessage = "," + UserInfo.UserName + "," + Request.UserHostAddress + "," + "<-----" + "," + this.ContentPageFileNoEx + "," + fxEventArgs.ButtonID + "," + "" + "," + this.perfRec.ExecTime + "," + this.perfRec.CpuTime + "," + baEx.messageID + "," + baEx.Message; // Log4Netへログ出力 LogIF.WarnLog("ACCESS", strLogMessage); // ------------------------------------------------------------- }
/// <summary> /// 動的パラメタライズド クエリを /// 通常のパラメタライズド クエリに変換するメソッド /// </summary> /// <param name="paramSign">パラメタの先頭記号(DBMSによって可変)</param> /// <returns>変換後の通常のパラメタライズド クエリ</returns> /// <remarks>派生のDamXXXから利用する。</remarks> protected string Convert(char paramSign) { #if PERFORMANCE_LOG_SWITCH // 2009/09/25-このプリプロセッサ PerformanceRecorder perfRec = null; #endif #region 変換処理 #if PERFORMANCE_LOG_SWITCH // 2009/09/25-このプリプロセッサ perfRec = new PerformanceRecorder(); perfRec.StartsPerformanceRecord(); Debug.WriteLine("ReplaceVALTag(開始)"); #endif // VALタグを対応する値で置換する。 this.ReplaceVALTag(); #if PERFORMANCE_LOG_SWITCH // 2009/09/25-このプリプロセッサ Debug.WriteLine("ReplaceVALTag(終了):" + perfRec.EndsPerformanceRecord()); #endif //#if PERFORMANCE_LOG_SWITCH // 2009/09/25-このプリプロセッサ // perfRec = new PerformanceRecorder(); // perfRec.StartsPerformanceRecord(); // Debug.WriteLine("ProcessJOINTag(開始)"); //#endif // // JOINタグを処理する。 // this.ProcessJOINTag(); //#if PERFORMANCE_LOG_SWITCH // 2009/09/25-このプリプロセッサ // Debug.WriteLine("ProcessJOINTag(終了):" + perfRec.EndsPerformanceRecord()); //#endif #if PERFORMANCE_LOG_SWITCH // 2009/09/25-このプリプロセッサ perfRec = new PerformanceRecorder(); perfRec.StartsPerformanceRecord(); Debug.WriteLine("ProcessINSCOLTag(開始)"); #endif // 2008/12/25---新機能の追加(ここから) // INSCOLタグを処理する。 this.ProcessINSCOLTag(); // 2008/12/25---新機能の追加(ここまで) #if PERFORMANCE_LOG_SWITCH // 2009/09/25-このプリプロセッサ Debug.WriteLine("ProcessINSCOLTag(終了):" + perfRec.EndsPerformanceRecord()); #endif #if PERFORMANCE_LOG_SWITCH // 2009/09/25-このプリプロセッサ perfRec = new PerformanceRecorder(); perfRec.StartsPerformanceRecord(); Debug.WriteLine("ProcessIFTag(開始)"); #endif // IFタグを処理する。 this.ProcessIFTag(paramSign); #if PERFORMANCE_LOG_SWITCH // 2009/09/25-このプリプロセッサ Debug.WriteLine("ProcessIFTag(終了):" + perfRec.EndsPerformanceRecord()); #endif #if PERFORMANCE_LOG_SWITCH perfRec = new PerformanceRecorder(); perfRec.StartsPerformanceRecord(); Debug.WriteLine("ProcessSelectCaseDefaultTag(開始)"); #endif // 2010/09/24---新機能の追加(ここから) // SELECT-CASE-DEFAULTタグを処理する。 this.ProcessSelectCaseDefaultTag(); // 2010/09/24---新機能の追加(ここまで) #if PERFORMANCE_LOG_SWITCH Debug.WriteLine("ProcessSelectCaseDefaultTag(終了):" + perfRec.EndsPerformanceRecord()); #endif #if PERFORMANCE_LOG_SWITCH // 2009/09/25-このプリプロセッサ perfRec = new PerformanceRecorder(); perfRec.StartsPerformanceRecord(); Debug.WriteLine("ProcessLISTTag(開始)"); #endif // LISTタグを処理する。 this.ProcessLISTTag(paramSign); #if PERFORMANCE_LOG_SWITCH // 2009/09/25-このプリプロセッサ Debug.WriteLine("ProcessLISTTag(終了):" + perfRec.EndsPerformanceRecord()); #endif #if PERFORMANCE_LOG_SWITCH // 2009/09/25-このプリプロセッサ perfRec = new PerformanceRecorder(); perfRec.StartsPerformanceRecord(); Debug.WriteLine("ProcessJoinSubWhereTag(開始)"); #endif // JOIN、SUB、WHEREタグを処理する。 this.ProcessJoinSubWhereTag(); // 2010/09/24---JOINタグのネスト条件緩和 #if PERFORMANCE_LOG_SWITCH // 2009/09/25-このプリプロセッサ Debug.WriteLine("ProcessJoinSubWhereTag(終了):" + perfRec.EndsPerformanceRecord()); #endif #if PERFORMANCE_LOG_SWITCH // 2009/09/25-このプリプロセッサ perfRec = new PerformanceRecorder(); perfRec.StartsPerformanceRecord(); Debug.WriteLine("ProcessDELCMATag(開始)"); #endif // 2008/12/24---新機能の追加(ここから) // DELCMAタグを処理する。 this.ProcessDELCMATag(); // 2008/12/24---新機能の追加(ここまで) #if PERFORMANCE_LOG_SWITCH // 2009/09/25-このプリプロセッサ Debug.WriteLine("ProcessDELCMATag(終了):" + perfRec.EndsPerformanceRecord()); #endif #if PERFORMANCE_LOG_SWITCH // 2009/09/25-このプリプロセッサ perfRec = new PerformanceRecorder(); perfRec.StartsPerformanceRecord(); Debug.WriteLine("DeleteParamTag(開始)"); #endif // 実行に不要なPARAMタグを消去する。 this.DeleteParamTag(); #if PERFORMANCE_LOG_SWITCH // 2009/09/25-このプリプロセッサ Debug.WriteLine("DeleteParamTag(終了):" + perfRec.EndsPerformanceRecord()); #endif #endregion // 戻す return this._xml.InnerText; }
/// <summary>フレームワークの対象コントロールイベントの開始処理を実装</summary> /// <param name="rcFxEventArgs">イベントハンドラの共通引数</param> /// <remarks>画面コード親クラス1から利用される派生の末端</remarks> protected override void UOC_PreAction(RcFxEventArgs rcFxEventArgs) { // フレームワークの対象コントロールイベントの開始処理を実装する // TODO: // 権限チェック ------------------------------------------------ // ------------------------------------------------------------- // 閉塞チェック ------------------------------------------------ // ------------------------------------------------------------- // ACCESSログ出力 ---------------------------------------------- if (MyBaseControllerWin.CanOutPutLog) { // ------------ // メッセージ部 // ------------ // ユーザ名, レイヤ, 画面名, コントロール名, // 処理時間(実行時間), 処理時間(CPU時間) // エラーメッセージID, エラーメッセージ等 // ------------ string strLogMessage = "," + UserInfo.UserName + "," + "----->" + "," + this.Name + "," + rcFxEventArgs.ControlName; // Log4Netへログ出力 LogIF.InfoLog("ACCESS", strLogMessage); } // ------------------------------------------------------------- // 性能測定開始 this.perfRec = new PerformanceRecorder(); this.perfRec.StartsPerformanceRecord(); }
/// <summary> /// B層の開始処理を実装 /// </summary> /// <param name="parameterValue">引数クラス</param> /// <remarks>業務コード親クラス1から利用される派生の末端</remarks> protected override void UOC_PreAction(BaseParameterValue parameterValue) { // ACCESSログ出力----------------------------------------------- MyParameterValue myPV = (MyParameterValue)parameterValue; // ------------ // メッセージ部 // ------------ // ユーザ名, IPアドレス, レイヤ, // 画面名, コントロール名, メソッド名, 処理名 // ------------ string strLogMessage = "," + myPV.User.UserName + "," + myPV.User.IPAddress + "," + "----->>" + "," + myPV.ScreenId + "," + myPV.ControlId + "," + myPV.MethodName + "," + myPV.ActionType; // Log4Netへログ出力 LogIF.InfoLog("ACCESS", strLogMessage); // ------------------------------------------------------------- // 性能測定開始 this.perfRec = new PerformanceRecorder(); this.perfRec.StartsPerformanceRecord(); }
public void Initialize() { //New instance of Performance Recorder _performanceRecorder = new PerformanceRecorder(); }