Esempio n. 1
0
        /// <summary>
        /// Translate a OperationImportSegment
        /// </summary>
        /// <param name="segment">the segment to Translate</param>
        /// <returns>Defined by the implementer.</returns>
        public override string Translate(OperationImportSegment segment)
        {
            Debug.Assert(segment != null, "segment != null");
            NodeToStringBuilder nodeToStringBuilder = new NodeToStringBuilder();
            string res = null;

            foreach (OperationSegmentParameter operationSegmentParameter in segment.Parameters)
            {
                string tmp = nodeToStringBuilder.TranslateNode((QueryNode)operationSegmentParameter.Value);
                res = String.Concat(res, String.IsNullOrEmpty(res) ? null : ExpressionConstants.SymbolComma, operationSegmentParameter.Name, ExpressionConstants.SymbolEqual, tmp);
            }

            return(String.IsNullOrEmpty(res) ? String.Concat("/", segment.Identifier) : String.Concat("/", segment.Identifier, ExpressionConstants.SymbolOpenParen, res, ExpressionConstants.SymbolClosedParen));
        }
Esempio n. 2
0
        /// <summary>
        /// Build a segment representing $filter.
        /// </summary>
        /// <param name="expression">The filter expression - this should evaluate to a single boolean value.</param>
        /// <param name="rangeVariable">An expression that represents a single value from the collection.</param>
        /// <param name="navigationSource">The navigation source that this filter applies to.</param>
        /// <exception cref="System.ArgumentNullException">Throws if any input parameter is null.</exception>
        /// <remarks>$filter should not be applied on singletons or single entities.</remarks>
        public FilterSegment(SingleValueNode expression, RangeVariable rangeVariable, IEdmNavigationSource navigationSource)
        {
            ExceptionUtils.CheckArgumentNotNull(expression, "expression");
            ExceptionUtils.CheckArgumentNotNull(rangeVariable, "rangeVariable");
            ExceptionUtils.CheckArgumentNotNull(navigationSource, "navigationSource");

            this.Identifier   = UriQueryConstants.FilterSegment;
            this.SingleResult = false;
            this.TargetEdmNavigationSource = navigationSource;
            this.TargetKind    = RequestTargetKind.Resource;
            this.TargetEdmType = rangeVariable.TypeReference.Definition;

            this.expression    = expression;
            this.rangeVariable = rangeVariable;
            this.bindingType   = navigationSource.Type;

            NodeToStringBuilder nodeToStringBuilder = new NodeToStringBuilder();
            string expressionString = nodeToStringBuilder.TranslateNode(expression);

            this.literalText = UriQueryConstants.FilterSegment + ExpressionConstants.SymbolOpenParen + expressionString
                               + ExpressionConstants.SymbolClosedParen;
        }