Exemplo n.º 1
0
 public BoundingBox(int attributeCount)
 {
     numericMaxs = new AttributeValue[attributeCount];
     numericMins = new AttributeValue[attributeCount];
     arrayMaxs   = new AttributeValue[attributeCount];
     arrayMins   = new AttributeValue[attributeCount];
     for (int i = 0; i < attributeCount; i++)
     {
         numericMaxs[i] = new SingleAttributeValue(int.MinValue);
         arrayMaxs[i]   = numericMaxs[i];
         numericMins[i] = new SingleAttributeValue(int.MaxValue);
         arrayMins[i]   = numericMins[i];
     }
 }
Exemplo n.º 2
0
        public void ResetMin(int attNumber, FieldDataType type)
        {
            if (attNumber >= arrayMaxs.Length)
            {
                return;
            }
            switch (type)
            {
            case FieldDataType.Number:
                numericMins[attNumber] = new SingleAttributeValue(int.MaxValue);
                break;

            case FieldDataType.Array:
                arrayMins[attNumber] = new SingleAttributeValue(int.MaxValue);
                break;
            }
        }
Exemplo n.º 3
0
        public override IEnumerable <KeyValuePair <AttributeValue, long> > Enumerate(QueryCriteria value)
        {
            var andPredicate = new ANDPredicate();

            for (int i = 0; i < sequence.Length; i++)
            {
                var currentElement = new SingleAttributeValue(new ArrayElement(sequence[i], i));
                andPredicate.AddChildPredicate(new EqualsPredicate(Source, currentElement, IsInverse));
            }

            foreach (var kvp in andPredicate.Enumerate(value))
            {
                IJSONDocument document = value.Store.GetDocument(kvp.Value, null);
                //Array array = document.GetArray(source.Attributes[0].Name);
                Array array = JsonDocumentUtil.GetArray(document, source.Attributes.Name);
                if (array.Length == sequence.Length)
                {
                    yield return(kvp);
                }
            }
        }
Exemplo n.º 4
0
 internal bool GetValue(IJSONDocument document, out AttributeValue value)
 {
     value = NullValue.Null;
     if (document != null)
     {
         IJsonValue wrapedValue;
         if (_fieldName.Evaluate(out wrapedValue, document))
         {
             if (wrapedValue.DataType != FieldDataType.Null)
             {
                 if ((wrapedValue.DataType != FieldDataType.Array && wrapedValue.DataType != FieldDataType.Embedded))
                 {
                     value = new SingleAttributeValue((IComparable)wrapedValue.Value, _sortOrder);
                 }
                 else
                 {
                     if (_type != FieldType.Ordered)
                     {
                         value = new SingleAttributeValue(wrapedValue, _sortOrder);
                     }
                     else
                     {
                         throw new QuerySystemException(ErrorCodes.Query.ARRAY_FOUND_IN_ORDERBY);
                     }
                 }
             }
             else
             {
                 value = new NullValue(_sortOrder);
             }
             return(true);
         }
         return(false);
     }
     return(false);
 }