/// <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)); }
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; }
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>(); }
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); } }
public virtual void SetInstanceBuilder(NeoDatis.Odb.Core.Layers.Layer2.Instance.IInstanceBuilder instanceBuilder) { 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; }
/// <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)); }