Beispiel #1
0
 internal virtual void EvaluatePending(QCandidate a_root, QPending a_pending, int
     a_secondResult)
 {
     var res = i_evaluator.Not(i_and
         ? ((a_pending._result + a_secondResult) > 0)
         : (
             a_pending._result + a_secondResult) > QPending.False);
     if (HasJoins())
     {
         var i = IterateJoins();
         while (i.MoveNext())
         {
             var qcj = (QConJoin
                 ) i.Current;
             a_root.Evaluate(new QPending(qcj, this, res));
         }
     }
     else
     {
         if (!res)
         {
             Constraint1().DoNotInclude(a_root);
             Constraint2().DoNotInclude(a_root);
         }
     }
 }
Beispiel #2
0
            public void Visit(object obj)
            {
                QCandidate candidate = (QCandidate)obj;

                sb.Append(" ");
                sb.Append(candidate._key);
            }
Beispiel #3
0
            public void Visit(object a_object)
            {
                QCandidate candidate = (QCandidate)a_object;

                if (candidate.Include())
                {
                    TreeInt     ids    = new TreeInt(candidate._key);
                    ByRef       idsNew = new ByRef();
                    IEnumerator itPath = executionPath.GetEnumerator();
                    while (itPath.MoveNext())
                    {
                        idsNew.value = null;
                        string fieldName = (string)(itPath.Current);
                        if (ids != null)
                        {
                            ids.Traverse(new _IVisitor4_385(this, stream, fieldName, idsNew));
                        }
                        ids = (TreeInt)((TreeInt)idsNew.value);
                    }
                    if (ids != null)
                    {
                        ids.Traverse(new _IVisitor4_406(result));
                    }
                }
            }
Beispiel #4
0
        internal virtual void EvaluatePending(QCandidate a_root, QPending a_pending, int
                                              a_secondResult)
        {
            bool res = i_evaluator.Not(i_and ? ((a_pending._result + a_secondResult) > 0) : (
                                           a_pending._result + a_secondResult) > QPending.False);

            if (HasJoins())
            {
                IEnumerator i = IterateJoins();
                while (i.MoveNext())
                {
                    Db4objects.Db4o.Internal.Query.Processor.QConJoin qcj = (Db4objects.Db4o.Internal.Query.Processor.QConJoin
                                                                             )i.Current;
                    a_root.Evaluate(new QPending(qcj, this, res));
                }
            }
            else
            {
                if (!res)
                {
                    Constraint1().DoNotInclude(a_root);
                    Constraint2().DoNotInclude(a_root);
                }
            }
        }
Beispiel #5
0
        public QCandidate ReadSubCandidate(QueryingReadContext context, ITypeHandler4 handler
                                           )
        {
            ObjectID objectID = ObjectID.NotPossible;

            try
            {
                int offset = context.Offset();
                if (handler is IReadsObjectIds)
                {
                    objectID = ((IReadsObjectIds)handler).ReadObjectID(context);
                }
                if (objectID.IsValid())
                {
                    return(new QCandidate(this, null, objectID._id));
                }
                if (objectID == ObjectID.NotPossible)
                {
                    context.Seek(offset);
                    object obj = context.Read(handler);
                    if (obj != null)
                    {
                        QCandidate candidate = new QCandidate(this, obj, context.Container().GetID(context
                                                                                                   .Transaction(), obj));
                        candidate.ClassMetadata(context.Container().ClassMetadataForObject(obj));
                        return(candidate);
                    }
                }
            }
            catch (Exception)
            {
            }
            // FIXME: Catchall
            return(null);
        }
Beispiel #6
0
 public _IClosure4_318(QCandidate _enclosing, ITypeHandler4 arrayElementHandler, IReadBuffer
                       buffer, QCandidates candidates)
 {
     this._enclosing          = _enclosing;
     this.arrayElementHandler = arrayElementHandler;
     this.buffer     = buffer;
     this.candidates = candidates;
 }
Beispiel #7
0
		internal override bool Evaluate(QCandidate a_candidate)
		{
			if (!a_candidate.FieldIsAvailable())
			{
				VisitOnNull(a_candidate.GetRoot());
			}
			return true;
		}
