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"); } }
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; } }
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; } }
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"); } }