Ejemplo n.º 1
0
        protected override void FillUpdateTables(IInputData input)
        {
            base.FillUpdateTables(input);
            foreach (var childInfo in OneToOneTables)
            {
                var resolver = childInfo.Resolver;
                if (!FillingUpdateArgs.Handled.IsHandled(resolver))
                {
                    base.FillUpdateTables(resolver, input, childInfo);
                }
                DataTable table = resolver.HostTable;
                if (table.Rows.Count == 0)
                {
                    switch (childInfo.NoRecordHandler)
                    {
                    case NoRecordHandler.None:
                        break;

                    case NoRecordHandler.Error:
                        TkDebug.ThrowToolkitException(string.Format(ObjectUtil.SysCulture,
                                                                    "一对一子表[{0}]的数据无法对应,请确认", table.TableName), this);
                        break;

                    case NoRecordHandler.EmptyRecord:
                        DataRow row = table.NewRow();
                        table.Rows.Add(row);
                        if (input.Style.Style == PageStyle.Update)
                        {
                            resolver.SetDefaultValue(row);
                        }
                        break;
                    }
                }
            }
        }
Ejemplo n.º 2
0
        protected void SetStateBasedOnCurrent()
        {
            JsonTokenType currentObject = Peek();

            switch (currentObject)
            {
            case JsonTokenType.Object:
                CurrentState = State.Object;
                break;

            case JsonTokenType.Array:
                CurrentState = State.Array;
                break;

            case JsonTokenType.Constructor:
                CurrentState = State.Constructor;
                break;

            case JsonTokenType.None:
                CurrentState = State.Finished;
                break;

            default:
                TkDebug.ThrowToolkitException("将reader状态设置会原先的对象时,碰到一个并不是期望的JsonType: "
                                              + currentObject, this);
                break;
            }
        }
Ejemplo n.º 3
0
        public void AddParameter(string name, ParameterDirection direction, TkDataType type,
                                 int size, object value)
        {
            if (fParamCreated)
            {
                TkDebug.ThrowToolkitException(string.Format(ObjectUtil.SysCulture,
                                                            "存储过程{0}已经执行过了,不能再添加参数了", ProcName), this);
                return;
            }

            StoredProcParameter param = Add(name, direction, type);

            if (size > 0)
            {
                param.Size = size;
            }
            if (value != null)
            {
                param.Value = value;
            }
            fParams.Add(param);
            if (DbUtil.IsInputParameter(direction))
            {
                fInputParams.Add(name, param);
            }
            if (direction != ParameterDirection.Input)
            {
                fOutputParams.Add(name, param);
            }
        }
Ejemplo n.º 4
0
        private static IDisplay GetDisplay(Tk5FieldInfoEx field, IPageData pageData)
        {
            switch (pageData.Style.Style)
            {
            case PageStyle.Insert:
            case PageStyle.Update:
                return(field.Edit.Display.CreateObject());

            case PageStyle.Detail:
                return(field.ListDetail.DetailDisplay.CreateObject());

            case PageStyle.List:
                return(field.ListDetail.ListDisplay.CreateObject());

            default:
                if (MetaDataUtil.StartsWith(pageData.Style, "DetailList"))
                {
                    return(field.ListDetail.ListDisplay.CreateObject());
                }

                TkDebug.ThrowToolkitException(
                    string.Format(ObjectUtil.SysCulture, "当前页面类型是{0},没有可用的Display,请不要使用这种PageMaker",
                                  PageStyleClass.FromStyle(pageData.Style)), field);
                return(null);
            }
        }
Ejemplo n.º 5
0
        public object this[string paramName]
        {
            get
            {
                TkDebug.AssertArgumentNullOrEmpty(paramName, "paramName", this);

                if (fOutputParams.ContainsKey(paramName))
                {
                    return(fOutputParams[paramName].Value);
                }
                else
                {
                    TkDebug.ThrowToolkitException(string.Format(ObjectUtil.SysCulture,
                                                                "输出参数中没有名称为{0}的参数", paramName), this);
                }
                return(null);
            }
            set
            {
                TkDebug.AssertArgumentNullOrEmpty(paramName, "paramName", this);

                fValueChanged = true;
                if (fInputParams.ContainsKey(paramName))
                {
                    fInputParams[paramName].Value = value;
                }
                else
                {
                    TkDebug.ThrowToolkitException(string.Format(ObjectUtil.SysCulture,
                                                                "输入参数中没有名称为{0}的参数", paramName), this);
                }
            }
        }