Beispiel #8
0
 internal override bool Evaluate(QCandidate a_candidate)
 {
     if (!a_candidate.FieldIsAvailable())
     {
         VisitOnNull(a_candidate.GetRoot());
     }
     return(true);
 }
Beispiel #9
0
 internal virtual IPreparedComparison PrepareComparison(QCandidate candidate)
 {
     if (_preparedComparison != null)
     {
         return(_preparedComparison);
     }
     return(candidate.PrepareComparison(Container(), i_object));
 }
Beispiel #10
0
 internal override bool Evaluate(QConObject a_constraint, QCandidate a_candidate,
                                 object a_value)
 {
     if (i_objectID == 0)
     {
         i_objectID = a_constraint.GetObjectID();
     }
     return(a_candidate._key == i_objectID);
 }
Beispiel #11
0
		internal override bool Evaluate(QConObject a_constraint, QCandidate a_candidate, 
			object a_value)
		{
			if (i_objectID == 0)
			{
				i_objectID = a_constraint.GetObjectID();
			}
			return a_candidate._key == i_objectID;
		}
Beispiel #12
0
 private ITypeHandler4 TypeHandlerFor(Db4objects.Db4o.Internal.Query.Processor.QCandidate
                                      candidate)
 {
     Db4objects.Db4o.Internal.ClassMetadata classMetadata = candidate.ReadClassMetadata
                                                                ();
     if (classMetadata != null)
     {
         return(classMetadata.TypeHandler());
     }
     return(null);
 }
Beispiel #13
0
 internal override bool Evaluate(QCandidate a_candidate)
 {
     try
     {
         return(a_candidate.Evaluate(this, i_evaluator));
     }
     catch (Exception e)
     {
         return(false);
     }
 }
Beispiel #14
0
        private ITypeHandler4 TypeHandlerFor(QCandidate
                                             candidate)
        {
            var classMetadata = candidate.ReadClassMetadata
                                    ();

            if (classMetadata != null)
            {
                return(classMetadata.TypeHandler());
            }
            return(null);
        }
Beispiel #15
0
		internal override bool Evaluate(QConObject a_constraint, QCandidate a_candidate, 
			object a_value)
		{
			IEnumerator i = i_evaluators.GetEnumerator();
			while (i.MoveNext())
			{
				if (((QE)i.Current).Evaluate(a_constraint, a_candidate, a_value))
				{
					return true;
				}
			}
			return false;
		}
Beispiel #16
0
            public object Apply(object current)
            {
                int            id        = ((int)current);
                QCandidateBase candidate = new QCandidate(this._enclosing, null, id);

                this._enclosing._result.SingleCandidate(candidate);
                this._enclosing.Evaluate();
                if (!candidate.Include())
                {
                    return(Iterators.Skip);
                }
                return(current);
            }
Beispiel #17
0
            public object Apply(object current)
            {
                int        id        = ((int)current);
                QCandidate candidate = new QCandidate(this._enclosing, null, id);

                this._enclosing.i_root = candidate;
                this._enclosing.Evaluate();
                if (!candidate.Include())
                {
                    return(Iterators.Skip);
                }
                return(current);
            }
Beispiel #18
0
 public void Visit(object obj)
 {
     Db4objects.Db4o.Internal.Query.Processor.QCandidate cand = (Db4objects.Db4o.Internal.Query.Processor.QCandidate
                                                                 )obj;
     if (cand.Include())
     {
         innerRes[0] = !isNot;
     }
     if (cand._pendingJoins != null)
     {
         cand._pendingJoins.Traverse(new _IVisitor4_173(pending));
     }
 }
		internal override bool Evaluate(QCandidate a_candidate)
		{
			bool res = true;
			IReflectClass claxx = a_candidate.ClassReflector();
			if (claxx == null)
			{
				res = false;
			}
			else
			{
				res = i_equal ? _claxx.Equals(claxx) : _claxx.IsAssignableFrom(claxx);
			}
			return i_evaluator.Not(res);
		}
Beispiel #20
0
		internal virtual bool Evaluate(QConObject constraint, QCandidate candidate, object
			 obj)
		{
			IPreparedComparison prepareComparison = constraint.PrepareComparison(candidate);
			if (obj == null)
			{
				return prepareComparison is Null;
			}
			if (prepareComparison is PreparedArrayContainsComparison)
			{
				return ((PreparedArrayContainsComparison)prepareComparison).IsEqual(obj);
			}
			return prepareComparison.CompareTo(obj) == 0;
		}
