Esempio n. 1
0
        /// <summary>
        /// Processes the condition.
        /// </summary>
        /// <param name="internalItem">The internal item.</param>
        /// <param name="condition">The condition.</param>
        /// <param name="metadataPropertyCollection">The MetadataPropertyCollection.</param>
        /// <returns><c>true</c> if item passes the condition; otherwise, <c>false</c></returns>
        private static bool ProcessCondition(InternalItem internalItem,
                                             Condition condition,
                                             MetadataPropertyCollection metadataPropertyCollection)
        {
            IndexCacheUtils.ProcessMetadataPropertyCondition(condition, metadataPropertyCollection);

            if (condition.IsTag)
            {
                byte[] tagValue;
                internalItem.TryGetTagValue(condition.FieldName, out tagValue);
                return(condition.Process(tagValue));
            }
            return(condition.Process(internalItem.ItemId));
        }
Esempio n. 2
0
        /// <summary>
        /// Sets the enter exit condition.
        /// </summary>
        private void SetEnterExitCondition()
        {
            if (IndexCondition != null)
            {
                IndexCondition.CreateConditions(PrimarySortInfo.FieldName,
                                                PrimarySortInfo.IsTag,
                                                PrimarySortInfo.SortOrderList[0],
                                                out enterCondition,
                                                out exitCondition);

                if (enterCondition != null)
                {
                    IndexCacheUtils.ProcessMetadataPropertyCondition(enterCondition, MetadataPropertyCollection);
                }

                if (exitCondition != null)
                {
                    IndexCacheUtils.ProcessMetadataPropertyCondition(exitCondition, MetadataPropertyCollection);
                }
            }
        }