Ejemplo n.º 6
0
        private void CreateStoredProc()
        {
            if (Command == null)
            {
                if (Context != null)
                {
                    fUseContext = true;
                    fConnection = Context.DbConnection;
                    Command     = Context.CreateCommand();
                }
                else if (Connection != null)
                {
                    fConnection = Connection;
                    Command     = Connection.CreateCommand();
                    fUseContext = false;
                }
                else
                {
                    TkDebug.ThrowToolkitException(
                        string.Format(ObjectUtil.SysCulture,
                                      "存储过程{0}没有设定DbConnection或者DbContext,请检查", ProcName), this);
                }

                Command.CommandType = CommandType.StoredProcedure;
                Command.CommandText = ProcName;

                PrepareParameters();
            }
            else
            {
                SetInputValues();
            }
        }
Ejemplo n.º 7
0
        private static object ExecuteScalar(IDbConnection connection, IDbCommand command)
        {
            DbConnectionStatus item   = new DbConnectionStatus(connection);
            object             result = null;

            item.OpenDbConnection();
            try
            {
                result = command.ExecuteScalar();
            }
            catch (Exception ex)
            {
                TkDebug.ThrowToolkitException(string.Format(ObjectUtil.SysCulture,
                                                            "执行SQL:{0}出错", command.CommandText), ex, null);
            }
            finally
            {
                item.CloseDbConnection();
            }
            if (result == null)
            {
                result = DBNull.Value;
            }
            return(result);
        }
Ejemplo n.º 8
0
        internal void ProcessRefField(RegNameList <Tk5FieldInfoEx> fields)
        {
            if (Decoder == null)
            {
                return;
            }

            SimpleFieldDecoder decoder = Decoder as SimpleFieldDecoder;

            if (decoder == null || decoder.RefFields == null)
            {
                return;
            }

            foreach (var refField in decoder.RefFields)
            {
                Tk5FieldInfoEx refFieldInfo = fields[refField.RefField];
                if (refFieldInfo != null)
                {
                    refField.CtrlType = refFieldInfo.InternalControl.Control;
                }
                else
                {
                    TkDebug.ThrowToolkitException(string.Format(ObjectUtil.SysCulture,
                                                                "没有查找到{0}字段的定义,请确认", refField.RefField), this);
                }
            }
        }
Ejemplo n.º 9
0
        public WeRefundRequest(OrderType orderType, string orderId, string outRefundNo, int totalFee, int refundFee)
            : this()
        {
            TkDebug.AssertArgumentNullOrEmpty(orderId, "orderId", null);
            TkDebug.AssertArgumentNullOrEmpty(outRefundNo, "outRefundNo", null);

            switch (orderType)
            {
            case OrderType.TransactionId:
                TransactionId = orderId;
                break;

            case OrderType.OutTradeNo:
                OutTradeNo = orderId;
                break;

            case OrderType.OutRefundNo:
            case OrderType.RefundId:
                TkDebug.ThrowToolkitException(string.Format(ObjectUtil.SysCulture,
                                                            "当前不支持{0}这种枚举,请确认", orderType), null);
                break;
            }

            OutRefundNo = outRefundNo;
            TotalFee    = totalFee;
            RefundFee   = refundFee;
            OpUserId    = MchId;
        }