Beispiel #21
0
 public override object ShallowClone()
 {
     Db4objects.Db4o.Internal.Query.Processor.QCandidate qcan = new Db4objects.Db4o.Internal.Query.Processor.QCandidate
                                                                    (_candidates);
     qcan.SetBytes(_bytes);
     qcan._dependants    = _dependants;
     qcan._include       = _include;
     qcan._member        = _member;
     qcan._pendingJoins  = _pendingJoins;
     qcan._root          = _root;
     qcan._classMetadata = _classMetadata;
     qcan._fieldMetadata = _fieldMetadata;
     return(base.ShallowCloneInternal(qcan));
 }
Beispiel #22
0
		public QCandidate Add(QCandidate candidate)
		{
			i_root = Tree.Add(i_root, candidate);
			if (candidate._size == 0)
			{
				// This means that the candidate was already present
				// and QCandidate does not allow duplicates.
				// In this case QCandidate#isDuplicateOf will have
				// placed the existing QCandidate in the i_root
				// variable of the new candidate. We return it here: 
				return candidate.GetRoot();
			}
			return candidate;
		}
Beispiel #23
0
        internal override bool Evaluate(QConObject a_constraint, QCandidate a_candidate,
                                        object a_value)
        {
            var i = i_evaluators.GetEnumerator();

            while (i.MoveNext())
            {
                if (((QE)i.Current).Evaluate(a_constraint, a_candidate, a_value))
                {
                    return(true);
                }
            }
            return(false);
        }
		internal override bool Evaluate(QConObject constraint, QCandidate candidate, object
			 obj)
		{
			if (obj == null)
			{
				return false;
			}
			IPreparedComparison preparedComparison = constraint.PrepareComparison(candidate);
			if (preparedComparison is PreparedArrayContainsComparison)
			{
				return ((PreparedArrayContainsComparison)preparedComparison).IsGreaterThan(obj);
			}
			return preparedComparison.CompareTo(obj) > 0;
		}
Beispiel #25
0
 public QCandidate Add(QCandidate candidate)
 {
     i_root = Tree.Add(i_root, candidate);
     if (candidate._size == 0)
     {
         // This means that the candidate was already present
         // and QCandidate does not allow duplicates.
         // In this case QCandidate#isDuplicateOf will have
         // placed the existing QCandidate in the i_root
         // variable of the new candidate. We return it here:
         return(candidate.GetRoot());
     }
     return(candidate);
 }
Beispiel #26
0
 internal virtual void DoNotInclude(QCandidate a_root)
 {
     if (DTrace.enabled)
     {
         DTrace.Donotinclude.Log(Id());
     }
     if (i_parent != null)
     {
         i_parent.Visit1(a_root, this, false);
     }
     else
     {
         a_root.DoNotInclude();
     }
 }
Beispiel #27
0
        public override object ShallowClone()
        {
            var qcan = new QCandidate
                           (_candidates);

            qcan.SetBytes(_bytes);
            qcan._dependants    = _dependants;
            qcan._include       = _include;
            qcan._member        = _member;
            qcan._pendingJoins  = _pendingJoins;
            qcan._root          = _root;
            qcan._classMetadata = _classMetadata;
            qcan._fieldMetadata = _fieldMetadata;
            return(ShallowCloneInternal(qcan));
        }
Beispiel #28
0
        internal override bool Evaluate(QCandidate a_candidate)
        {
            bool          res   = true;
            IReflectClass claxx = a_candidate.ClassReflector();

            if (claxx == null)
            {
                res = false;
            }
            else
            {
                res = i_equal ? _claxx.Equals(claxx) : _claxx.IsAssignableFrom(claxx);
            }
            return(i_evaluator.Not(res));
        }
Beispiel #29
0
        internal override bool Evaluate(QConObject constraint, QCandidate candidate, object
                                        obj)
        {
            if (obj == null)
            {
                return(false);
            }
            IPreparedComparison preparedComparison = constraint.PrepareComparison(candidate);

            if (preparedComparison is PreparedArrayContainsComparison)
            {
                return(((PreparedArrayContainsComparison)preparedComparison).IsGreaterThan(obj));
            }
            return(preparedComparison.CompareTo(obj) > 0);
        }
