private static IDb4oLinqQuery <TSource> Process <TSource>(
            IDb4oLinqQuery <TSource> query,
            Func <Db4oQuery <TSource>, IQueryBuilderRecord> queryProcessor,
            Func <IDb4oLinqQueryInternal <TSource>, IEnumerable <TSource> > fallbackProcessor)
        {
            if (query == null)
            {
                throw new ArgumentNullException("query");
            }

            var candidate = query as Db4oQuery <TSource>;

            if (candidate == null)
            {
                return(new UnoptimizedQuery <TSource>(fallbackProcessor((IDb4oLinqQueryInternal <TSource>)EnsureDb4oQuery(query))));
            }
            try
            {
                IQueryBuilderRecord record = queryProcessor(candidate);
                return(new Db4oQuery <TSource>(candidate, record));
            }
            catch (QueryOptimizationException)
            {
                return(new UnoptimizedQuery <TSource>(fallbackProcessor(candidate)));
            }
        }
        private IQueryBuilderRecord ApplyDirection(IQueryBuilderRecord record)
        {
            var recorder = new QueryBuilderRecorder(record);

            recorder.Add(ctx => ApplyDirection(ctx.CurrentQuery));
            return(recorder.Record);
        }
Example #3
0
 public Db4oQuery(ISodaQueryFactory queryFactory)
 {
     if (queryFactory == null)
     {
         throw new ArgumentNullException("queryFactory");
     }
     _queryFactory = queryFactory;
     _record       = NullQueryBuilderRecord.Instance;
 }
Example #4
0
        public LinqQuery(IOdb odb)
        {
            if (odb == null)
            {
                throw new ArgumentNullException("odb");
            }

            _odb    = odb;
            _record = NullQueryBuilderRecord.Instance;
        }
		private IQueryBuilderRecord ApplyDirection(IQueryBuilderRecord record)
		{
			QueryBuilderRecorder recorder = new QueryBuilderRecorder(record);
			recorder.Add(ctx => ApplyDirection(ctx.CurrentQuery));
			return recorder.Record;
		}
Example #6
0
 public ChainedQueryBuilderRecord(IQueryBuilderRecord next, Action <QueryBuilderContext> action)
 {
     _next   = next;
     _action = action;
 }
Example #7
0
 public CompositeQueryBuilderRecord(IQueryBuilderRecord first, IQueryBuilderRecord second)
 {
     _first  = first;
     _second = second;
 }
Example #8
0
 public void Add(Action <QueryBuilderContext> action)
 {
     _last = new ChainedQueryBuilderRecord(_last, action);
 }
Example #9
0
 public QueryBuilderRecorder(IQueryBuilderRecord record)
 {
     _last = record;
 }
Example #10
0
 public ChainedQueryBuilderRecord(IQueryBuilderRecord next, Action<QueryBuilderContext> action)
 {
     _next = next;
     _action = action;
 }
Example #11
0
 public CompositeQueryBuilderRecord(IQueryBuilderRecord first, IQueryBuilderRecord second)
 {
     _first = first;
     _second = second;
 }
Example #12
0
 public void Add(Action<QueryBuilderContext> action)
 {
     _last = new ChainedQueryBuilderRecord(_last, action);
 }
Example #13
0
 public QueryBuilderRecorder(IQueryBuilderRecord record)
 {
     _last = record;
 }
Example #14
0
 public LinqQuery(LinqQuery <T> parent, IQueryBuilderRecord record)
 {
     _odb    = parent._odb;
     _record = new CompositeQueryBuilderRecord(parent._record, record);
 }
Example #15
0
 public Db4oQuery(Db4oQuery <T> parent, IQueryBuilderRecord record)
 {
     _queryFactory = parent.QueryFactory;
     _record       = new CompositeQueryBuilderRecord(parent.Record, record);
 }