Ejemplo n.º 10
0
        private void WriteConstructorDate(JsonReader reader)
        {
            if (!reader.Read())
            {
                TkDebug.ThrowToolkitException("在读日期构造函数时,出现非期望的结束", this);
            }
            if (reader.TokenType != JsonToken.Integer)
            {
                TkDebug.ThrowToolkitException("在读日期构造函数时,出现非期望的token。期望整数, 实际是"
                                              + reader.TokenType, this);
            }

            long     ticks = (long)reader.Value;
            DateTime date  = JsonConvert.ConvertJavaScriptTicksToDateTime(ticks);

            if (!reader.Read())
            {
                TkDebug.ThrowToolkitException("在读日期构造函数时,出现非期望的结束", this);
            }
            if (reader.TokenType != JsonToken.EndConstructor)
            {
                TkDebug.ThrowToolkitException("在读日期构造函数时,出现非期望的token。期望结束构造函数, 实际是"
                                              + reader.TokenType, this);
            }

            WriteValue(date);
        }
Ejemplo n.º 11
0
        public object GetItem(string key, BaseCacheItemCreator creator, params object[] args)
        {
            object result = null;

            ICacheDataConverter converter = GetDataConverter(creator);

            var distributeKey = GetDistributeKey(creator, key);

            if (GetCacheInstance(distributeKey, converter, out var cacheObject))
            {
                return(cacheObject);
            }
            try
            {
                result = creator.Create(key, args);
                TkDebug.AssertNotNull(result, string.Format(ObjectUtil.SysCulture,
                                                            "类型为{0}缓存对象创建者没有创建缓存对象,请确认",
                                                            creator.GetType()), creator);
            }
            catch (Exception ex)
            {
                TkDebug.ThrowToolkitException(string.Format(ObjectUtil.SysCulture,
                                                            "类型为{0}缓存对象创建者在创建对象时发生例外,请检查原因",
                                                            creator.GetType()), ex, creator);
            }
            ICacheDependency           dependency           = CacheUtil.SearchDependency(result);
            IDistributeCacheDependency distributeDependency = dependency as IDistributeCacheDependency;

            TkDebug.AssertNotNull(distributeDependency,
                                  $"附着的ICacheDependency(类型为{dependency.GetType()})不支持IDistributeCacheDependency", dependency);
            AddCacheInstance(distributeKey, result, converter, distributeDependency,
                             creator.Attribute.ForceCache);
            return(result);
        }
Ejemplo n.º 12
0
        public override OutputData DoAction(IInputData input)
        {
            PageStyle style = input.Style.Style;
            KeyData   data  = null;

            if (style == PageStyle.Delete)
            {
                try
                {
                    Prepare();
                    data = DoDeleteAction(input);
                }
                catch (WebPostException ex)
                {
                    return(OutputData.CreateToolkitObject(ex.CreateErrorResult()));
                }
            }
            else
            {
                TkDebug.ThrowToolkitException(string.Format(ObjectUtil.SysCulture,
                                                            "当前支持页面类型为Delete,当前类型是{0}", input.Style), this);
            }

            return(OutputData.CreateToolkitObject(data));
        }
Ejemplo n.º 13
0
        /// <summary>
        /// 更新数据
        /// </summary>
        /// <param name="postDataSet">提交的数据集</param>
        public void Update(DataSet postDataSet, IInputData inputData)
        {
            TkDebug.AssertArgumentNull(postDataSet, "postDataSet", this);

            DataTable postTable = postDataSet.Tables[TableName];

            switch (UpdateMode)
            {
            case UpdateMode.OneRow:
                if (postTable == null)
                {
                    return;
                }
                CopyUpdateTable(postTable, inputData);
                break;

            case UpdateMode.DelIns:
                if (IsFakeDelete)
                {
                    TkDebug.ThrowToolkitException("DelIns模式下,不支持FakeDelete操作", this);
                }
                CopyDelInsTable(postTable, postDataSet, inputData);
                break;

            case UpdateMode.Merge:
                if (IsFakeDelete)
                {
                    TkDebug.ThrowToolkitException("Merge模式下,不支持FakeDelete操作", this);
                }
                CopyMergeTable(postTable, postDataSet, inputData);
                break;
            }
        }