Beispiel #30
0
        internal virtual bool Evaluate(QConObject constraint, QCandidate candidate, object
                                       obj)
        {
            IPreparedComparison prepareComparison = constraint.PrepareComparison(candidate);

            if (obj == null)
            {
                return(prepareComparison is Null);
            }
            if (prepareComparison is PreparedArrayContainsComparison)
            {
                return(((PreparedArrayContainsComparison)prepareComparison).IsEqual(obj));
            }
            return(prepareComparison.CompareTo(obj) == 0);
        }
Beispiel #31
0
        internal void VisitOnNull(QCandidate a_root)
        {
            // TODO: It may be more efficient to rule out
            // all possible keepOnNull issues when starting
            // evaluation.
            IEnumerator i = IterateChildren();

            while (i.MoveNext())
            {
                ((Db4objects.Db4o.Internal.Query.Processor.QCon)i.Current).VisitOnNull(a_root);
            }
            if (VisitSelfOnNull())
            {
                Visit(a_root, IsNullConstraint());
            }
        }
Beispiel #32
0
        public void Visit(object a_tree)
        {
            QCandidate parent = (QCandidate)a_tree;

            if (parent.CreateChild(this))
            {
                return;
            }
            // No object found.
            // All children constraints are necessarily false.
            // Check immediately.
            IEnumerator i = IterateConstraints();

            while (i.MoveNext())
            {
                ((QCon)i.Current).VisitOnNull(parent.GetRoot());
            }
        }
 internal override bool Evaluate(QConObject constraint, QCandidate candidate, object
                                 obj)
 {
     if (obj != null)
     {
         if (obj is ByteArrayBuffer)
         {
             obj = candidate.ReadString((ByteArrayBuffer)obj);
         }
         string candidateStringValue = obj.ToString();
         string stringConstraint     = constraint.GetObject().ToString();
         if (!caseSensitive)
         {
             candidateStringValue = candidateStringValue.ToLower();
             stringConstraint     = stringConstraint.ToLower();
         }
         return(CompareStrings(candidateStringValue, stringConstraint));
     }
     return(constraint.GetObject() == null);
 }
		internal override bool Evaluate(QConObject constraint, QCandidate candidate, object
			 obj)
		{
			if (obj != null)
			{
				if (obj is ByteArrayBuffer)
				{
					obj = candidate.ReadString((ByteArrayBuffer)obj);
				}
				string candidateStringValue = obj.ToString();
				string stringConstraint = constraint.GetObject().ToString();
				if (!caseSensitive)
				{
					candidateStringValue = candidateStringValue.ToLower();
					stringConstraint = stringConstraint.ToLower();
				}
				return CompareStrings(candidateStringValue, stringConstraint);
			}
			return constraint.GetObject() == null;
		}
Beispiel #35
0
        public override void Visit(object obj)
        {
            QCandidate qc        = (QCandidate)obj;
            bool       res       = true;
            bool       processed = false;

            if (_checkClassMetadataOnly)
            {
                ClassMetadata yc = qc.ReadClassMetadata();
                if (yc != null)
                {
                    res       = i_evaluator.Not(_classMetadata.GetHigherHierarchy(yc) == _classMetadata);
                    processed = true;
                }
            }
            if (!processed)
            {
                res = Evaluate(qc);
            }
            Visit1(qc.GetRoot(), this, res);
        }
Beispiel #36
0
 internal virtual void Visit1(QCandidate root, Db4objects.Db4o.Internal.Query.Processor.QCon
                              reason, bool res)
 {
     // The a_reason parameter makes it eays to distinguish
     // between calls from above (a_reason == this) and below.
     if (HasJoins())
     {
         // this should probably be on the Join
         IEnumerator i = IterateJoins();
         while (i.MoveNext())
         {
             root.Evaluate(new QPending((QConJoin)i.Current, this, res));
         }
     }
     else
     {
         if (!res)
         {
             DoNotInclude(root);
         }
     }
 }
