/// <summary> /// Gets the component values operator. /// </summary> /// <param name="sel">The values selection of a component.</param> /// <returns>The operator to use for the values in <paramref name="sel"/></returns> private static string GetComponentValuesOperator(IComplexDataQuerySelection sel) { string componentValuesOperator = " OR "; var orderedOperatorEnumTypes = sel.Values.Where(value => value.OrderedOperator != null).Select(value => value.OrderedOperator.EnumType).Distinct().ToArray(); if (orderedOperatorEnumTypes.Length == 1) { switch (orderedOperatorEnumTypes[0]) { case OrderedOperatorEnumType.NotEqual: componentValuesOperator = " AND "; break; } } else if (orderedOperatorEnumTypes.Length == 0) { var textOperatorEnumTypes = sel.Values.Where(value => value.TextSearchOperator != null).Select(value => value.TextSearchOperator.EnumType).Distinct().ToArray(); if (textOperatorEnumTypes.Length == 1) { switch (textOperatorEnumTypes[0]) { case TextSearchEnumType.NotEqual: componentValuesOperator = " AND "; break; } } } return componentValuesOperator; }
/// <summary> /// Builds the complex data query implementation. /// </summary> /// <param name="freqCriteria">The frequency criteria.</param> /// <returns> /// The <see cref="ComplexDataQueryImpl"/> /// </returns> private ComplexDataQueryImpl BuildComplexDataQueryImpl(IComplexDataQuerySelection freqCriteria) { ISet<IComplexDataQuerySelection> sections = new HashSet<IComplexDataQuerySelection>(); sections.Add(freqCriteria); ICollection<IComplexDataQuerySelectionGroup> collection = new[] { new ComplexDataQuerySelectionGroupImpl( sections, null, OrderedOperator.GetFromEnum(OrderedOperatorEnumType.Equal), null, OrderedOperator.GetFromEnum(OrderedOperatorEnumType.Equal), null) }; var complexDataQueryImpl = new ComplexDataQueryImpl( null, null, null, this._dataStructureObject, this._dataflowObject, null, null, 0, null, false, null, DimensionAtObservation.GetFromEnum(DimensionAtObservationEnumType.Time).Value, false, DataQueryDetail.GetFromEnum(DataQueryDetailEnumType.Full), collection); return complexDataQueryImpl; }
/// <summary> /// Gets the parameter builder. /// </summary> /// <param name="complexDataQuerySelection">The complex data query selection.</param> /// <returns>The <see cref="IParameterBuilder"/></returns> private static IParameterBuilder GetParameterBuilder(IComplexDataQuerySelection complexDataQuerySelection) { IParameterBuilder builder; if (complexDataQuerySelection.ShouldUseAnd()) { builder = new ParameterBuilderAnd(); } else { builder = new ParameterBuilderOr(); } return builder; }