public IActionResult SaveFilterKey(FilterKey parm)
 {
     RedisHelper.Set(KeyHelper.FilterKey, parm);
     return(Ok(new ApiResult <string>()
     {
     }));
 }
            internal override void TrimInstanceSet(int maxSize, FilterInfo owner)
            {
                int count = base.Count;
                int num   = count;

                if (count <= maxSize)
                {
                    return;
                }
                if (0 < maxSize)
                {
                    for (num = maxSize; num < count && m_comparer.Compare(m_keys[num - 1], m_keys[num]) == 0; num++)
                    {
                    }
                    for (int i = num; i < count; i++)
                    {
                        FilterKey filterKey = m_keys[i];
                        m_values.Remove(filterKey.ValueIndex);
                    }
                    m_keys.RemoveRange(num, count - num);
                    return;
                }
                if (m_keys != null)
                {
                    m_keys.Dispose();
                }
                if (m_values != null)
                {
                    m_values.Dispose();
                }
                m_keys   = null;
                m_values = null;
            }
            internal bool Add(object key, object dataInstance)
            {
                FilterKey filterKey = new FilterKey();

                filterKey.Key = key;
                return(m_dataInstances.Add(filterKey, dataInstance, this));
            }
Exemple #4
0
            public override void TrimInstanceSet(int maxSize, FilterInfo owner)
            {
                int count = base.Count;
                int num   = count;

                if (count > maxSize)
                {
                    if (0 < maxSize)
                    {
                        for (num = maxSize; num < count && base.m_comparer.Compare(base.m_keys[num - 1], base.m_keys[num]) == 0; num++)
                        {
                        }
                        for (int i = num; i < count; i++)
                        {
                            FilterKey filterKey = base.m_keys[i];
                            base.m_values.Remove(filterKey.ValueIndex);
                        }
                        base.m_keys.RemoveRange(num, count - num);
                    }
                    else
                    {
                        if (base.m_keys != null)
                        {
                            base.m_keys.Dispose();
                        }
                        if (base.m_values != null)
                        {
                            base.m_values.Dispose();
                        }
                        base.m_keys   = null;
                        base.m_values = null;
                    }
                }
            }
        private async Task <IList> ListUsingQueryCacheAsync(HashSet <string> querySpaces, CancellationToken cancellationToken)
        {
            cancellationToken.ThrowIfCancellationRequested();
            IQueryCache queryCache = session.Factory.GetQueryCache(cacheRegion);

            ISet <FilterKey> filterKeys = FilterKey.CreateFilterKeys(session.EnabledFilters);

            List <IType[]> resultTypesList = new List <IType[]>();

            int[] maxRows   = new int[loaders.Count];
            int[] firstRows = new int[loaders.Count];
            for (int i = 0; i < loaders.Count; i++)
            {
                resultTypesList.Add(loaders[i].ResultTypes);
                firstRows[i] = parameters[i].RowSelection.FirstRow;
                maxRows[i]   = parameters[i].RowSelection.MaxRows;
            }

            MultipleQueriesCacheAssembler assembler = new MultipleQueriesCacheAssembler(resultTypesList);
            QueryParameters combinedParameters      = CreateCombinedQueryParameters();
            QueryKey        key = new QueryKey(session.Factory, SqlString, combinedParameters, filterKeys, null)
                                  .SetFirstRows(firstRows)
                                  .SetMaxRows(maxRows);

            IList result =
                await(assembler.GetResultFromQueryCacheAsync(session,
                                                             combinedParameters,
                                                             querySpaces,
                                                             queryCache,
                                                             key, cancellationToken)).ConfigureAwait(false);

            if (factory.Statistics.IsStatisticsEnabled)
            {
                if (result == null)
                {
                    factory.StatisticsImplementor.QueryCacheMiss(key.ToString(), queryCache.RegionName);
                }
                else
                {
                    factory.StatisticsImplementor.QueryCacheHit(key.ToString(), queryCache.RegionName);
                }
            }

            if (result == null)
            {
                log.Debug("Cache miss for multi criteria query");
                IList list = await(DoListAsync(cancellationToken)).ConfigureAwait(false);
                result = list;
                if (session.CacheMode.HasFlag(CacheMode.Put))
                {
                    bool put = await(queryCache.PutAsync(key, new ICacheAssembler[] { assembler }, new object[] { list }, combinedParameters.NaturalKeyLookup, session, cancellationToken)).ConfigureAwait(false);
                    if (put && factory.Statistics.IsStatisticsEnabled)
                    {
                        factory.StatisticsImplementor.QueryCachePut(key.ToString(), queryCache.RegionName);
                    }
                }
            }

            return(GetResultList(result));
        }
        private List <string> GetMarksFilterByKeys(IEnumerable <string> marks, FilterKey filter)
        {
            var silverKeys = SessionService.Get <List <string> >(filter.ToString());

            var keys = new List <string>(silverKeys);

            return(marks.Where(mark => keys.Contains(mark) || _marksHelper.IsFakeMark(mark)).ToList());
        }