Ejemplo n.º 14
0
        public object GetItem(string key, BaseCacheItemCreator creator, params object[] args)
        {
            object result = null;

            object cacheObject;

            if (GetCacheInstance(key, out cacheObject))
            {
                return(cacheObject);
            }
            try
            {
                result = creator.Create(key, args);
                TkDebug.AssertNotNull(result, string.Format(ObjectUtil.SysCulture,
                                                            "类型为{0}缓存对象创建者没有创建缓存对象,请确认",
                                                            creator.GetType()), creator);
            }
            catch (Exception ex)
            {
                TkDebug.ThrowToolkitException(string.Format(ObjectUtil.SysCulture,
                                                            "类型为{0}缓存对象创建者在创建对象时发生例外,请检查原因",
                                                            creator.GetType()), ex, creator);
            }
            AddCacheInstance(key, result, CacheUtil.SearchDependency(result),
                             creator.Attribute.ForceCache);
            return(result);
        }
Ejemplo n.º 15
0
        /// <summary>
        /// 计算Sequence的下一个值
        /// </summary>
        /// <param name="name">Sequence的名称</param>
        /// <param name="connection">数据库连接</param>
        /// <returns>该Sequence的下一个数值</returns>
        public static string Execute(string name, IDbConnection connection)
        {
            TkDebug.AssertArgumentNullOrEmpty(name, "name", null);
            TkDebug.AssertArgumentNull(connection, "connection", null);

            try
            {
                return(ExecuteSequence(name, connection));
            }
            catch (Exception ex)
            {
                string sql = string.Format(ObjectUtil.SysCulture,
                                           "SELECT COUNT(*) FROM USER_SEQUENCES WHERE SEQUENCE_NAME = 'S_{0}'", name);
                int count = int.Parse(DbUtil.ExecuteScalar(sql, connection).ToString(),
                                      ObjectUtil.SysCulture);
                if (count == 0)
                {
                    sql = string.Format(ObjectUtil.SysCulture,
                                        "CREATE SEQUENCE S_{0}", name);
                    DbUtil.ExecuteNonQuery(sql, connection);
                    return(ExecuteSequence(name, connection));
                }
                else
                {
                    TkDebug.ThrowToolkitException(
                        string.Format(ObjectUtil.SysCulture,
                                      "系统中存在S_{0}的Sequence,却无法取值,请检查数据库方面的原因", name), ex, null);
                    return(null);
                }
            }
        }
Ejemplo n.º 16
0
        private void ParseConstructor()
        {
            if (MatchValue("new", true))
            {
                if (EatWhitespace(true))
                {
                    while (char.IsLetter(fCurrentChar))
                    {
                        fBuffer.Append(fCurrentChar);
                        MoveNext();
                    }

                    EatWhitespace(false);

                    if (fCurrentChar != '(')
                    {
                        TkDebug.ThrowToolkitException(string.Format(ObjectUtil.SysCulture,
                                                                    "在分析建构函数时,遇见非法字符: {0}. 在第{1}行, 第{2}列.",
                                                                    fCurrentChar, fCurrentLineNumber, fCurrentLinePosition), this);
                    }

                    string constructorName = fBuffer.ToString();
                    fBuffer.Position = 0;

                    SetToken(JsonToken.StartConstructor, constructorName);
                }
            }
        }
Ejemplo n.º 17
0
 private void AssertRead()
 {
     if (!fReader.Read())
     {
         TkDebug.ThrowToolkitException(
             "需要读取Json数据时,却无法读出,请确认数据是否完整", this);
     }
 }
Ejemplo n.º 18
0
        private void AutoCompleteClose(JsonToken tokenBeingClosed)
        {
            // write closing symbol and calculate new state

            int levelsToComplete = 0;

            for (int i = 0; i < fTop; i++)
            {
                int currentLevel = fTop - i;

                if (fStack[currentLevel] == GetTypeForCloseToken(tokenBeingClosed))
                {
                    levelsToComplete = i + 1;
                    break;
                }
            }

            TkDebug.Assert(levelsToComplete != 0, "No token to close.", this);
            //if (levelsToComplete == 0)
            //    throw new JsonWriterException("");

            for (int i = 0; i < levelsToComplete; i++)
            {
                JsonToken token = GetCloseTokenForType(Pop());

                if (fCurrentState != State.ObjectStart && fCurrentState != State.ArrayStart)
                {
                    WriteIndent();
                }

                WriteEnd(token);
            }

            JsonTokenType currentLevelType = Peek();

            switch (currentLevelType)
            {
            case JsonTokenType.Object:
                fCurrentState = State.Object;
                break;

            case JsonTokenType.Array:
                fCurrentState = State.Array;
                break;

            case JsonTokenType.Constructor:
                fCurrentState = State.Array;
                break;

            case JsonTokenType.None:
                fCurrentState = State.Start;
                break;

            default:
                TkDebug.ThrowToolkitException("非期望的JSON类型: " + currentLevelType, this);
                break;
            }
        }
