protected internal virtual Net.Vpc.Upa.Impl.Persistence.QueryExecutor CreateNativeSQL(Net.Vpc.Upa.Filters.FieldFilter fieldFilter) { // applyParameters(); lastQueryExecutor = store.CreateExecutor(query, parametersByName, parametersByIndex, IsUpdatable(), fieldFilter, context.SetHints(GetHints())); Net.Vpc.Upa.Expressions.EntityStatement statement = lastQueryExecutor.GetMetaData().GetStatement(); return(lastQueryExecutor); }
public override System.Collections.Generic.IList <T> GetValueList <T>(int index) /* throws Net.Vpc.Upa.Exceptions.UPAException */ { if (!context.GetPersistenceUnit().GetPersistenceGroup().CurrentSessionExists()) { if (sessionAwareInstance == null) { sessionAwareInstance = context.GetPersistenceUnit().GetPersistenceGroup().GetContext().MakeSessionAware <Net.Vpc.Upa.Impl.Persistence.DefaultQuery>(this); } return(sessionAwareInstance.GetValueList <T>(index)); } try { Net.Vpc.Upa.Impl.Persistence.QueryExecutor queryExecutor = ExecuteQuery(Net.Vpc.Upa.Impl.Util.Filters.Fields2.READ); if (index < 0 || index > (queryExecutor.GetMetaData().GetFields()).Count) { throw new System.IndexOutOfRangeException("Invalid index " + index); } Net.Vpc.Upa.Impl.Persistence.ValueList <T> r = new Net.Vpc.Upa.Impl.Persistence.ValueList <T>(queryExecutor, index); allResults.Add(r); if (!IsLazyListLoadingEnabled()) { //force loading r.LoadAll(); } return(r); } catch (System.Exception e) { throw new Net.Vpc.Upa.Exceptions.FindException(e, new Net.Vpc.Upa.Types.I18NString("FindFailed")); } }
public override Net.Vpc.Upa.Persistence.ResultMetaData GetMetaData() /* throws Net.Vpc.Upa.Exceptions.UPAException */ { if (lastQueryExecutor == null) { throw new Net.Vpc.Upa.Exceptions.UPAException("NoQueryExecutedYet"); } return(lastQueryExecutor.GetMetaData()); }
public DefaultObjectQueryResultLazyList(Net.Vpc.Upa.Impl.Persistence.QueryExecutor queryExecutor, bool loadManyToOneRelations, bool defaultsToRecord, bool relationAsRecord, bool supportCache, bool updatable, Net.Vpc.Upa.Impl.Persistence.Result.QueryResultRelationLoader loader, Net.Vpc.Upa.Impl.Persistence.Result.QueryResultItemBuilder resultBuilder) : base(queryExecutor) { this.resultBuilder = resultBuilder; this.loader = loader; this.defaultsToRecord = defaultsToRecord; this.relationAsRecord = relationAsRecord; this.loadManyToOneRelations = loadManyToOneRelations; metaData = queryExecutor.GetMetaData(); hints = queryExecutor.GetHints(); if (hints == null) { hints = new System.Collections.Generic.Dictionary <string, object>(); } else { hints = new System.Collections.Generic.Dictionary <string, object>(hints); } if (supportCache) { Net.Vpc.Upa.Impl.Util.CacheMap <Net.Vpc.Upa.NamedId, object> sharedCache = (Net.Vpc.Upa.Impl.Util.CacheMap <Net.Vpc.Upa.NamedId, object>)Net.Vpc.Upa.Impl.FwkConvertUtils.GetMapValue <string, object>(hints, "queryCache"); if (sharedCache == null) { sharedCache = new Net.Vpc.Upa.Impl.Util.CacheMap <Net.Vpc.Upa.NamedId, object>(1000); hints["queryCache"] = sharedCache; } referencesCache = sharedCache; } loaderContext = new Net.Vpc.Upa.Impl.Persistence.Result.LoaderContext(referencesCache, hints); System.Collections.Generic.Dictionary <string, Net.Vpc.Upa.Impl.Persistence.Result.TypeInfo> bindingToTypeInfos0 = new System.Collections.Generic.Dictionary <string, Net.Vpc.Upa.Impl.Persistence.Result.TypeInfo>(); ofactory = Net.Vpc.Upa.UPA.GetPersistenceUnit().GetFactory(); Net.Vpc.Upa.Impl.Persistence.NativeField[] fields = queryExecutor.GetFields(); for (int i = 0; i < fields.Length; i++) { Net.Vpc.Upa.Impl.Persistence.NativeField nativeField = fields[i]; Net.Vpc.Upa.Impl.Persistence.Result.FieldInfo f = new Net.Vpc.Upa.Impl.Persistence.Result.FieldInfo(); f.dbIndex = i; f.nativeField = nativeField; f.name = nativeField.GetName(); string gn = nativeField.GetGroupName(); if (gn == null) { gn = nativeField.GetExprString(); } Net.Vpc.Upa.Impl.Persistence.Result.TypeInfo t = Net.Vpc.Upa.Impl.FwkConvertUtils.GetMapValue <string, Net.Vpc.Upa.Impl.Persistence.Result.TypeInfo>(bindingToTypeInfos0, gn); if (t == null) { if (nativeField.GetField() != null) { t = new Net.Vpc.Upa.Impl.Persistence.Result.TypeInfo(gn, nativeField.GetField().GetEntity()); t.record = gn.Contains(".") ? relationAsRecord : defaultsToRecord; bindingToTypeInfos0[gn] = t; } else { t = new Net.Vpc.Upa.Impl.Persistence.Result.TypeInfo(gn, null); t.record = false; //n.contains(".") ? relationAsRecord : defaultsToRecord; bindingToTypeInfos0[gn] = t; } } // if(!bindingToTypeInfos0.containsKey(nativeField.getExprString())) { // bindingToTypeInfos0.put(nativeField.getExprString(), t); // }else{ // System.out.println("why"); // } f.field = nativeField.GetField(); if (loadManyToOneRelations) { if (f.field != null) { if (f.field.GetDataType() is Net.Vpc.Upa.Types.ManyToOneType) { Net.Vpc.Upa.Entity r = ((Net.Vpc.Upa.Types.ManyToOneType)f.field.GetDataType()).GetTargetEntity(); f.referencedEntity = r; } foreach (Net.Vpc.Upa.Relationship relationship in f.field.GetManyToOneRelationships()) { if (relationship.GetSourceRole().GetEntityField() != null) { t.manyToOneRelations.Add(relationship); } } } } f.typeInfo = t; t.allFields.Add(f); if (t.leadPrimaryField == null && f.nativeField.GetField() != null && f.nativeField.GetField().IsId()) { t.leadPrimaryField = f; } if (t.leadField == null) { t.leadField = f; } f.setterMethodName = Net.Vpc.Upa.Impl.Util.PlatformUtils.SetterName(nativeField.GetName()); t.fields[f.setterMethodName] = f; } bindingToTypeInfos = bindingToTypeInfos0; typeInfos = (bindingToTypeInfos0).Values.ToArray(); // all indexes to fill with values from the query System.Collections.Generic.ISet <int?> allIndexes = new System.Collections.Generic.HashSet <int?>(); for (int i = 0; i < (metaData.GetFields()).Count; i++) { allIndexes.Add(i); } // map expression to relative TypeInfo/FieldInfo System.Collections.Generic.IDictionary <string, object> visitedIndexes = new System.Collections.Generic.Dictionary <string, object>(); for (int i = 0; i < typeInfos.Length; i++) { Net.Vpc.Upa.Impl.Persistence.Result.TypeInfo typeInfo = typeInfos[i]; // if (aliasName.equals(typeInfo.binding)) { // entityIndex = i; // } typeInfo.infosArray = typeInfo.allFields.ToArray(); typeInfo.update = false; foreach (Net.Vpc.Upa.Impl.Persistence.Result.FieldInfo field in typeInfo.infosArray) { if (!field.nativeField.IsExpanded() && field.nativeField.GetIndex() >= 0) { field.update = true; field.indexesToUpdate.Add(field.nativeField.GetIndex()); allIndexes.Remove(field.nativeField.GetIndex()); visitedIndexes[field.nativeField.GetExprString()] = field; } } if (typeInfo.entity == null) { typeInfo.update = true; } else { System.Collections.Generic.IList <Net.Vpc.Upa.Persistence.ResultField> fields1 = metaData.GetFields(); for (int i1 = 0; i1 < (fields1).Count; i1++) { Net.Vpc.Upa.Persistence.ResultField resultField = fields1[i1]; if (resultField.GetExpression().ToString().Equals(typeInfo.binding)) { typeInfo.update = true; typeInfo.indexesToUpdate.Add(i1); allIndexes.Remove(i1); visitedIndexes[typeInfo.binding] = typeInfo; break; } } } } //when an expression is to be expanded twice, implementation ignores second expansion // so we must find the equivalent expression index to handle foreach (int?remaining in allIndexes) { string k = metaData.GetFields()[(remaining).Value].GetExpression().ToString(); object o = Net.Vpc.Upa.Impl.FwkConvertUtils.GetMapValue <string, object>(visitedIndexes, k); if (o is Net.Vpc.Upa.Impl.Persistence.Result.TypeInfo) { ((Net.Vpc.Upa.Impl.Persistence.Result.TypeInfo)o).indexesToUpdate.Add(remaining); } else if (o is Net.Vpc.Upa.Impl.Persistence.Result.FieldInfo) { ((Net.Vpc.Upa.Impl.Persistence.Result.FieldInfo)o).indexesToUpdate.Add(remaining); } else { throw new Net.Vpc.Upa.Exceptions.UPAException("Unsupported"); } } this.updatable = updatable; }
public override System.Collections.Generic.IList <T> GetValueList <T>(string name) /* throws Net.Vpc.Upa.Exceptions.UPAException */ { if (!context.GetPersistenceUnit().GetPersistenceGroup().CurrentSessionExists()) { if (sessionAwareInstance == null) { sessionAwareInstance = context.GetPersistenceUnit().GetPersistenceGroup().GetContext().MakeSessionAware <Net.Vpc.Upa.Impl.Persistence.DefaultQuery>(this); } return(sessionAwareInstance.GetValueList <T>(name)); } try { Net.Vpc.Upa.Impl.Persistence.QueryExecutor queryExecutor = ExecuteQuery(Net.Vpc.Upa.Impl.Util.Filters.Fields2.READ); System.Collections.Generic.IList <Net.Vpc.Upa.Persistence.ResultField> ne = queryExecutor.GetMetaData().GetFields(); int index = -1; for (int i = 0; i < (ne).Count; i++) { if (name.Equals(ne[i].GetAlias())) { index = i; break; } } if (index < 0) { throw new System.Exception("Field " + name + " not found"); } Net.Vpc.Upa.Impl.Persistence.ValueList <T> r = new Net.Vpc.Upa.Impl.Persistence.ValueList <T>(queryExecutor, index); if (!IsLazyListLoadingEnabled()) { //force loading r.LoadAll(); } allResults.Add(r); return(r); } catch (System.Exception e) { throw new Net.Vpc.Upa.Exceptions.FindException(e, new Net.Vpc.Upa.Types.I18NString("FindFailed")); } }