Exemple #7
0
        public async Task <IActionResult> SaveFilterKey(FilterKey parm)
        {
            await _cache.SetAsync(KeyHelper.FilterKey, parm);

            return(Ok(new ApiResult <string>()
            {
            }));
        }
Exemple #8
0
        public void CreateItemKeyShouldFailWhenKeyIsNull()
        {
            // Arrange
            FilterKey filterKey = new FilterKey("key");

            // Act
            Action ctor = () => { new Item(null, filterKey); };

            // Assert
            ctor.Should().Throw <ArgumentException>().WithMessage($"*key*");
        }
Exemple #9
0
        public void CreateFilterKeyShouldProperlyInitializeProperties()
        {
            // Arrange
            var value = "key";

            // Act
            var itemKey = new FilterKey(value);

            // Assert
            itemKey.Value.Should().Be(value);
        }
Exemple #10
0
        public void ListShouldContainAllDefinitions()
        {
            // Arrange
            var type          = typeof(FilterKey);
            var expectedCount = type.GetFields(BindingFlags.Public | BindingFlags.Static).Count(f => f.FieldType == type);

            // Act
            var listCount = FilterKey.List().Count();

            // Assert
            listCount.Should().Be(expectedCount);
        }
Exemple #11
0
        public void CreateItemShouldSucceed()
        {
            // Arrange
            ItemKey   key       = new ItemKey("#key");
            FilterKey filterKey = new FilterKey("key");

            // Act
            Action ctor = () => { new Item(key, filterKey); };

            // Assert
            ctor.Should().NotThrow();
        }
        public void ItemAndFilterKeysCountShouldBeEqual()
        {
            // Arrange
            var itemKeyCount   = ItemKey.List().Count();
            var filterKeyCount = FilterKey.List().Count();

            // Act
            var result = itemKeyCount == filterKeyCount;

            // Assert
            result.Should().BeTrue();
        }
Exemple #13
0
        private void FilterDescValueToCompare(out FilterKey fk, out FilterKey fk1, bool sameValue)
        {
            const string filterName = "DescriptionEqualAndValueGT";
            var          f          = new FilterImpl(Sfi.GetFilterDefinition(filterName));

            f.SetParameter("pDesc", "something").SetParameter("pValue", 10);
            fk = new FilterKey(f);

            var f1 = new FilterImpl(Sfi.GetFilterDefinition(filterName));

            f1.SetParameter("pDesc", "something").SetParameter("pValue", sameValue ? 10 : 11);
            fk1 = new FilterKey(f1);
        }
Exemple #14
0
        private void FilterDescLikeToCompare(out FilterKey fk, out FilterKey fk1, bool sameValue)
        {
            const string filterName = "DescriptionLike";
            var          f          = new FilterImpl(Sfi.GetFilterDefinition(filterName));

            f.SetParameter("pLike", "so%");
            fk = new FilterKey(f);

            var f1 = new FilterImpl(Sfi.GetFilterDefinition(filterName));

            f1.SetParameter("pLike", sameValue ? "so%" : "%ing");
            fk1 = new FilterKey(f1);
        }
Exemple #15
0
        public async Task <IActionResult> GetFilterKey()
        {
            var key = await _cache.GetAsync <FilterKey>(KeyHelper.FilterKey);

            if (key == null)
            {
                key = new FilterKey();
            }
            return(Ok(new ApiResult <FilterKey>()
            {
                data = key
            }));
        }
Exemple #16
0
        public void CreateItemShouldProperlyInitializeProperties()
        {
            // Arrange
            ItemKey   key       = new ItemKey("#key");
            FilterKey filterKey = new FilterKey("key");

            // Act
            var item = new Item(key, filterKey);

            // Assert
            item.Key.Should().Be(key);
            item.FilterKey.Should().Be(filterKey);
        }