Ejemplo n.º 19
0
        string IParamExpression.Execute(string parameter)
        {
            Match match = fExpr.Match(parameter);

            TkDebug.AssertNotNull(match, string.Format(ObjectUtil.SysCulture,
                                                       "参数{0}格式不正确,正确格式为TableName.FieldName[.(number | n [ - number])]" +
                                                       "[#EasySearchRegName],请检查", parameter), this);
            string tableName = match.Groups["Table"].Value;
            string fieldName = match.Groups["Column"].Value;
            string regName   = match.Groups["RegName"].Value;
            int    count     = 0;
            bool   isLast    = true;
            string first     = match.Groups["First"].Value;

            if (!string.IsNullOrEmpty(first))
            {
                isLast = false;
                count  = int.Parse(first, ObjectUtil.SysCulture);
            }
            else
            {
                string lastCount = match.Groups["Count"].Value;
                if (!string.IsNullOrEmpty(lastCount))
                {
                    try
                    {
                        count = int.Parse(lastCount, ObjectUtil.SysCulture);
                    }
                    catch
                    {
                        TkDebug.ThrowToolkitException(string.Format(ObjectUtil.SysCulture,
                                                                    "[n - number]格式中number必须是数字,但是现在不是,它的值是{0}", lastCount), this);
                    }
                }
            }
            DataTable table = fDataSet.Tables[tableName];

            TkDebug.AssertNotNull(table, string.Format(ObjectUtil.SysCulture,
                                                       "宏{0}中定义的表{1}在DataSet中不存在", parameter, tableName), this);
            TkDebug.Assert(table.Columns.Contains(fieldName), string.Format(ObjectUtil.SysCulture,
                                                                            "宏{0}中定义的字段{1}在表中不存在", parameter, fieldName), this);
            int rowCount  = table.Rows.Count;
            int rowNumber = isLast ? rowCount - 1 - count : count;

            TkDebug.Assert(rowNumber >= 0 && rowNumber < rowCount, string.Format(ObjectUtil.SysCulture,
                                                                                 "行号定义错误,当前表中有{0}行记录,而现在行号为{1}", rowCount, rowNumber), this);
            string value = table.Rows[rowNumber][fieldName].ToString();

            if (!string.IsNullOrEmpty(regName))
            {
                //EasySearch easySearch = PlugInFactoryManager.CreateInstance<EasySearch>(
                //    "EasySearch", regName);
                //TkDebug.AssertNotNull(fContext,
                //    "参数宏($)需要Context对象,但是没有从外部对象中找到", this);
                //value = easySearch.Decode(fContext, value);
            }
            return(value);
        }
Ejemplo n.º 20
0
 private void AssertReadState(JsonToken token1, JsonToken token2)
 {
     if (fReader.TokenType != token1 && fReader.TokenType != token2)
     {
         TkDebug.ThrowToolkitException(string.Format(ObjectUtil.SysCulture,
                                                     "Json数据的状态有问题,当前需要的状态是{0}或{1},实际状态却是{2},在第{3}行,第{4}列",
                                                     token1, token2, fReader.TokenType, fReader.CurrentLineNumber, fReader.CurrentLinePosition), this);
     }
 }
