예제 #1
0
        public BaseTypeTest()
        {
            _profile             = new AutoQueryableProfile();
            _queryStringAccessor = new SimpleQueryStringAccessor();
            var selectClauseHandler   = new DefaultSelectClauseHandler();
            var orderByClauseHandler  = new DefaultOrderByClauseHandler();
            var wrapWithClauseHandler = new DefaultWrapWithClauseHandler();
            var clauseMapManager      = new ClauseMapManager(selectClauseHandler, orderByClauseHandler, wrapWithClauseHandler);
            var clauseValueManager    = new ClauseValueManager(selectClauseHandler, orderByClauseHandler, wrapWithClauseHandler);
            var criteriaFilterManager = new CriteriaFilterManager();

            _autoQueryableContext = new AutoQueryableContext(_profile, new AutoQueryHandler(_queryStringAccessor, criteriaFilterManager, clauseMapManager, clauseValueManager));
        }
예제 #2
0
        private void _getClauses <T>(IAutoQueryableProfile profile) where T : class
        {
            // Set the defaults to start with, then fill/overwrite with the query string values
            ClauseValueManager.SetDefaults(typeof(T), profile);
            //var clauses = new List<Clause>();
            foreach (var q in _queryStringAccessor.QueryStringParts.Where(q => !q.IsHandled))
            {
                var clauseQueryFilter = _clauseMapManager.FindClauseQueryFilter(q.Value);
                if (clauseQueryFilter != null)
                {
                    var operandValue = _getOperandValue(q.Value, clauseQueryFilter.Alias);
                    var value        = clauseQueryFilter.ParseValue(operandValue, typeof(T), profile);
                    var propertyInfo = ClauseValueManager.GetType().GetProperty(clauseQueryFilter.ClauseType.ToString());
                    if (propertyInfo.PropertyType == typeof(bool))
                    {
                        value = bool.Parse(value.ToString());
                    }

                    propertyInfo.SetValue(ClauseValueManager, value);
                    //clauses.Add(new Clause(clauseQueryFilter.ClauseType, value, clauseQueryFilter.ValueType));
                }
            }

            if (ClauseValueManager.PageSize != null)
            {
                ClauseValueManager.Top = ClauseValueManager.PageSize;
            }

            if (ClauseValueManager.Page != null)
            {
                //this.Logger.Information("Overwriting 'skip' clause value because 'page' is set");
                // Calculate skip from page if page query param was set
                ClauseValueManager.Top  = ClauseValueManager.Top ?? profile.DefaultToTake;
                ClauseValueManager.Skip = (ClauseValueManager.Page - 1) * ClauseValueManager.Top;
            }



            if (ClauseValueManager.OrderBy == null && profile.DefaultOrderBy != null)
            {
                ClauseValueManager.OrderBy = profile.DefaultOrderBy;
            }

            if (ClauseValueManager.Select.Count == 0)
            {
                _clauseMapManager.GetClauseQueryFilter(ClauseType.Select).ParseValue("", typeof(T), profile);
            }
        }
예제 #3
0
        public FilterTest()
        {
            var settings = new AutoQueryableSettings();

            _profile             = new AutoQueryableProfile(settings);
            _queryStringAccessor = new SimpleQueryStringAccessor();
            var selectClauseHandler     = new DefaultSelectClauseHandler();
            var orderByClauseHandler    = new DefaultOrderByClauseHandler();
            var wrapWithClauseHandler   = new DefaultWrapWithClauseHandler();
            var clauseMapManager        = new ClauseMapManager(selectClauseHandler, orderByClauseHandler, wrapWithClauseHandler);
            var clauseValueManager      = new ClauseValueManager(selectClauseHandler, orderByClauseHandler, wrapWithClauseHandler, _profile);
            var criteriaFilterManager   = new CriteriaFilterManager();
            var defaultAutoQueryHandler = new AutoQueryHandler(_queryStringAccessor, criteriaFilterManager, clauseMapManager, clauseValueManager, _profile);

            _autoQueryableContext = new AutoQueryableContext(defaultAutoQueryHandler);
        }