Exemple #17
0
        public IActionResult GetFilterKey()
        {
            var key = RedisHelper.Get <FilterKey>(KeyHelper.FilterKey);

            if (key == null)
            {
                key = new FilterKey();
            }
            return(Ok(new ApiResult <FilterKey>()
            {
                data = key
            }));
        }
Exemple #18
0
        private void FilterDescValueToCompare(out FilterKey fk, out FilterKey fk1)
        {
            const string filterName = "DescriptionEqualAndValueGT";
            var          f          = new FilterImpl(Sfi.GetFilterDefinition(filterName));

            f.SetParameter("pDesc", "something").SetParameter("pValue", 10);
            fk = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes);

            var f1 = new FilterImpl(Sfi.GetFilterDefinition(filterName));

            f1.SetParameter("pDesc", "something").SetParameter("pValue", 11);
            fk1 = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes);
        }
Exemple #19
0
        private void FilterDescLikeToCompare(out FilterKey fk, out FilterKey fk1)
        {
            const string filterName = "DescriptionLike";
            var          f          = new FilterImpl(Sfi.GetFilterDefinition(filterName));

            f.SetParameter("pLike", "so%");
            fk = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes);

            var f1 = new FilterImpl(Sfi.GetFilterDefinition(filterName));

            f1.SetParameter("pLike", "%ing");
            fk1 = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes);
        }
Exemple #20
0
        public void ToStringIncludeAll()
        {
            string filterName = "DescriptionLike";
            var    f          = new FilterImpl(Sfi.GetFilterDefinition(filterName));

            f.SetParameter("pLike", "so%");
            var fk = new FilterKey(f);

            Assert.That(fk.ToString(), Is.EqualTo("FilterKey[DescriptionLike['[pLike, so%]']]"), "Like");

            filterName = "DescriptionEqualAndValueGT";
            f          = new FilterImpl(Sfi.GetFilterDefinition(filterName));
            f.SetParameter("pDesc", "something").SetParameter("pValue", 10);
            fk = new FilterKey(f);
            Assert.That(fk.ToString(), Is.EqualTo("FilterKey[DescriptionEqualAndValueGT['[pDesc, something]', '[pValue, 10]']]"), "Value");
        }
Exemple #21
0
        public void ToStringIncludeAll()
        {
            string filterName = "DescriptionLike";
            var    f          = new FilterImpl(Sfi.GetFilterDefinition(filterName));

            f.SetParameter("pLike", "so%");
            var fk = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes);

            Assert.That(fk.ToString(), Is.EqualTo("FilterKey[DescriptionLike{'pLike'='so%'}]"));

            filterName = "DescriptionEqualAndValueGT";
            f          = new FilterImpl(Sfi.GetFilterDefinition(filterName));
            f.SetParameter("pDesc", "something").SetParameter("pValue", 10);
            fk = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes);
            Assert.That(fk.ToString(), Is.EqualTo("FilterKey[DescriptionEqualAndValueGT{'pDesc'='something', 'pValue'='10'}]"));
        }
            protected int Search(FilterKey key)
            {
                Global.Tracer.Assert(m_keys != null, "(null != m_keys)");
                int num = m_keys.BinarySearch(key, m_comparer);

                if (num < 0)
                {
                    num = ~num;
                }
                else
                {
                    for (num++; num < m_keys.Count && m_comparer.Compare(m_keys[num - 1], m_keys[num]) == 0; num++)
                    {
                    }
                }
                return(num);
            }
Exemple #23
0
        private void FilterValueInToCompare(out FilterKey fk, out FilterKey fk1, bool sameValue)
        {
            const string filterName = "ValueIn";
            var          f          = new FilterImpl(Sfi.GetFilterDefinition(filterName));

            f.SetParameterList("pIn", new HashSet <int> {
                10, 11
            });
            fk = new FilterKey(f);

            var f1 = new FilterImpl(Sfi.GetFilterDefinition(filterName));

            f1.SetParameterList("pIn", sameValue ? (ICollection <int>) new [] { 10, 11 } : new HashSet <int> {
                10, 12
            });
            fk1 = new FilterKey(f1);
        }