Beispiel #37
0
        public override void Visit(object obj)
        {
            QCandidate candidate = (QCandidate)obj;

            // force activation outside the try block
            // so any activation errors bubble up
            ForceActivation(candidate);
            try
            {
                Platform4.EvaluationEvaluate(i_evaluation, candidate);
            }
            catch (Exception)
            {
                candidate.Include(false);
            }
            // TODO: implement Exception callback for the user coder
            // at least for test cases
            if (!candidate._include)
            {
                DoNotInclude(candidate.GetRoot());
            }
        }
Beispiel #38
0
 private Db4objects.Db4o.Internal.Query.Processor.QCandidate ReadSubCandidate(QCandidates
     candidateCollection)
 {
     Read();
     if (_bytes == null || _fieldMetadata == null)
     {
         return null;
     }
     int offset = CurrentOffSet();
     QueryingReadContext context = NewQueryingReadContext();
     ITypeHandler4 handler = HandlerRegistry.CorrectHandlerVersion(context, _fieldMetadata
         .GetHandler());
     Db4objects.Db4o.Internal.Query.Processor.QCandidate subCandidate = candidateCollection
         .ReadSubCandidate(context, handler);
     Seek(offset);
     if (subCandidate != null)
     {
         subCandidate._root = GetRoot();
         return subCandidate;
     }
     return null;
 }
Beispiel #39
0
		private void ForceActivation(QCandidate candidate)
		{
			candidate.GetObject();
		}
Beispiel #40
0
		internal virtual void DoNotInclude(QCandidate a_root)
		{
			if (DTrace.enabled)
			{
				DTrace.Donotinclude.Log(Id());
			}
			if (i_parent != null)
			{
				i_parent.Visit1(a_root, this, false);
			}
			else
			{
				a_root.DoNotInclude();
			}
		}
Beispiel #41
0
		/// <param name="candidate"></param>
		internal virtual bool Evaluate(QCandidate candidate)
		{
			throw Exceptions4.VirtualException();
		}
Beispiel #42
0
 internal virtual void AddDependant(QCandidate
     a_candidate)
 {
     _dependants = new List4(_dependants, a_candidate);
 }
Beispiel #43
0
		internal virtual QCandidate ToQCandidate(QCandidates candidates)
		{
			QCandidate qc = new QCandidate(candidates, null, _key);
			qc._preceding = ToQCandidate((Db4objects.Db4o.Internal.TreeInt)((Tree)_preceding)
				, candidates);
			qc._subsequent = ToQCandidate((Db4objects.Db4o.Internal.TreeInt)((Tree)_subsequent
				), candidates);
			qc._size = _size;
			return qc;
		}
Beispiel #44
0
		public override Tree OnAttemptToAddDuplicate(Tree oldNode)
		{
			_size = 0;
			_root = (Db4objects.Db4o.Internal.Query.Processor.QCandidate)oldNode;
			return oldNode;
		}
Beispiel #45
0
		internal override bool Evaluate(QCandidate a_candidate)
		{
			try
			{
				return a_candidate.Evaluate(this, i_evaluator);
			}
			catch (Exception e)
			{
				return false;
			}
		}
Beispiel #46
0
		public QCandidate ReadSubCandidate(QueryingReadContext context, ITypeHandler4 handler
			)
		{
			ObjectID objectID = ObjectID.NotPossible;
			try
			{
				int offset = context.Offset();
				if (handler is IReadsObjectIds)
				{
					objectID = ((IReadsObjectIds)handler).ReadObjectID(context);
				}
				if (objectID.IsValid())
				{
					return new QCandidate(this, null, objectID._id);
				}
				if (objectID == ObjectID.NotPossible)
				{
					context.Seek(offset);
					object obj = context.Read(handler);
					if (obj != null)
					{
						QCandidate candidate = new QCandidate(this, obj, context.Container().GetID(context
							.Transaction(), obj));
						candidate.ClassMetadata(context.Container().ClassMetadataForObject(obj));
						return candidate;
					}
				}
			}
			catch (Exception)
			{
			}
			// FIXME: Catchall
			return null;
		}
Beispiel #47
0
 internal virtual QCandidate ToQCandidate(QCandidates candidates)
 {
     var qc = new QCandidate(candidates, null, _key);
     qc._preceding = ToQCandidate((TreeInt) _preceding
         , candidates);
     qc._subsequent = ToQCandidate((TreeInt) _subsequent, candidates);
     qc._size = _size;
     return qc;
 }
