Example #1
0
        public static void CreateFilterAgent <S, M>(FilterAgent item, M parentFilter)
            where M : IDataItemCompositionFilter <S, M>
            where S : IDataItemFilter
        {
            FilterAgent singleAgent = new FilterAgent();

            if (parentFilter.FilterItems == null)
            {
                parentFilter.FilterItems = new List <S>(0);
            }
            foreach (var operationItem in parentFilter.FilterItems)
            {
                FilterAgent.SetFilterItem(singleAgent, parentFilter.CurrentLogic, operationItem);
            }
            item.ParameterNames.AddRange(singleAgent.ParameterNames);
            item.ParameterValues.AddRange(singleAgent.ParameterValues);

            StringBuilder multiFilter = new StringBuilder();

            if (parentFilter.CompositionItems == null)
            {
                parentFilter.CompositionItems = new List <M>(0);
            }
            foreach (var compositionItem in parentFilter.CompositionItems)
            {
                FilterAgent multiAgent = new FilterAgent();
                FilterAgent.CreateFilterAgent <S, M>(multiAgent, compositionItem);
                item.ParameterNames.AddRange(multiAgent.ParameterNames);
                item.ParameterValues.AddRange(multiAgent.ParameterValues);

                if (multiFilter.Length == 0)
                {
                    multiFilter.Append(multiAgent.FilterString);
                }
                else
                {
                    multiFilter.Append(" " + parentFilter.CurrentLogic.ToString() + " ");
                    multiFilter.Append(multiAgent.FilterString);
                }
            }

            if (!string.IsNullOrWhiteSpace(singleAgent.FilterString) && !string.IsNullOrWhiteSpace(multiFilter.ToString()))
            {
                item.FilterString = string.Format("(({0}) {1} ({2}))", singleAgent.FilterString,
                                                  System.Enum.GetName(typeof(FilterLogic), parentFilter.CurrentLogic), multiFilter.ToString());
            }
            if (string.IsNullOrWhiteSpace(singleAgent.FilterString) && !string.IsNullOrWhiteSpace(multiFilter.ToString()))
            {
                item.FilterString = string.Format("({0})", multiFilter.ToString());
            }
            if (!string.IsNullOrWhiteSpace(singleAgent.FilterString) && string.IsNullOrWhiteSpace(multiFilter.ToString()))
            {
                item.FilterString = string.Format("({0})", singleAgent.FilterString);
            }
            if (string.IsNullOrWhiteSpace(singleAgent.FilterString) && string.IsNullOrWhiteSpace(multiFilter.ToString()))
            {
                item.FilterString = string.Format("({0})", "1=1");
            }
        }
Example #2
0
        public void SetFilterItem(FilterAgent item, FilterLogic logic)
        {
            //string columnName = Enum.GetName(typeof(P), this._propertyName);
            string columnName = this._propertyName;
            string appendix   = "";

            if (this._operation == FilterOperation.IsNull || this._operation == FilterOperation.IsNotNull)
            {
                appendix = string.Format(" {0} {1} ", columnName, FilterOperationTrans.GetOperationValue(this._operation, this._filterValue));
                if (item.FilterString == "")
                {
                    item.FilterString = appendix;
                }
                else
                {
                    item.FilterString = item.FilterString + System.Enum.GetName(typeof(FilterLogic), logic) + appendix;
                }
                return;
            }
            if (string.IsNullOrWhiteSpace(this._filterValue))
            {
                return;
            }

            string paramName = "P" + GuidGenerator.GetShortGuid();

            appendix = string.Format(" {0} {1} {2} ", columnName,
                                     FilterOperationTrans.GetOperationByName(this._operation),
                                     FilterOperationTrans.GetParamExpression(this._operation, paramName));
            item.ParameterNames.Add(DBFactory.ParamSign + paramName);
            string operationValue = FilterOperationTrans.GetOperationValue(this._operation, this._filterValue);

            item.ParameterValues.Add(operationValue);
            if (item.FilterString == "")
            {
                item.FilterString = appendix;
            }
            else
            {
                item.FilterString = item.FilterString + System.Enum.GetName(typeof(FilterLogic), logic) + appendix;
            }
        }
Example #3
0
        protected static void SetFilterItem <T>(FilterAgent item, FilterLogic logic, T dataFilter) where T : IDataItemFilter
        {
            string columnName = dataFilter.GetPropertyName();
            string appendix   = "";

            if (dataFilter.Operation == FilterOperation.IsNull || dataFilter.Operation == FilterOperation.IsNotNull)
            {
                appendix = string.Format(" {0} {1} ", columnName, FilterOperationTrans.GetOperationValue(dataFilter.Operation, dataFilter.FilterValue));
                if (item.FilterString == "")
                {
                    item.FilterString = appendix;
                }
                else
                {
                    item.FilterString = item.FilterString + System.Enum.GetName(typeof(FilterLogic), logic) + appendix;
                }
                return;
            }
            if (string.IsNullOrWhiteSpace(dataFilter.FilterValue))
            {
                return;
            }

            string paramName = "P" + GuidGenerator.GetShortGuid();

            appendix = string.Format(" {0} {1} {2} ", columnName,
                                     FilterOperationTrans.GetOperationByName(dataFilter.Operation),
                                     FilterOperationTrans.GetParamExpression(dataFilter.Operation, paramName));
            item.ParameterNames.Add(DBFactory.ParamSign + paramName);
            string operationValue = FilterOperationTrans.GetOperationValue(dataFilter.Operation, dataFilter.FilterValue);

            item.ParameterValues.Add(operationValue);
            if (item.FilterString == "")
            {
                item.FilterString = appendix;
            }
            else
            {
                item.FilterString = item.FilterString + System.Enum.GetName(typeof(FilterLogic), logic) + appendix;
            }
        }
Example #4
0
        public void CreateFilterItem(FilterAgent item)
        {
            FilterAgent singleAgent = new FilterAgent();

            foreach (var operationItem in _filterItems)
            {
                operationItem.SetFilterItem(singleAgent, this._currentLogic);
            }
            item.ParameterNames.AddRange(singleAgent.ParameterNames);
            item.ParameterValues.AddRange(singleAgent.ParameterValues);
            FilterAgent multiAgent = new FilterAgent();

            foreach (var compositionItem in _compositionItems)
            {
                compositionItem.CreateFilterItem(multiAgent, this._currentLogic);
            }

            item.ParameterNames.AddRange(multiAgent.ParameterNames);
            item.ParameterValues.AddRange(multiAgent.ParameterValues);
            if (singleAgent.FilterString != "" && multiAgent.FilterString != "")
            {
                item.FilterString = string.Format("(({0}) {1} ({2}))", singleAgent.FilterString, System.Enum.GetName(typeof(FilterLogic), this._currentLogic), multiAgent.FilterString);
            }
            if (singleAgent.FilterString == "" && multiAgent.FilterString != "")
            {
                item.FilterString = string.Format("({0})", multiAgent.FilterString);
            }
            if (singleAgent.FilterString != "" && multiAgent.FilterString == "")
            {
                item.FilterString = string.Format("({0})", singleAgent.FilterString);
            }
            if (singleAgent.FilterString == "" && multiAgent.FilterString == "")
            {
                item.FilterString = string.Format("({0})", "1=1");
            }
        }