Beispiel #1
0
 /// <summary>Returns a multi class query executor (polymorphic = true)</summary>
 /// <param name="query"></param>
 /// <param name="engine"></param>
 /// <param name="instanceBuilder"></param>
 /// <returns></returns>
 protected static NeoDatis.Odb.Core.Query.Execution.IQueryExecutor GetMultiClassQueryExecutor
     (NeoDatis.Odb.Core.Query.IQuery query, NeoDatis.Odb.Core.Layers.Layer3.IStorageEngine
     engine, NeoDatis.Odb.Core.Layers.Layer2.Instance.IInstanceBuilder instanceBuilder
     )
 {
     if (typeof(NeoDatis.Odb.Impl.Core.Query.Criteria.CriteriaQuery) == query.GetType(
             ))
     {
         return(new NeoDatis.Odb.Core.Query.Execution.MultiClassGenericQueryExecutor(new NeoDatis.Odb.Impl.Core.Query.Criteria.CriteriaQueryExecutor
                                                                                         (query, engine)));
     }
     if (typeof(NeoDatis.Odb.Impl.Core.Query.Values.ValuesCriteriaQuery) == query.GetType
             ())
     {
         return(new NeoDatis.Odb.Core.Query.Execution.MultiClassGenericQueryExecutor(new NeoDatis.Odb.Impl.Core.Query.Values.ValuesCriteriaQueryExecutor
                                                                                         (query, engine)));
     }
     if (typeof(NeoDatis.Odb.Core.Query.NQ.NativeQuery).IsAssignableFrom(query.GetType
                                                                             ()))
     {
         return(new NeoDatis.Odb.Core.Query.Execution.MultiClassGenericQueryExecutor(new NeoDatis.Odb.Impl.Core.Query.NQ.NativeQueryExecutor
                                                                                         (query, engine, instanceBuilder)));
     }
     if (typeof(NeoDatis.Odb.Core.Query.NQ.SimpleNativeQuery).IsAssignableFrom(query.GetType
                                                                                   ()))
     {
         return(new NeoDatis.Odb.Core.Query.Execution.MultiClassGenericQueryExecutor(new NeoDatis.Odb.Impl.Core.Query.NQ.NativeQueryExecutor
                                                                                         (query, engine, instanceBuilder)));
     }
     throw new NeoDatis.Odb.ODBRuntimeException(NeoDatis.Odb.Core.NeoDatisError.QueryTypeNotImplemented
                                                .AddParameter(query.GetType().FullName));
 }
Beispiel #2
0
        public ValuesQueryResultAction(NeoDatis.Odb.Core.Query.IValuesQuery query, NeoDatis.Odb.Core.Layers.Layer3.IStorageEngine
                                       storageEngine, NeoDatis.Odb.Core.Layers.Layer2.Instance.IInstanceBuilder instanceBuilder
                                       ) : base()
        {
            this.engine          = storageEngine;
            this.query           = query;
            this.queryHasOrderBy = query.HasOrderBy();
            this.instanceBuilder = instanceBuilder;
            this.returnArraySize = query.GetObjectActions().Count;
            System.Collections.IEnumerator iterator = query.GetObjectActions().GetEnumerator(
                );
            NeoDatis.Odb.Core.Query.Execution.IQueryFieldAction qfa = null;
            queryFieldActions = new NeoDatis.Odb.Core.Query.Execution.IQueryFieldAction[returnArraySize
                                ];
            int i = 0;

            while (iterator.MoveNext())
            {
                qfa = (NeoDatis.Odb.Core.Query.Execution.IQueryFieldAction)iterator.Current;
                queryFieldActions[i] = qfa.Copy();
                queryFieldActions[i].SetReturnInstance(query.ReturnInstance());
                queryFieldActions[i].SetInstanceBuilder(instanceBuilder);
                i++;
            }
        }
 /// <param name="size"></param>
 /// <param name="builder"></param>
 /// <param name="returnInstance"></param>
 public LazySimpleListOfAOI(int size, NeoDatis.Odb.Core.Layers.Layer2.Instance.IInstanceBuilder
                            builder, bool returnInstance) : base(10)
 {
     // If in client server mode, the instance builder will be set on the client.
     if (builder.IsLocal())
     {
         this.instanceBuilder = builder;
     }
     this.sessionId      = builder.GetSessionId();
     this.returnInstance = returnInstance;
 }
Beispiel #4
0
 public GroupByValuesQueryResultAction(NeoDatis.Odb.Core.Query.IValuesQuery query,
                                       NeoDatis.Odb.Core.Layers.Layer3.IStorageEngine storageEngine, NeoDatis.Odb.Core.Layers.Layer2.Instance.IInstanceBuilder
                                       instanceBuilder) : base()
 {
     this.query            = query;
     this.queryHasOrderBy  = query.HasOrderBy();
     this.instanceBuilder  = instanceBuilder;
     this.returnArraySize  = query.GetObjectActions().Count;
     this.groupByFieldList = query.GetGroupByFieldList();
     this.groupByResult    = new NeoDatis.Tool.Wrappers.Map.OdbHashMap <NeoDatis.Tool.Wrappers.OdbComparable
                                                                        , NeoDatis.Odb.Impl.Core.Query.Values.ValuesQueryResultAction>();
 }
