public Engine(Env env) { Logger.debug("开始运算报表,首先取数......"); _report = env.ReportDefine; _cells = new CellExt1(env); _cells.read(_report.Cells); }
public object calculate(CellExt1 cs, DataSet ds, Env env, string param) { UnitSet set; this.cs = cs; this.ds = ds; this.env = env; string str = (string)ConvertTool.getValue(new ExpParse(cs, ds, env, param).calculate()); if ((str != null) && (str.Trim().Length > 0)) { set = new UnitSet(Escape.removeEscAndQuote(str), true, '&'); } else { set = new UnitSet("", true, '&'); } string expStr = Escape.unescape(set["dataXml"]); object obj2 = ConvertTool.getValue(new ExpParse(cs, ds, env, expStr).calculate()); this.pDataXml = (string)obj2; CellExt current = cs.Current; StringBuilder sb = new StringBuilder(); object obj3 = null; try { obj3 = this.cal(set, sb); } catch (Exception exception) { throw new ReportError("统计图计算异常:" + exception.Message.ToString().ToString(), exception); } return(obj3); }
private ArrayList method_4(ExpParse expParse_0, ExpParse expParse_1) { if (DataSet.DEBUG) { CellExt1 cS = expParse_0.CS; if ((cS != null) && (cS.Current != null)) { if (cS.Current.Source == cS.Current) { Logger.info(cS.Current.SourceId.ToString().ToString() + "分组使用索引"); } } else { Logger.info("分组使用索引"); } } bool flag = false; if (expParse_1 != null) { object obj2 = ConvertTool.getValue(expParse_1.calculate()); if (!(obj2 is bool)) { throw new ReportError("group函数第2个参数应该为空或null或布尔型值"); } flag = (bool)obj2; } return(this.dataSet_0.Index.getGroups(this.btree_0, !flag)); }
private void method_1(ExpParse expParse_0) { Filters fs = expParse_0.getFilters(this); if (DataSet.DEBUG) { bool flag = fs.includeAllFilter(); CellExt1 cS = expParse_0.CS; if ((cS != null) && (cS.Current != null)) { if (cS.Current.Source == cS.Current) { if (flag) { Logger.info(cS.Current.SourceId.ToString().ToString() + "过滤完全使用索引"); } else { Logger.info(cS.Current.SourceId.ToString().ToString() + "过滤时使用索引中遍历"); } } } else if (flag) { Logger.info("过滤完全使用索引"); } else { Logger.info("过滤使用索引中遍历"); } } this.arrayList_0 = this.dataSet_0.Index.getRows(this.btree_0, fs); this.arrayList_0.TrimToSize(); }
public virtual IDictionary calcDataSets(Env env, CellExt1 ecs) { string[] dataSetNames = this.DataSetNames; Hashtable collection = new Hashtable(dataSetNames.Length); for (int i = 0; i < dataSetNames.Length; i++) { DataSet newValue = this.calcDataSet(env, dataSetNames[i], ecs); if (newValue != null) { SupportClass.PutElement(collection, dataSetNames[i], newValue); } } return(collection); }
public Row select1(ExpParse filterExp) { if (filterExp == null) { if (this.arrayList_0.Count != 0) { return((Row)this.arrayList_0[0]); } return(this.dataSet_0.NullRow); } Filters fs = filterExp.getFilters(this); if (fs != null) { if (DataSet.DEBUG) { CellExt1 cS = filterExp.CS; if ((cS == null) || (cS.Current == null)) { Logger.info("单选完全使用索引"); } else if (cS.Current.Source == cS.Current) { Logger.info(cS.Current.SourceId.ToString().ToString() + "单选完全使用索引"); } } Row row2 = this.dataSet_0.Index.getRow(this.btree_0, fs); if (row2 != null) { return(row2); } } else { for (int i = 0; i < this.arrayList_0.Count; i++) { Row row3 = (Row)this.arrayList_0[i]; if (row3.test(filterExp)) { return(row3); } } } return(this.dataSet_0.NullRow); }
private object method_1(ReportDefine reportDefine_0, ArrayList arrayList_0, ArrayList arrayList_1, int int_1) { Env env = new Env(reportDefine_0); Env env2 = base.cs.Env; env.setConnection(env2.getConnection()); env.Request = env2.Request; if ((arrayList_0 != null) && (arrayList_1 != null)) { if (arrayList_0.Count != arrayList_1.Count) { throw new ReportError("子报表参数名列表和参数表达式列表个数不一致"); } for (int i = 0; i < arrayList_0.Count; i++) { string paramName = (string)arrayList_0[i]; object paramValue = arrayList_1[i]; if (paramName != null) { env.putParam(paramName, paramValue); } } } CellExt1 ecs = new CellExt1(env); if (int_1 != 0) { ecs.SubRptType = CellExt1.SRT_IMPORT; } else { ecs.SubRptType = CellExt1.SRT_EMBED; } ecs.read(reportDefine_0.CellSet); CalcReport.calcRpt(reportDefine_0, true, ecs); return(ecs); }
public CSCurrent(CellExt1 cs) { this.cellExt1_0 = cs; }
public static DataSet calcDataSet(Env env, DataSetConfig dsc, CellExt1 ecs) { DataSet set; Hashtable hashtable2; if (dsc == null) { return(null); } switch (dsc.SQLType) { case 7: break; case 8: goto Label_0179; default: { Hashtable hashtable = new Hashtable(); hashtable["dsc"] = dsc; hashtable["ecs"] = ecs; SQLDataSetFactory factory = new SQLDataSetFactory { Properties = hashtable }; try { return(factory.getDataSet(env)); } catch (ReportError error) { throw error; } catch (Exception exception) { throw new ReportError(exception.Message, exception); } break; } } UnitSet set5 = new UnitSet(dsc.SQL, ';'); string s = Escape.removeEscAndQuote(set5["args"]); string str5 = Escape.removeEscAndQuote(set5["class"]); DataSetFactory factory3 = new XMLDataSetFactory(); ArgToken token = new ArgToken(s, ';'); Hashtable collection = new Hashtable(); while (token.hasMoreTokens()) { string str = token.nextToken(); int index = str.IndexOf(","); if (index > 0) { string expStr = Escape.unescape(str.Substring(index + 1, str.Length - (index + 1))); ExpParse parse = new ExpParse(ecs, expStr); SupportClass.PutElement(collection, str.Substring(0, index), ConvertTool.getValue(parse.calculate())); } } factory3.Properties = collection; try { return(factory3.getDataSet(env)); } catch (Exception exception3) { throw new ReportError(exception3.Message, exception3); } Label_0179: hashtable2 = new Hashtable(); hashtable2.Add("dsc", dsc); BuildinDataSetFactory factory2 = new BuildinDataSetFactory { Properties = hashtable2 }; try { set = factory2.getDataSet(env); } catch (Exception exception2) { throw new ReportError(exception2.Message, exception2); } return(set); }
public virtual DataSet calcDataSet(Env env, string dsName, CellExt1 ecs) { return(calcDataSet(env, this[dsName], ecs)); }
public virtual DataSet getDataSet(Env env) { DataSet set3; DataSetConfig config = (DataSetConfig)this.hashtable_0["dsc"]; CellExt1 cs = (CellExt1)this.hashtable_0["ecs"]; string name = config.Name; IDbCommand pst = null; IDataReader rs = null; IDbConnection connection = null; try { bool flag; bool flag2; string dataSourceName = config.DataSourceName; if (dataSourceName != null) { connection = env.getConnection(dataSourceName); if (connection == null) { connection = env.getConnection(); } } else { connection = env.getConnection(); dataSourceName = ""; } if ((connection == null) || (connection.State == null)) { return(null); } if ((dataSourceName != null) && (dataSourceName.Trim().Length != 0)) { flag = env.getIsEncoding(dataSourceName); } else { flag = env.getIsEncoding(); } string dbCharset = env.getDBCharset(dataSourceName); if ((dbCharset == null) || (dbCharset.Trim().Length == 0)) { dbCharset = env.getDBCharset(); } string str = MacroCalc.replaceMacros(config.SQL, env.MacrosMap); if ((dataSourceName != null) && (dataSourceName.Trim().Length != 0)) { flag2 = env.getNeedTransSQLcode(dataSourceName); } else { flag2 = env.getNeedTransSQLcode(); } if (flag2) { str = Encoding.GetEncoding(dbCharset).GetString(Encoding.Default.GetBytes(str)); } string[] sqlArguments = config.SqlArguments; string[] sqlArgumentsName = config.SqlArgumentsName; int[] argumentTypes = config.ArgumentTypes; object[] objArray = null; if (sqlArguments != null) { objArray = new object[sqlArguments.Length]; int num7 = 0; for (int i = 0; i < sqlArguments.Length; i++) { num7 = ExpString.indexOf(str, "?", num7 + 1, 18); if ((sqlArguments[i] != null) && sqlArguments[i].ToLower().Equals("@@result")) { objArray[i] = "@@result"; } else { objArray[i] = ConvertTool.getValue(new ExpParse(cs, sqlArguments[i]).calculate()); if ((objArray[i] != null) && (objArray[i] is ArrayList)) { objArray[i] = ((ArrayList)objArray[i]).ToArray(); if (((((object[])objArray[i]).Length > 0) && (((object[])objArray[i])[0] is string)) && flag2) { for (int j = 0; j < ((object[])objArray[i]).Length; j++) { ((object[])objArray[i])[j] = Convert.ToString(Encoding.GetEncoding(dbCharset).GetBytes((string)((object[])objArray[i])[0])); } } } else if ((objArray[i] is string) && flag2) { objArray[i] = Convert.ToString(Encoding.GetEncoding(dbCharset).GetBytes((string)objArray[i])); } if ((objArray[i] != null) && objArray[i].GetType().IsArray) { int length = ((object[])objArray[i]).Length; StringBuilder builder = new StringBuilder(2 * length); for (int k = 0; k < length; k++) { builder.Append("?,"); } if ((builder.Length > 0) && (builder[builder.Length - 1] == ',')) { builder.Remove(builder.Length - 1, 1); } if (builder.Length > 1) { str = new StringBuilder(str.Substring(0, num7).ToString().ToString()).Append(builder.ToString()).Append(str.Substring(num7 + 1)).ToString().ToString(); } num7 += builder.Length; } } } } Logger.debug("下面开始打出sql"); int num6 = 0; if ((3 != config.SQLType) || (connection is OleDbConnection)) { try { Logger.debug(new StringBuilder(name.ToString().ToString()).Append("=").Append(str).ToString().ToString()); pst = SupportClass.TransactionManager.manager.PrepareStatement(connection, str); goto Label_0472; } catch (Exception exception3) { throw new ReportError(new StringBuilder("数据集").Append(name).Append(" sql异常:").Append(exception3.Message).ToString().ToString(), exception3); } } try { pst = SupportClass.TransactionManager.manager.PrepareCall(connection, str); } catch (Exception exception4) { throw new ReportError(new StringBuilder("数据集").Append(name).Append(" sql异常:").Append(exception4.Message).ToString().ToString(), exception4); } Label_0472: if ((objArray == null) || (objArray.Length <= 0)) { goto Label_06A2; } int index = 0; int num3 = 0; Label_048F: if (num3 >= objArray.Length) { goto Label_06A2; } index++; if ((sqlArguments[num3] == null) || !sqlArguments[num3].ToLower().Equals("@@result")) { goto Label_050E; } if (!(pst is OracleCommand)) { goto Label_0698; } try { OracleParameter parameter = new OracleParameter(); parameter.ParameterName = (sqlArgumentsName[num3]); parameter.OracleType = (OracleType)(5); parameter.Direction = (ParameterDirection)(2); pst.Parameters.Add(parameter); goto Label_0698; } catch (Exception) { goto Label_0698; } Label_0504: num6 = index; goto Label_068D; Label_050E: try { if ((objArray[num3] != null) && objArray[num3].GetType().IsArray) { string msg = new StringBuilder("第").Append(num3).Append("个参数组: ").ToString().ToString(); for (int m = 0; m < ((object[])objArray[num3]).Length; m++) { msg = (msg.ToString() + ((object[])objArray[num3])[m].ToString()).ToString().ToString() + ","; SQLTool.setObject(pst, index, ((object[])objArray[num3])[m], argumentTypes[num3], sqlArgumentsName[num3]); index++; } Logger.debug(msg); index--; } else { Logger.debug(new StringBuilder("第").Append(num3).Append("个参数: ").Append(objArray[num3]).ToString().ToString()); if ((6 == argumentTypes[num3]) && (objArray[num3] == null)) { objArray[num3] = ""; } SQLTool.setObject(pst, index, objArray[num3], argumentTypes[num3], sqlArgumentsName[num3]); } } catch (Exception exception2) { throw new ReportError(new StringBuilder("数据集").Append(name).Append("的sql第").Append(num3 + 1).Append("个参数异常:").Append(exception2.Message).ToString().ToString(), exception2); } Label_068D: num3++; goto Label_048F; Label_0698: if (num6 == 0) { goto Label_0504; } goto Label_068D; Label_06A2: try { rs = pst.ExecuteReader(); } catch (Exception exception) { throw new ReportError(new StringBuilder("数据集").Append(name).Append("的 sql异常:").Append(exception.Message).ToString().ToString(), exception); } string beginRow = config.BeginRow; string endRow = config.EndRow; if (((beginRow == null) || (beginRow.Trim().Length == 0)) || beginRow.Trim().ToUpper().Equals("null".ToUpper())) { beginRow = "0"; } if (((endRow == null) || (endRow.Trim().Length == 0)) || endRow.Trim().ToUpper().Equals("null".ToUpper())) { endRow = "0"; } beginRow = MacroCalc.replaceMacros(beginRow, env.MacrosMap); endRow = MacroCalc.replaceMacros(endRow, env.MacrosMap); int num = 0; int num2 = 0; try { object obj2 = ConvertTool.getValue(new ExpParse(env, beginRow).calculate()); object obj3 = ConvertTool.getValue(new ExpParse(env, endRow).calculate()); if ((obj2 is int) && (obj3 is int)) { num = (int)obj2; num2 = (int)obj3; } } catch (Exception) { throw new ReportError("数据集的起始行或者结束行设置有误。"); } ArrayList fieldText = config.getFieldTextList(); RecordCheck oRecordCheck = new RecordCheck(new ConnectionConfig().getDBOperator(), env.Request, env.Session); DataSet set = DataSetTool.populate(null, rs, num, num2, dbCharset, fieldText, false, flag, oRecordCheck); if ((config.IndexCols != null) && (config.IndexCols.Length > 0)) { set.createIndex(config.IndexCols, config.IndexSorted); } set3 = set; } catch (ReportError error) { throw error; } catch (Exception exception5) { throw new ReportError(exception5.Message, exception5); } finally { try { if (rs != null) { rs.Close(); } if (pst != null) { pst.Dispose(); } } catch (Exception exception6) { throw new ReportError(exception6.Message, exception6); } } return(set3); }
public Link(CellExt1 cs) { base.int_0 = 1; this.cellExt1_0 = cs; }