Ejemplo n.º 21
0
        internal void AutoComplete(JsonToken tokenBeingWritten)
        {
            int token;

            switch (tokenBeingWritten)
            {
            default:
                token = (int)tokenBeingWritten;
                break;

            case JsonToken.Integer:
            case JsonToken.Float:
            case JsonToken.String:
            case JsonToken.Boolean:
            case JsonToken.Null:
            case JsonToken.Undefined:
            case JsonToken.Date:
            case JsonToken.Bytes:
                // a value is being written
                token = 7;
                break;
            }

            // gets new state based on the current state and what is being written
            State newState = stateArray[token][(int)fCurrentState];

            if (newState == State.Error)
            {
                TkDebug.ThrowToolkitException(string.Format(ObjectUtil.SysCulture,
                                                            "Token {0} in state {1} would result in an invalid JavaScript object.",
                                                            tokenBeingWritten, fCurrentState), this);
            }

            if ((fCurrentState == State.Object || fCurrentState == State.Array ||
                 fCurrentState == State.Constructor) && tokenBeingWritten != JsonToken.Comment)
            {
                WriteValueDelimiter();
            }
            else if (fCurrentState == State.Property)
            {
                if (Formatting == JsonFormatting.Indented)
                {
                    WriteIndentSpace();
                }
            }

            JsonWriteState writeState = WriteState;

            // don't indent a property when it is the first token to be written (i.e. at the start)
            if ((tokenBeingWritten == JsonToken.PropertyName && writeState != JsonWriteState.Start) ||
                writeState == JsonWriteState.Array || writeState == JsonWriteState.Constructor)
            {
                WriteIndent();
            }

            fCurrentState = newState;
        }
Ejemplo n.º 22
0
        public static IParamBuilder CreateInSql(TkDbContext context, IFieldInfo fieldName,
                                                IEnumerable <string> values)
        {
            TkDebug.AssertArgumentNull(fieldName, "fieldName", null);
            TkDebug.AssertArgumentNull(values, "values", null);

            string[] valueArray = values.ToArray();
            if (valueArray.Length == 0)
            {
                return(ParamBuilder.NoResult);
            }

            string seperator = string.Empty;

            switch (fieldName.DataType)
            {
            case TkDataType.String:
                seperator = "\'";
                break;

            case TkDataType.Int:
            case TkDataType.Byte:
            case TkDataType.Short:
            case TkDataType.Double:
            case TkDataType.Long:
                break;

            default:
                TkDebug.ThrowToolkitException(string.Format(ObjectUtil.SysCulture,
                                                            "生成IN SQL语句的字段只支持字符串、整形、浮点三种类型,现在字段{0}类型是{1},不在支持范围",
                                                            fieldName.FieldName, fieldName.DataType), null);
                break;
            }
            var items = from value in valueArray
                        select seperator + StringUtil.EscapeAposString(value) + seperator;
            string insql = string.Join(",", items);
            string field;

            if (context != null)
            {
                field = context.EscapeName(fieldName.FieldName);
            }
            else
            {
                field = fieldName.FieldName;
            }
            string sql = string.Format(ObjectUtil.SysCulture, "{0} IN ({1})",
                                       field, insql);
            InternalParamBuilder builder = new InternalParamBuilder {
                Sql = sql
            };

            return(builder);
        }
Ejemplo n.º 23
0
        //private void AssertReadState(JsonToken token1, JsonToken token2, JsonToken token3)
        //{
        //    if (fReader.TokenType != token1 && fReader.TokenType != token2 && fReader.TokenType != token3)
        //        TkDebug.ThrowToolkitException(string.Format(ObjectUtil.SysCulture,
        //            "Json数据的状态有问题,当前需要的状态是{0}或{1}或{5},实际状态却是{2},在第{3}行,第{4}列",
        //            token1, token2, fReader.TokenType, fReader.CurrentLineNumber, fReader.CurrentLinePosition, token3), this);
        //}

        private void AssertReadState(params JsonToken[] tokens)
        {
            var result = tokens.Any(token => fReader.TokenType == token);

            if (!result)
            {
                string hint    = string.Join("或", tokens);
                string message = $"Json数据的状态有问题,当前需要的状态是{hint},实际状态却是{fReader.TokenType},"
                                 + $"在第{fReader.CurrentLineNumber}行,第{fReader.CurrentLinePosition}列";
                TkDebug.ThrowToolkitException(message, this);
            }
        }