Beispiel #5
0
 public CollectionQueryResultAction(NeoDatis.Odb.Core.Query.IQuery query, bool inMemory
                                    , NeoDatis.Odb.Core.Layers.Layer3.IStorageEngine storageEngine, bool returnObjects
                                    , NeoDatis.Odb.Core.Layers.Layer2.Instance.IInstanceBuilder instanceBuilder) : base
         ()
 {
     // TODO check if Object is ok here
     this.query           = query;
     this.inMemory        = inMemory;
     this.storageEngine   = storageEngine;
     this.returnObjects   = returnObjects;
     this.queryHasOrderBy = query.HasOrderBy();
     this.instanceBuilder = instanceBuilder;
 }
        public override T Get(int index)
        {
            object o = base[index];

            NeoDatis.Odb.Core.Layers.Layer2.Meta.AbstractObjectInfo aoi = (NeoDatis.Odb.Core.Layers.Layer2.Meta.AbstractObjectInfo
                                                                           )o;
            try
            {
                if (aoi.IsNull())
                {
                    return(default(T));
                }
                if (returnInstance)
                {
                    if (aoi.IsNative())
                    {
                        return((T)aoi.GetObject());
                    }
                    if (instanceBuilder == null)
                    {
                        // Lookup the instance builder
                        instanceBuilder = (NeoDatis.Odb.Core.Layers.Layer2.Instance.IInstanceBuilder)NeoDatis.Odb.Core.Lookup.LookupFactory
                                          .Get(sessionId).Get(NeoDatis.Odb.Impl.Core.Lookup.Lookups.InstanceBuilder);
                        if (instanceBuilder == null)
                        {
                            throw new NeoDatis.Odb.ODBRuntimeException(NeoDatis.Odb.Core.NeoDatisError.LookupKeyNotFound
                                                                       .AddParameter(NeoDatis.Odb.Impl.Core.Lookup.Lookups.InstanceBuilder));
                        }
                    }
                    return((T)instanceBuilder.BuildOneInstance((NeoDatis.Odb.Core.Layers.Layer2.Meta.NonNativeObjectInfo
                                                                )aoi));
                }
                // No need to return Instance return the layer 2 representation
                o = aoi;
                return((T)o);
            }
            catch (System.Exception e)
            {
                throw new NeoDatis.Odb.ODBRuntimeException(NeoDatis.Odb.Core.NeoDatisError.ErrorWhileGettingObjectFromListAtIndex
                                                           .AddParameter(index), e);
            }
        }
Beispiel #7
0
 public virtual void SetInstanceBuilder(NeoDatis.Odb.Core.Layers.Layer2.Instance.IInstanceBuilder
                                        instanceBuilder)
 {
     this.instanceBuilder = instanceBuilder;
 }
Beispiel #8
0
 public NativeQueryExecutor(NeoDatis.Odb.Core.Query.IQuery query, NeoDatis.Odb.Core.Layers.Layer3.IStorageEngine
                            engine, NeoDatis.Odb.Core.Layers.Layer2.Instance.IInstanceBuilder instanceBuilder
                            ) : base(query, engine)
 {
     this.instanceBuilder = instanceBuilder;
 }
		public NativeQueryExecutor(NeoDatis.Odb.Core.Query.IQuery query, NeoDatis.Odb.Core.Layers.Layer3.IStorageEngine
			 engine, NeoDatis.Odb.Core.Layers.Layer2.Instance.IInstanceBuilder instanceBuilder
			) : base(query, engine)
		{
			this.instanceBuilder = instanceBuilder;
		}
		public virtual void SetInstanceBuilder(NeoDatis.Odb.Core.Layers.Layer2.Instance.IInstanceBuilder
			 instanceBuilder)
		{
			this.instanceBuilder = instanceBuilder;
		}
Beispiel #11
0
 /// <summary>Returns a query executor according to the query type</summary>
 /// <param name="query"></param>
 /// <param name="engine"></param>
 /// <param name="instanceBuilder"></param>
 /// <returns></returns>
 public static NeoDatis.Odb.Core.Query.Execution.IQueryExecutor GetQueryExecutor(NeoDatis.Odb.Core.Query.IQuery
                                                                                 query, NeoDatis.Odb.Core.Layers.Layer3.IStorageEngine engine, NeoDatis.Odb.Core.Layers.Layer2.Instance.IInstanceBuilder
                                                                                 instanceBuilder)
 {
     if (query.IsPolymorphic())
     {
         return(GetMultiClassQueryExecutor(query, engine, instanceBuilder));
     }
     return(GetSingleClassQueryExecutor(query, engine, instanceBuilder));
 }