public bool FetchDataFromCellsMisys(object objCommand, ref object objResult, ref object objError) { Logger.logBegin("FetchDataFromCellsMisys"); const string cnst_CONDITION = "CONDITION:"; string strCommand = objCommand == null ? null : objCommand.ToString(); try { if (string.IsNullOrEmpty(strCommand)) { throw new Exception("objCommand should not be NULL or empty"); } /** check Command **/ /* ' format : ' ROWS_LIMIT:0:0;Code/Name ' ALLROWS;ColumnsName ' CONDITION:COLUMN=A;ColumnName;NOSUB, Example: CONDITION:0=@FO_test;Income;NOSUB ' NOSUB means don't get all sub information, other wise get all sub expanded rows * */ if (!TigerMarsUtil.RegularTest("^CONDITION:", strCommand)) { throw new Exception(string.Format("No supported Command, [{0}]", strCommand)); } //objReflect.GetMember<object>(objDataSrcTmp,"") if (TigerMarsUtil.RegularTest("^" + cnst_CONDITION, strCommand)) { #region CONDITION MODE //CONDITION:COLUMN=A;ColumnName;NOSUB, Example: CONDITION:0=@FO_test;Income;NOSUB if (!TigerMarsUtil.RegularTest(@"CONDITION:\S+=\S{1,};\b\w+\b(;NOSUB){0,1}", strCommand)) { objError = string.Format("RC should match CONDITION:\\b\\w+\\b=\\w+;\\b\\w+\\b(;NOSUB), Command:{0}", strCommand); Logger.Error("FetchDataFromCellsMisys", (string)objError); return false; } string strCmdNoHeader = strCommand.Replace(cnst_CONDITION, ""); string[] arrTargetField = strCmdNoHeader.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries); string strTargetField = arrTargetField[1]; string[] arrCondition = arrTargetField[0].Split(new string[] { "=" }, StringSplitOptions.RemoveEmptyEntries); TreeList objTr = (TreeList)base.SourceControl; CustomTreeList objCTrlst = (CustomTreeList)objTr; object objDataSrcTmp = objCTrlst.DataSource; ReflectorForCSharp objReflect = new ReflectorForCSharp(); CSMPortfolio objPortC = null; CSMPosition objPortCsub = null ; //object objPortfolio = objReflect.GetMember<object>(objDataSrcTmp, "Portfolio"); //CSMPortfolio objPortC = (CSMPortfolio)objPortfolio; //double dIncome = objPortC.GetIncome(); object tmpData = objReflect.GetMember<object>(objTr, "Data"); UnboundData unData = (UnboundData)tmpData; VirtualDataRow objVDataRow = null; bool isFind = false; string strHeadName = ""; int iLevel = -1; double dDat = 0.00; string strResult = "", strTmp=""; for (int i = 0; i < unData.DataList.Count; i++) { objVDataRow = (VirtualDataRow)unData.DataList[i]; objPortC = (CSMPortfolio)(objReflect.GetMember<object>(objVDataRow.VirtualNode, "Portfolio")); iLevel = objPortC.GetLevel(); if ((iLevel<=1)&&(isFind)) { break; } strHeadName = objPortC.GetName()==null?"":objPortC.GetName().ToString(); if (!isFind) { /** Only the root level can be taken as comparison node **/ if (iLevel != 1) continue; if (!TigerMarsUtil.RegularTest(arrCondition[1], strHeadName)) continue; else isFind = true; } switch(strTargetField.ToUpper()) { case "INCOME": dDat = objPortC.GetIncome()*1000; strTmp = dDat.ToString("0."); break; case "NAV": dDat = objPortC.GetNetAssetValue() * 1000; strTmp = dDat.ToString("0."); break; case "RESULT": dDat = objPortC.GetResult() * 1000; strTmp = dDat.ToString("0."); break; case "REALIZED": dDat = objPortC.GetRealised() * 1000; strTmp = dDat.ToString("0."); break; case "BALANCE": dDat = objPortC.GetBalance() * 1000; strTmp = dDat.ToString("0."); break; default: throw new Exception(string.Format("Not supported field :[{0}]", strTargetField)); } if (string.IsNullOrEmpty(strResult)) { strResult = string.Format("[{0}{1}]", strHeadName,FormatStrWithTab(0,strTmp)); } else { strResult = string.Format("{0}\n\r{1}",strResult, string.Format("[{0}{1}]", strHeadName, FormatStrWithTab(0, strTmp))); } for (int j = 0; j < objVDataRow.Children.Count; j++) { //objVDataRow.Children[j]; objPortCsub = (CSMPosition)objReflect.GetMember<object>(objVDataRow.Children[j], "Position"); strHeadName = objVDataRow.Children[j].ToString(); if (objPortCsub == null) continue; switch (strTargetField.ToUpper()) { case "INCOME": dDat = objPortCsub.GetIncome() * 1000; strTmp = dDat.ToString("0."); break; case "NAV": dDat = objPortCsub.GetNetAssetValue() * 1000; strTmp = dDat.ToString("0."); break; case "RESULT": dDat = objPortCsub.GetResult() * 1000; strTmp = dDat.ToString("0."); break; case "REALIZED": dDat = objPortCsub.GetRealised() * 1000; strTmp = dDat.ToString("0."); break; case "BALANCE": dDat = objPortCsub.GetBalance() * 1000; strTmp = dDat.ToString("0."); break; default: throw new Exception(string.Format("Not supported field :[{0}]", strTargetField)); } strResult = string.Format("{0}\n\r{1}", strResult, string.Format("[{0} {1}]", strHeadName, FormatStrWithTab(0, strTmp))); } break; } objResult = strResult; return true; #endregion //CONDTION MODE } objError = string.Format("Unsupported Command formatter:[{0}]", strCommand); return false; } catch (Exception e) { objError = e.Message; Logger.Error("FetchDataFromCellsMisys", string.Format("Errors come across. Exception:[{0}]", e.Message), e); return false; } finally { Logger.logEnd("FetchDataFromCellsMisys"); } }
public bool FetchDataFromCellsMisys(object objCommand, ref object objResult, ref object objError) { Logger.logBegin("FetchDataFromCellsMisys"); const string cnst_CONDITION = "CONDITION:"; string strCommand = objCommand == null ? null : objCommand.ToString(); try { if (string.IsNullOrEmpty(strCommand)) { throw new Exception("objCommand should not be NULL or empty"); } /** check Command **/ /* ' format : * ' ROWS_LIMIT:0:0;Code/Name * ' ALLROWS;ColumnsName * ' CONDITION:COLUMN=A;ColumnName;NOSUB, Example: CONDITION:0=@FO_test;Income;NOSUB * ' NOSUB means don't get all sub information, other wise get all sub expanded rows * */ if (!TigerMarsUtil.RegularTest("^CONDITION:", strCommand)) { throw new Exception(string.Format("No supported Command, [{0}]", strCommand)); } //objReflect.GetMember<object>(objDataSrcTmp,"") if (TigerMarsUtil.RegularTest("^" + cnst_CONDITION, strCommand)) { #region CONDITION MODE //CONDITION:COLUMN=A;ColumnName;NOSUB, Example: CONDITION:0=@FO_test;Income;NOSUB if (!TigerMarsUtil.RegularTest(@"CONDITION:\S+=\S{1,};\b\w+\b(;NOSUB){0,1}", strCommand)) { objError = string.Format("RC should match CONDITION:\\b\\w+\\b=\\w+;\\b\\w+\\b(;NOSUB), Command:{0}", strCommand); Logger.Error("FetchDataFromCellsMisys", (string)objError); return(false); } string strCmdNoHeader = strCommand.Replace(cnst_CONDITION, ""); string[] arrTargetField = strCmdNoHeader.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries); string strTargetField = arrTargetField[1]; string[] arrCondition = arrTargetField[0].Split(new string[] { "=" }, StringSplitOptions.RemoveEmptyEntries); TreeList objTr = (TreeList)base.SourceControl; CustomTreeList objCTrlst = (CustomTreeList)objTr; object objDataSrcTmp = objCTrlst.DataSource; ReflectorForCSharp objReflect = new ReflectorForCSharp(); CSMPortfolio objPortC = null; CSMPosition objPortCsub = null; //object objPortfolio = objReflect.GetMember<object>(objDataSrcTmp, "Portfolio"); //CSMPortfolio objPortC = (CSMPortfolio)objPortfolio; //double dIncome = objPortC.GetIncome(); object tmpData = objReflect.GetMember <object>(objTr, "Data"); UnboundData unData = (UnboundData)tmpData; VirtualDataRow objVDataRow = null; bool isFind = false; string strHeadName = ""; int iLevel = -1; double dDat = 0.00; string strResult = "", strTmp = ""; for (int i = 0; i < unData.DataList.Count; i++) { objVDataRow = (VirtualDataRow)unData.DataList[i]; objPortC = (CSMPortfolio)(objReflect.GetMember <object>(objVDataRow.VirtualNode, "Portfolio")); iLevel = objPortC.GetLevel(); if ((iLevel <= 1) && (isFind)) { break; } strHeadName = objPortC.GetName() == null?"":objPortC.GetName().ToString(); if (!isFind) { /** Only the root level can be taken as comparison node **/ if (iLevel != 1) { continue; } if (!TigerMarsUtil.RegularTest(arrCondition[1], strHeadName)) { continue; } else { isFind = true; } } switch (strTargetField.ToUpper()) { case "INCOME": dDat = objPortC.GetIncome() * 1000; strTmp = dDat.ToString("0."); break; case "NAV": dDat = objPortC.GetNetAssetValue() * 1000; strTmp = dDat.ToString("0."); break; case "RESULT": dDat = objPortC.GetResult() * 1000; strTmp = dDat.ToString("0."); break; case "REALIZED": dDat = objPortC.GetRealised() * 1000; strTmp = dDat.ToString("0."); break; case "BALANCE": dDat = objPortC.GetBalance() * 1000; strTmp = dDat.ToString("0."); break; default: throw new Exception(string.Format("Not supported field :[{0}]", strTargetField)); } if (string.IsNullOrEmpty(strResult)) { strResult = string.Format("[{0}{1}]", strHeadName, FormatStrWithTab(0, strTmp)); } else { strResult = string.Format("{0}\n\r{1}", strResult, string.Format("[{0}{1}]", strHeadName, FormatStrWithTab(0, strTmp))); } for (int j = 0; j < objVDataRow.Children.Count; j++) { //objVDataRow.Children[j]; objPortCsub = (CSMPosition)objReflect.GetMember <object>(objVDataRow.Children[j], "Position"); strHeadName = objVDataRow.Children[j].ToString(); if (objPortCsub == null) { continue; } switch (strTargetField.ToUpper()) { case "INCOME": dDat = objPortCsub.GetIncome() * 1000; strTmp = dDat.ToString("0."); break; case "NAV": dDat = objPortCsub.GetNetAssetValue() * 1000; strTmp = dDat.ToString("0."); break; case "RESULT": dDat = objPortCsub.GetResult() * 1000; strTmp = dDat.ToString("0."); break; case "REALIZED": dDat = objPortCsub.GetRealised() * 1000; strTmp = dDat.ToString("0."); break; case "BALANCE": dDat = objPortCsub.GetBalance() * 1000; strTmp = dDat.ToString("0."); break; default: throw new Exception(string.Format("Not supported field :[{0}]", strTargetField)); } strResult = string.Format("{0}\n\r{1}", strResult, string.Format("[{0} {1}]", strHeadName, FormatStrWithTab(0, strTmp))); } break; } objResult = strResult; return(true); #endregion //CONDTION MODE } objError = string.Format("Unsupported Command formatter:[{0}]", strCommand); return(false); } catch (Exception e) { objError = e.Message; Logger.Error("FetchDataFromCellsMisys", string.Format("Errors come across. Exception:[{0}]", e.Message), e); return(false); } finally { Logger.logEnd("FetchDataFromCellsMisys"); } }
/* /// <summary> /// To change Window messages filter, implement this method. /// The default implementation is to get only the /// Control's window messages. /// </summary> public override WND_MsgFilter GetWndMessageFilter() { return WND_MsgFilter.WND_MSGS; } /// <summary> /// To catch window messages, implement this method. /// This method is called only if the CustomServer is running /// in the QuickTest context. /// </summary> public override RecordStatus OnMessage(ref Message tMsg) { // TODO: Add OnMessage implementation. return RecordStatus.RECORD_HANDLED; } */ /* public void OnMouseDown(object sender, System.Windows.Forms.MouseEventArgs e) { // This example shows how to create a script line in QuickTest // when a MouseDown event is encountered during recording. if(e.Button == System.Windows.Forms.MouseButtons.Left) { RecordFunction( "CustomMouseDown", RecordingMode.RECORD_SEND_LINE, e.X, e.Y); } } */ /* public void CustomMouseDown(int X, int Y) { MouseClick(X, Y, MOUSE_BUTTON.LEFT_MOUSE_BUTTON); } */ //private bool FindNodeBySettings(TreeListNode objOneItem, int iDepths, int iCurrentLevel, string[] arrSearchItems, int iColumnId) //{ // Logger.logBegin("FindNodeBySettings"); // if (objOneItem == null) // { // Logger.Error("FindNodeBySettings", "Sub-nodes are null"); // return false; // } // TreeListNode objTmp = null ; // while ((objTmp = objOneItem.NextNode) != null) // { // if (TigerMarsUtil.RegularTest(arrSearchItems[iCurrentLevel], objTmp.GetValue(iColumnId).ToString())) // { // Logger.Info("FindNodeBySettings", string.Format("find matched value :[{0}], Level:[{1}]", objTmp.GetValue(iColumnId).ToString(), iCurrentLevel)); // iCurrentLevel += 1; // if (iCurrentLevel == iDepths) return true; // if (objTmp.HasChildren) return FindNodeBySettings(objTmp.Nodes // } // } // Logger.logEnd("FindNodeBySettings"); // return false; //} #endregion Other #if _sophis7_ private bool FindNodeBySettings_Sophis(Sophis.Util.GUI.CustomTreeList objTreeList, int iDepths, int iCurrentDep, string[] arrNodeSearchItems, ref TreeListNode objCurrentNode, int iColumn) { Logger.logBegin("FindNodeBySettings_Sophis"); ReflectorForCSharp objReflector = new ReflectorForCSharp(); try { TreeListData objData = objReflector.GetMember<TreeListData>(objTreeList, "Data"); if (objData == null) { Logger.Info("FindNodeBySettings_Sophis", "Can't get Data from object instance via reflection."); return false; } if (objData.DataList == null) { Logger.Info("FindNodeBySettings_Sophis", "DataList is null"); return false; } /** + virtualDataHelper {Sophis.Util.GUI.CustomTLVDH} DevExpress.XtraTreeList.TreeList.TreeListVirtualDataHelper {Sophis.Util.GUI.CustomTLVDH} * - objData.DataHelper {DevExpress.XtraTreeList.Data.TreeListDataHelper} DevExpress.XtraTreeList.Data.TreeListDataHelper object o = objData.GetValue(0, 0); string strCellDis = objTreeList.Nodes[0].GetDisplayText(objTreeList.Columns[0]) ; object or = objData.GetDataRow(objTreeList.Nodes[0].Id); strCellDis = objData.GetDisplayText(objTreeList.Nodes[0].Id, objTreeList.Columns[0].AbsoluteIndex, objTreeList.Nodes[0]); object oc = objReflector.GetMember<object>(objTreeList, "CurrencyManager"); object ov = objReflector.CallPrivateMethod<object>(objTreeList, "GetNodeValue", new object[] {objTreeList.Nodes[0],objTreeList.Columns[0] }); object objHelper0 = objReflector.GetMember<object>(objTreeList, "VirtualDataHelper"); object objHelper2 = objReflector.GetPrivateProperty<object>(objTreeList, "VirtualDataHelper"); TreeList.TreeListVirtualDataHelper objDataHelper = (TreeList.TreeListVirtualDataHelper)(objHelper0) ; object objCellData = objDataHelper.GetCellDataViaEvent(((VirtualDataRow)objData.DataList[0]).Node, objTreeList.Columns[0]); objCellData = objDataHelper.GetCellDataViaEvent(objTreeList.Nodes[0], objTreeList.Columns[0]); objCellData = objDataHelper.GetCellDataViaInterface(((VirtualDataRow)objData.DataList[0]).Node, objTreeList.Columns[0], null); objCellData = objDataHelper.GetCellDataViaInterface(objTreeList.Nodes[0], objTreeList.Columns[0], null); object value = typeof(TreeListVirtualData).GetField("virtualNodeToDataRowCache", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).GetValue(objData); * **/ //DevExpress.XtraTreeList.TreeList.TreeListVirtualDataHelper objHelper1 = objReflector.GetPrivateProperty<DevExpress.XtraTreeList.TreeList.TreeListVirtualDataHelper>(objTreeList, "virtualDataHelper"); //GetCellDataViaEvent for (int i = 0; i < objData.DataList.Count; i++) { object objRawItem = objData.DataList[i]; if (!(objRawItem is VirtualDataRow)) { /** I don't know what it could be **/ continue; } VirtualDataRow objRow = (VirtualDataRow)objRawItem; if (objRow.VirtualNode == null) continue; string strCaption = objRow.VirtualNode.ToString(); if (TigerMarsUtil.RegularTest(arrNodeSearchItems[iCurrentDep], strCaption)) { /** find **/ Logger.Info("FindNodeBySettings_Sophis",string.Format("Find Level [{0}] node information [{1}], with node value is:[{2}]", iCurrentDep, arrNodeSearchItems[iCurrentDep],strCaption)); if (iCurrentDep == iDepths - 1) { objCurrentNode = objTreeList.Nodes[i]; objTreeList.FocusedNode = objTreeList.Nodes[i]; } return true; } } return false; } catch (Exception e) { Logger.Error("FindNodeBySettings_Sophis",string.Format("Exceptions when trying to get data via Reflection. Exception:[{0}]", e.Message),e); return false; } }
private bool FindNodeBySettings_Sophis(Sophis.Util.GUI.CustomTreeList objTreeList, int iDepths, int iCurrentDep, string[] arrNodeSearchItems, ref TreeListNode objCurrentNode, int iColumn) { Logger.logBegin("FindNodeBySettings_Sophis"); ReflectorForCSharp objReflector = new ReflectorForCSharp(); try { TreeListData objData = objReflector.GetMember <TreeListData>(objTreeList, "Data"); if (objData == null) { Logger.Info("FindNodeBySettings_Sophis", "Can't get Data from object instance via reflection."); return(false); } if (objData.DataList == null) { Logger.Info("FindNodeBySettings_Sophis", "DataList is null"); return(false); } /** + virtualDataHelper {Sophis.Util.GUI.CustomTLVDH} DevExpress.XtraTreeList.TreeList.TreeListVirtualDataHelper {Sophis.Util.GUI.CustomTLVDH} * - objData.DataHelper {DevExpress.XtraTreeList.Data.TreeListDataHelper} DevExpress.XtraTreeList.Data.TreeListDataHelper * * * object o = objData.GetValue(0, 0); * string strCellDis = objTreeList.Nodes[0].GetDisplayText(objTreeList.Columns[0]) ; * object or = objData.GetDataRow(objTreeList.Nodes[0].Id); * strCellDis = objData.GetDisplayText(objTreeList.Nodes[0].Id, objTreeList.Columns[0].AbsoluteIndex, objTreeList.Nodes[0]); * object oc = objReflector.GetMember<object>(objTreeList, "CurrencyManager"); * object ov = objReflector.CallPrivateMethod<object>(objTreeList, "GetNodeValue", new object[] {objTreeList.Nodes[0],objTreeList.Columns[0] }); * object objHelper0 = objReflector.GetMember<object>(objTreeList, "VirtualDataHelper"); * object objHelper2 = objReflector.GetPrivateProperty<object>(objTreeList, "VirtualDataHelper"); * TreeList.TreeListVirtualDataHelper objDataHelper = (TreeList.TreeListVirtualDataHelper)(objHelper0) ; * object objCellData = objDataHelper.GetCellDataViaEvent(((VirtualDataRow)objData.DataList[0]).Node, objTreeList.Columns[0]); * objCellData = objDataHelper.GetCellDataViaEvent(objTreeList.Nodes[0], objTreeList.Columns[0]); * objCellData = objDataHelper.GetCellDataViaInterface(((VirtualDataRow)objData.DataList[0]).Node, objTreeList.Columns[0], null); * objCellData = objDataHelper.GetCellDataViaInterface(objTreeList.Nodes[0], objTreeList.Columns[0], null); * object value = typeof(TreeListVirtualData).GetField("virtualNodeToDataRowCache", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).GetValue(objData); * **/ //DevExpress.XtraTreeList.TreeList.TreeListVirtualDataHelper objHelper1 = objReflector.GetPrivateProperty<DevExpress.XtraTreeList.TreeList.TreeListVirtualDataHelper>(objTreeList, "virtualDataHelper"); //GetCellDataViaEvent for (int i = 0; i < objData.DataList.Count; i++) { object objRawItem = objData.DataList[i]; if (!(objRawItem is VirtualDataRow)) { /** I don't know what it could be **/ continue; } VirtualDataRow objRow = (VirtualDataRow)objRawItem; if (objRow.VirtualNode == null) { continue; } string strCaption = objRow.VirtualNode.ToString(); if (TigerMarsUtil.RegularTest(arrNodeSearchItems[iCurrentDep], strCaption)) { /** find **/ Logger.Info("FindNodeBySettings_Sophis", string.Format("Find Level [{0}] node information [{1}], with node value is:[{2}]", iCurrentDep, arrNodeSearchItems[iCurrentDep], strCaption)); if (iCurrentDep == iDepths - 1) { objCurrentNode = objTreeList.Nodes[i]; objTreeList.FocusedNode = objTreeList.Nodes[i]; } return(true); } } return(false); } catch (Exception e) { Logger.Error("FindNodeBySettings_Sophis", string.Format("Exceptions when trying to get data via Reflection. Exception:[{0}]", e.Message), e); return(false); } }