private void ValidateFields(IEnumerable <string> fields) { if (DuplicateEntryValidator.IsDuplicatedFieldsInTheList(fields)) { throw new ArgumentException("AbstractGetItemUrlBuilder.GetBaseUrlForRequest() : request.QueryParameters.Fields must contain NO duplicates"); } }
private ISearchItemRequestParametersBuilder <T> AddFieldsToSort(IEnumerable <string> fields, string sortOrder) { BaseValidator.CheckNullAndThrow(fields, this.GetType().Name + ".FieldsToSort"); if (!fields.Any()) { return(this); } Func <string, bool> fieldNameValidator = fieldName => !string.IsNullOrWhiteSpace(fieldName); var validFieldsNoOrder = fields.Where(fieldNameValidator).ToList(); //adding sort order var validFields = new List <string>(); foreach (string field in validFieldsNoOrder) { validFields.Add(sortOrder + field); } IEnumerable <string> currentFields = this.sortParameters.Fields; if (null == currentFields) { currentFields = new string[0] { }; } ; int myFieldsCount = currentFields.Count(); int newFieldsCount = validFields.Count; int appendedFieldsCount = myFieldsCount + newFieldsCount; string[] newFields = new string[appendedFieldsCount]; currentFields.ToArray().CopyTo(newFields, 0); validFields.CopyTo(newFields, myFieldsCount); bool isFieldListHasDuplicates = DuplicateEntryValidator.IsDuplicatedFieldsInTheList(newFields); if (isFieldListHasDuplicates) { throw new InvalidOperationException(this.GetType().Name + ".Fields" + " : duplicate fields are not allowed"); } this.sortParameters = new SortParameters(newFields); return(this); }
public IBaseRequestParametersBuilder <T> AddFieldsToRead(IEnumerable <string> fields) { BaseValidator.CheckNullAndThrow(fields, this.GetType().Name + ".Fields"); if (!fields.Any()) { return(this); } Func <string, bool> fieldNameValidator = fieldName => !string.IsNullOrWhiteSpace(fieldName); var validFields = fields.Where(fieldNameValidator).ToList(); IEnumerable <string> currentFields = this.queryParameters.Fields; if (null == currentFields) { currentFields = new string[0] { }; } ; int myFieldsCount = currentFields.Count(); int newFieldsCount = validFields.Count; int appendedFieldsCount = myFieldsCount + newFieldsCount; string[] newFields = new string[appendedFieldsCount]; currentFields.ToArray().CopyTo(newFields, 0); validFields.CopyTo(newFields, myFieldsCount); bool isFieldListHasDuplicates = DuplicateEntryValidator.IsDuplicatedFieldsInTheList(newFields); if (isFieldListHasDuplicates) { throw new InvalidOperationException(this.GetType().Name + ".Fields" + " : duplicate fields are not allowed"); } this.queryParameters = new QueryParameters( this.queryParameters.Payload, this.queryParameters.ScopeParameters, newFields); return(this); }