Exemple #24
0
        private async Task <IList> ListUsingQueryCacheAsync(CancellationToken cancellationToken)
        {
            cancellationToken.ThrowIfCancellationRequested();
            IQueryCache queryCache = session.Factory.GetQueryCache(cacheRegion);

            ISet <FilterKey> filterKeys = FilterKey.CreateFilterKeys(session.EnabledFilters);

            ISet <string>  querySpaces     = new HashSet <string>();
            List <IType[]> resultTypesList = new List <IType[]>(Translators.Count);

            for (int i = 0; i < Translators.Count; i++)
            {
                ITranslator queryTranslator = Translators[i];
                querySpaces.UnionWith(queryTranslator.QuerySpaces);
                resultTypesList.Add(queryTranslator.ReturnTypes);
            }
            int[] firstRows = new int[Parameters.Count];
            int[] maxRows   = new int[Parameters.Count];
            for (int i = 0; i < Parameters.Count; i++)
            {
                RowSelection rowSelection = Parameters[i].RowSelection;
                firstRows[i] = rowSelection.FirstRow;
                maxRows[i]   = rowSelection.MaxRows;
            }

            MultipleQueriesCacheAssembler assembler = new MultipleQueriesCacheAssembler(resultTypesList);

            QueryKey key = new QueryKey(session.Factory, SqlString, combinedParameters, filterKeys, null)
                           .SetFirstRows(firstRows)
                           .SetMaxRows(maxRows);

            IList result = await(assembler.GetResultFromQueryCacheAsync(session, combinedParameters, querySpaces, queryCache, key, cancellationToken)).ConfigureAwait(false);

            if (result == null)
            {
                log.Debug("Cache miss for multi query");
                var list = await(DoListAsync(cancellationToken)).ConfigureAwait(false);
                await(queryCache.PutAsync(key, new ICacheAssembler[] { assembler }, new object[] { list }, false, session, cancellationToken)).ConfigureAwait(false);
                result = list;
            }

            return(GetResultList(result));
        }
        private IList ListUsingQueryCache()
        {
            IQueryCache queryCache = session.Factory.GetQueryCache(cacheRegion);

            ISet <FilterKey> filterKeys = FilterKey.CreateFilterKeys(session.EnabledFilters, session.EntityMode);

            ISet <string>  querySpaces     = new HashedSet <string>();
            List <IType[]> resultTypesList = new List <IType[]>(Translators.Count);

            for (int i = 0; i < Translators.Count; i++)
            {
                ITranslator queryTranslator = Translators[i];
                querySpaces.AddAll(queryTranslator.QuerySpaces);
                resultTypesList.Add(queryTranslator.ReturnTypes);
            }
            int[] firstRows = new int[Parameters.Count];
            int[] maxRows   = new int[Parameters.Count];
            for (int i = 0; i < Parameters.Count; i++)
            {
                RowSelection rowSelection = Parameters[i].RowSelection;
                firstRows[i] = rowSelection.FirstRow;
                maxRows[i]   = rowSelection.MaxRows;
            }

            MultipleQueriesCacheAssembler assembler = new MultipleQueriesCacheAssembler(resultTypesList);

            QueryKey key = new QueryKey(session.Factory, SqlString, combinedParameters, filterKeys)
                           .SetFirstRows(firstRows)
                           .SetMaxRows(maxRows);

            IList result = assembler.GetResultFromQueryCache(session, combinedParameters, querySpaces, queryCache, key);

            if (result == null)
            {
                log.Debug("Cache miss for multi query");
                var list = DoList();
                queryCache.Put(key, new ICacheAssembler[] { assembler }, new object[] { list }, false, session);
                result = list;
            }

            return(GetResultList(result));
        }