Beispiel #48
0
 public _IClosure4_318(QCandidate _enclosing, ITypeHandler4 arrayElementHandler, IReadBuffer
     buffer, QCandidates candidates)
 {
     this._enclosing = _enclosing;
     this.arrayElementHandler = arrayElementHandler;
     this.buffer = buffer;
     this.candidates = candidates;
 }
Beispiel #49
0
 public _IVisitor4_229(QCandidate _enclosing)
 {
     this._enclosing = _enclosing;
 }
Beispiel #50
0
 public override Tree OnAttemptToAddDuplicate(Tree oldNode)
 {
     _size = 0;
     _root = (QCandidate) oldNode;
     return oldNode;
 }
Beispiel #51
0
 private ITypeHandler4 TypeHandlerFor(QCandidate
     candidate)
 {
     var classMetadata = candidate.ReadClassMetadata
         ();
     if (classMetadata != null)
     {
         return classMetadata.TypeHandler();
     }
     return null;
 }
Beispiel #52
0
		public override object ShallowClone()
		{
			Db4objects.Db4o.Internal.Query.Processor.QCandidate qcan = new Db4objects.Db4o.Internal.Query.Processor.QCandidate
				(_candidates);
			qcan.SetBytes(_bytes);
			qcan._dependants = _dependants;
			qcan._include = _include;
			qcan._member = _member;
			qcan._pendingJoins = _pendingJoins;
			qcan._root = _root;
			qcan._classMetadata = _classMetadata;
			qcan._fieldMetadata = _fieldMetadata;
			return base.ShallowCloneInternal(qcan);
		}
		internal override void DoNotInclude(QCandidate a_root)
		{
			Constraint1().DoNotInclude(a_root);
			Constraint2().DoNotInclude(a_root);
		}
Beispiel #54
0
		internal void VisitOnNull(QCandidate a_root)
		{
			// TODO: It may be more efficient to rule out 
			// all possible keepOnNull issues when starting
			// evaluation.
			IEnumerator i = IterateChildren();
			while (i.MoveNext())
			{
				((Db4objects.Db4o.Internal.Query.Processor.QCon)i.Current).VisitOnNull(a_root);
			}
			if (VisitSelfOnNull())
			{
				Visit(a_root, IsNullConstraint());
			}
		}
Beispiel #55
0
		internal virtual void Visit1(QCandidate root, Db4objects.Db4o.Internal.Query.Processor.QCon
			 reason, bool res)
		{
			// The a_reason parameter makes it eays to distinguish
			// between calls from above (a_reason == this) and below.
			if (HasJoins())
			{
				// this should probably be on the Join
				IEnumerator i = IterateJoins();
				while (i.MoveNext())
				{
					root.Evaluate(new QPending((QConJoin)i.Current, this, res));
				}
			}
			else
			{
				if (!res)
				{
					DoNotInclude(root);
				}
			}
		}
Beispiel #56
0
		internal virtual void Visit(QCandidate a_root, bool res)
		{
			Visit1(a_root, this, i_evaluator.Not(res));
		}
Beispiel #57
0
 internal override bool Evaluate(QCandidate a_candidate)
 {
     return(_value);
 }
Beispiel #58
0
		internal virtual IPreparedComparison PrepareComparison(QCandidate candidate)
		{
			if (_preparedComparison != null)
			{
				return _preparedComparison;
			}
			return candidate.PrepareComparison(Container(), i_object);
		}
Beispiel #59
0
			public object Apply(object current)
			{
				int id = ((int)current);
				QCandidate candidate = new QCandidate(this._enclosing, null, id);
				this._enclosing.i_root = candidate;
				this._enclosing.Evaluate();
				if (!candidate.Include())
				{
					return Iterators.Skip;
				}
				return current;
			}
Beispiel #60
0
 public override object ShallowClone()
 {
     var qcan = new QCandidate
         (_candidates);
     qcan.SetBytes(_bytes);
     qcan._dependants = _dependants;
     qcan._include = _include;
     qcan._member = _member;
     qcan._pendingJoins = _pendingJoins;
     qcan._root = _root;
     qcan._classMetadata = _classMetadata;
     qcan._fieldMetadata = _fieldMetadata;
     return ShallowCloneInternal(qcan);
 }