Ejemplo n.º 24
0
        public override bool Read()
        {
            while (true)
            {
                if (fCurrentChar == '\0')
                {
                    if (!MoveNext())
                    {
                        return(false);
                    }
                }

                switch (CurrentState)
                {
                case State.Start:
                case State.Property:
                case State.Array:
                case State.ArrayStart:
                case State.Constructor:
                case State.ConstructorStart:
                    return(ParseValue());

                case State.Complete:
                    break;

                case State.Object:
                case State.ObjectStart:
                    return(ParseObject());

                case State.PostValue:
                    // returns true if it hits
                    // end of object or array
                    if (ParsePostValue())
                    {
                        return(true);
                    }
                    break;

                case State.Closed:
                    break;

                case State.Error:
                    break;

                default:
                    TkDebug.ThrowToolkitException(string.Format(ObjectUtil.SysCulture,
                                                                "不是期望的状态: {0}. 在第{1}行, 第{2}列.",
                                                                CurrentState, fCurrentLineNumber, fCurrentLinePosition), this);
                    break;
                }
            }
        }
Ejemplo n.º 25
0
 private void ParseUndefined()
 {
     if (MatchValue(Undefined, true))
     {
         SetToken(JsonToken.Undefined);
     }
     else
     {
         TkDebug.ThrowToolkitException(string.Format(ObjectUtil.SysCulture,
                                                     "分析undefined值时出错. 在第{0}行, 第{1}列.",
                                                     fCurrentLineNumber, fCurrentLinePosition), this);
     }
 }
Ejemplo n.º 26
0
 private void ParseFalse()
 {
     if (MatchValue(False, true))
     {
         SetToken(JsonToken.Boolean, false);
     }
     else
     {
         TkDebug.ThrowToolkitException(string.Format(ObjectUtil.SysCulture,
                                                     "分析False值时出错. 在第{0}行, 第{1}列.",
                                                     fCurrentLineNumber, fCurrentLinePosition), this);
     }
 }
Ejemplo n.º 27
0
 private void ParseNumberNaN()
 {
     if (MatchValue(NaN, true))
     {
         SetToken(JsonToken.Float, double.NaN);
     }
     else
     {
         TkDebug.ThrowToolkitException(string.Format(ObjectUtil.SysCulture,
                                                     "分析NaN值时出错. 在第{0}行, 第{1}列.",
                                                     fCurrentLineNumber, fCurrentLinePosition), this);
     }
 }
Ejemplo n.º 28
0
 public override string Execute(object[] customData)
 {
     try
     {
         GiveExpressionData(fExpression, customData);
         return(fExpression.Execute());
     }
     catch (Exception ex)
     {
         TkDebug.ThrowToolkitException(string.Format(ObjectUtil.SysCulture,
                                                     "宏(注册关键字{0})在计算表达式时出错,请检查原因", fAttribute.RegName), ex, fExpression);
         return(string.Empty);
     }
 }
Ejemplo n.º 29
0
 protected virtual IContent WritePage(ISource source, IPageData pageData, OutputData outputData)
 {
     fList.Sort(OrderComparer.Comparer);
     foreach (PageMakerInfo item in fList)
     {
         if (item.Function(source, pageData, outputData))
         {
             PrepareWritePage(item.PageMaker, source, pageData, outputData);
             return(item.PageMaker.WritePage(source, pageData, outputData));
         }
     }
     TkDebug.ThrowToolkitException("当前的状态下,没有一个注册的PageMaker满足其条件,请检查条件", this);
     return(null);
 }
Ejemplo n.º 30
0
        public override OutputData DoAction(IInputData input)
        {
            if (MetaDataUtil.StartsWith(input.Style, "DetailList"))
            {
                InputDataProxy proxy = new InputDataProxy(input, (PageStyleClass)PageStyle.List);
                DoListAction(proxy);
                input.CallerInfo.AddInfo(DataSet);

                return(OutputData.Create(DataSet));
            }
            TkDebug.ThrowToolkitException(string.Format(ObjectUtil.SysCulture,
                                                        "当前支持页面类型为CDetailList,当前类型是{0}", input.Style), this);

            return(null);
        }