Exemple #26
0
        private IList ListUsingQueryCache()
        {
            IQueryCache queryCache = session.Factory.GetQueryCache(cacheRegion);

            ISet <FilterKey> filterKeys = FilterKey.CreateFilterKeys(session.EnabledFilters, session.EntityMode);

            ISet <string>  querySpaces     = new HashSet <string>();
            List <IType[]> resultTypesList = new List <IType[]>();

            int[] maxRows   = new int[loaders.Count];
            int[] firstRows = new int[loaders.Count];
            for (int i = 0; i < loaders.Count; i++)
            {
                querySpaces.UnionWith(loaders[i].QuerySpaces);
                resultTypesList.Add(loaders[i].ResultTypes);
                firstRows[i] = parameters[i].RowSelection.FirstRow;
                maxRows[i]   = parameters[i].RowSelection.MaxRows;
            }

            MultipleQueriesCacheAssembler assembler = new MultipleQueriesCacheAssembler(resultTypesList);
            QueryParameters combinedParameters      = CreateCombinedQueryParameters();
            QueryKey        key = new QueryKey(session.Factory, SqlString, combinedParameters, filterKeys, null)
                                  .SetFirstRows(firstRows)
                                  .SetMaxRows(maxRows);

            IList result =
                assembler.GetResultFromQueryCache(session,
                                                  combinedParameters,
                                                  querySpaces,
                                                  queryCache,
                                                  key);

            if (result == null)
            {
                log.Debug("Cache miss for multi criteria query");
                IList list = DoList();
                queryCache.Put(key, new ICacheAssembler[] { assembler }, new object[] { list }, combinedParameters.NaturalKeyLookup, session);
                result = list;
            }

            return(GetResultList(result));
        }
        public void ToStringWithMoreFilters()
        {
            string filterName = "DescriptionLike";
            var    f          = new FilterImpl(Sfi.GetFilterDefinition(filterName));

            f.SetParameter("pLike", "so%");
            var fk = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes);

            filterName = "DescriptionEqualAndValueGT";
            var fv = new FilterImpl(Sfi.GetFilterDefinition(filterName));

            fv.SetParameter("pDesc", "something").SetParameter("pValue", 10);
            var fvk = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes);

            ISet <FilterKey> fks = new HashSet <FilterKey> {
                fk, fvk
            };
            var qk = new QueryKey(Sfi, SqlAll, new QueryParameters(), fks, null);

            Assert.That(qk.ToString(), Does.Contain(string.Format("filters: ['{0}', '{1}']", fk, fvk)));
        }
Exemple #28
0
        public void ToStringWithMoreFilters()
        {
            string filterName = "DescriptionLike";
            var    f          = new FilterImpl(sessions.GetFilterDefinition(filterName));

            f.SetParameter("pLike", "so%");
            var fk = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes, EntityMode.Poco);

            filterName = "DescriptionEqualAndValueGT";
            var fv = new FilterImpl(sessions.GetFilterDefinition(filterName));

            fv.SetParameter("pDesc", "something").SetParameter("pValue", 10);
            var fvk = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes, EntityMode.Poco);

            ISet <FilterKey> fks = new HashedSet <FilterKey> {
                fk, fvk
            };
            var qk = new QueryKey(sessions, SqlAll, new QueryParameters(), (ISet)fks);

            Assert.That(qk.ToString(), Is.StringContaining(string.Format("filters: ['{0}', '{1}']", fk, fvk)));
        }
        private void QueryKeyFilterDescLikeToCompare(out QueryKey qk, out QueryKey qk1)
        {
            const string filterName = "DescriptionLike";
            var          f          = new FilterImpl(Sfi.GetFilterDefinition(filterName));

            f.SetParameter("pLike", "so%");
            var fk = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes);
            ISet <FilterKey> fks = new HashSet <FilterKey> {
                fk
            };

            qk = new QueryKey(Sfi, SqlAll, new QueryParameters(), fks, null);

            var f1 = new FilterImpl(Sfi.GetFilterDefinition(filterName));

            f1.SetParameter("pLike", "%ing");
            var fk1 = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes);

            fks = new HashSet <FilterKey> {
                fk1
            };
            qk1 = new QueryKey(Sfi, SqlAll, new QueryParameters(), fks, null);
        }
Exemple #30
0
        private void QueryKeyFilterDescLikeToCompare(out QueryKey qk, out QueryKey qk1)
        {
            const string filterName = "DescriptionLike";
            var          f          = new FilterImpl(sessions.GetFilterDefinition(filterName));

            f.SetParameter("pLike", "so%");
            var fk = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes, EntityMode.Poco);
            ISet <FilterKey> fks = new HashedSet <FilterKey> {
                fk
            };

            qk = new QueryKey(sessions, SqlAll, new QueryParameters(), (ISet)fks);

            var f1 = new FilterImpl(sessions.GetFilterDefinition(filterName));

            f1.SetParameter("pLike", "%ing");
            var fk1 = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes, EntityMode.Poco);

            fks = new HashedSet <FilterKey> {
                fk1
            };
            qk1 = new QueryKey(sessions, SqlAll, new QueryParameters(), (ISet)fks);
        }