private bool ValidateFFilter(CursorFilterTypeF f) { if (string.IsNullOrEmpty(f.FieldName)) { return(false); } if (f.Qualifier.GetAttribute <FilterValuesAttribute>()?.Number == 2) { return(!string.IsNullOrEmpty(f.FilterBetweenStartValue) && !string.IsNullOrEmpty(f.FilterBetweenEndValue)); } if (f.Qualifier.GetAttribute <FilterValuesAttribute>()?.Number == 1) { return(!string.IsNullOrEmpty(f.FieldValue)); } if (f.Qualifier.GetAttribute <FilterValuesAttribute>()?.Number == 0) { return(true); } return(false); }
protected override void ProcessRecord() { ICursorFilter filter = null; if (F.IsPresent) { var f = new CursorFilterTypeF(clauseNumber) { FieldName = fieldName, Qualifier = qualifier, MatchCase = matchCase }; if (qualifier == FilterQualifier.Between) { f.FilterBetweenStartValue = fieldValue; f.FilterBetweenEndValue = fieldValue2; } if (qualifier.GetAttribute <FilterValuesAttribute>()?.Number == 1) { f.FieldValue = fieldValue; } filter = f; } if (CTI.IsPresent) { var cti = new CursorFilterTypeCTI(clauseNumber) { Connection = connection, Category = categoryName, Item = item }; filter = cti; } if ((CTCF.IsPresent)) { var ctcf = new CursorFilterTypeCTCF(clauseNumber) { Connection = connection, Category = categoryName, FieldName = fieldName, Qualifier = qualifier, MatchCase = matchCase }; if (qualifier == FilterQualifier.Between) { ctcf.FilterBetweenStartValue = fieldValue; ctcf.FilterBetweenEndValue = fieldValue2; } if (qualifier.GetAttribute <FilterValuesAttribute>()?.Number == 1) { ctcf.FieldValue = fieldValue; } filter = ctcf; } if (CTCTI.IsPresent) { ICursorFilterTypeCTCTI ctcti = new CursorFilterTypeCTCTI(clauseNumber) { Connection = connection, Category = categoryName, Connection2 = connection2, Category2 = toCategoryName2, Item = item }; filter = ctcti; } filter.Except = except; filter.OrFilter = orFilter; WriteVerbose($"Resulting filterstring is: {filter}, conjunction is: [{(filter.OrFilter ? "OR" : "AND")}]"); WriteObject(filter, false); }
protected override void ProcessRecord() { ICursorFilter filter;; switch (_type) { case FilterType.Field: var f = new CursorFilterTypeF(clauseNumber) { FieldName = fieldName, Qualifier = qualifier, MatchCase = matchCase }; if (qualifier == FilterQualifier.Between) { f.FilterBetweenStartValue = fieldValue; f.FilterBetweenEndValue = fieldValue2; } if (qualifier.GetAttribute <FilterValuesAttribute>()?.Number == 1) { f.FieldValue = fieldValue; } filter = f; break; case FilterType.ConnectionToItem: var cti = new CursorFilterTypeCTI(clauseNumber) { Connection = connection, Category = categoryName, Item = item }; filter = cti; break; case FilterType.ConnectionToCategoryField: var ctcf = new CursorFilterTypeCTCF(clauseNumber) { Connection = connection, Category = categoryName, FieldName = fieldName, Qualifier = qualifier, MatchCase = matchCase }; if (qualifier == FilterQualifier.Between) { ctcf.FilterBetweenStartValue = fieldValue; ctcf.FilterBetweenEndValue = fieldValue2; } if (qualifier.GetAttribute <FilterValuesAttribute>()?.Number == 1) { ctcf.FieldValue = fieldValue; } filter = ctcf; break; case FilterType.ConnectionToCategoryToItem: ICursorFilterTypeCTCTI ctcti = new CursorFilterTypeCTCTI(clauseNumber) { Connection = connection, Category = categoryName, Connection2 = connection2, Category2 = toCategoryName2, Item = item }; filter = ctcti; break; default: throw new System.ArgumentException("Invalid or missing FilterType"); } filter.Except = except; filter.OrFilter = orFilter; WriteVerbose($"Resulting filterstring is: {filter}, conjunction is: [{(filter.OrFilter ? "OR" : "AND")}]"); WriteObject(filter, false); }
private IList <ConnectedItem> PopulateConnectedItemNamesList(string searchString) { IList <ConnectedItem> retval = new List <ConnectedItem>(); if (string.IsNullOrEmpty(this.SelectedConnectedCategory)) { return(retval); } using (ICommenceDatabase db = new CommenceDatabase()) { using (ICommenceCursor cur = db.GetCursor(this.SelectedConnectedCategory)) { string nameField = db.GetNameField(this.SelectedConnectedCategory); var columns = this.CategoryDefinition.Clarified ? new[] { nameField, this.CategoryDefinition.ClarifyField } : new[] { nameField }; if (!cur.SetColumns(columns)) { return(retval); } // something went wrong bad var number = cur.RowCount; if (string.IsNullOrEmpty(searchString)) { if (number == 0) { retval.Add(new ConnectedItem("(No items to display)", null, null, null)); return(retval); } else if (number < 1000) { return(GetConnectedItems(cur).ToList()); } else { retval.Add(new ConnectedItem("(Too many items to display.)", null, null, null)); return(retval); } } else { CursorFilterTypeF f = cur.Filters.Create(1, FilterType.Field); f.FieldValue = this.ConnectedItemSearchString; f.FieldName = nameField; f.Qualifier = FilterQualifier.Contains; int count = cur.Filters.Apply(); if (count > 1000) { retval.Add(new ConnectedItem("(Too many items to display)", null, null, null)); return(retval); } else if (count == 0) { retval.Add(new ConnectedItem($"(No items contain '{ this.ConnectedItemSearchString }')", null, null, null)); return(retval); } else { return(GetConnectedItems(cur).ToList()); } } } } }
protected override void ProcessRecord() { // TODO: should we include a check for checking the Qualifier and chosen fieldtype? ICursorFilter filter; switch (_type) { case FilterType.Field: GetCmcFilterCommandDynamicParametersF ctxF = context as GetCmcFilterCommandDynamicParametersF; var f = new CursorFilterTypeF(clauseNumber) { FieldName = ctxF.FieldName, Qualifier = ctxF.Qualifier, MatchCase = ctxF.MatchCase }; if (f.Qualifier == FilterQualifier.Between) { f.FilterBetweenStartValue = ctxF.FieldValue; f.FilterBetweenEndValue = ctxF.FieldValue2; } if (f.Qualifier.GetAttribute <FilterValuesAttribute>()?.Number == 1) { f.FieldValue = ((GetCmcFilterCommandDynamicParametersF)context).FieldValue; } filter = f; break; case FilterType.ConnectionToItem: GetCmcFilterCommandDynamicParametersCTI ctxCti = context as GetCmcFilterCommandDynamicParametersCTI; var cti = new CursorFilterTypeCTI(clauseNumber) { Connection = ctxCti.Connection, Category = ctxCti.ToCategoryName, Item = ctxCti.Item }; filter = cti; break; case FilterType.ConnectionToCategoryField: GetCmcFilterCommandDynamicParametersCTCF ctxCtcf = context as GetCmcFilterCommandDynamicParametersCTCF; var ctcf = new CursorFilterTypeCTCF(clauseNumber) { Connection = ctxCtcf.Connection, Category = ctxCtcf.ToCategoryName, FieldName = ctxCtcf.FieldName, Qualifier = ctxCtcf.Qualifier, MatchCase = ctxCtcf.MatchCase }; if (ctcf.Qualifier == FilterQualifier.Between) { ctcf.FilterBetweenStartValue = ctxCtcf.FieldValue; ctcf.FilterBetweenEndValue = ctxCtcf.FieldValue2; } if (ctcf.Qualifier.GetAttribute <FilterValuesAttribute>()?.Number == 1) { ctcf.FieldValue = ctxCtcf.FieldValue; } filter = ctcf; break; case FilterType.ConnectionToCategoryToItem: GetCmcFilterCommandDynamicParametersCTCTI ctxCtcti = context as GetCmcFilterCommandDynamicParametersCTCTI; ICursorFilterTypeCTCTI ctcti = new CursorFilterTypeCTCTI(clauseNumber) { Connection = ctxCtcti.Connection, Category = ctxCtcti.ToCategoryName, Connection2 = ctxCtcti.Connection2, Category2 = ctxCtcti.ToCategoryName2, Item = ctxCtcti.Item }; filter = ctcti; break; default: throw new System.ArgumentException("Invalid or missing FilterType"); } filter.Except = this.Except; filter.OrFilter = this.OrFilter; WriteVerbose($"Resulting filterstring is: {filter}, conjunction is: [{(filter.OrFilter ? "OR" : "AND")}]"); WriteObject(filter, false); }