Exemplo n.º 1
0
Arquivo: Engine.cs Projeto: ikvm/test
 public Engine(Env env)
 {
     Logger.debug("开始运算报表,首先取数......");
     _report = env.ReportDefine;
     _cells  = new CellExt1(env);
     _cells.read(_report.Cells);
 }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
Arquivo: Group.cs Projeto: ikvm/test
        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));
        }
Exemplo n.º 4
0
Arquivo: Group.cs Projeto: ikvm/test
        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();
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
Arquivo: Group.cs Projeto: ikvm/test
        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);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
 public CSCurrent(CellExt1 cs)
 {
     this.cellExt1_0 = cs;
 }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
 public virtual DataSet calcDataSet(Env env, string dsName, CellExt1 ecs)
 {
     return(calcDataSet(env, this[dsName], ecs));
 }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 12
0
 public Link(CellExt1 cs)
 {
     base.int_0      = 1;
     this.cellExt1_0 = cs;
 }