public virtual object CreateResult(Net.Vpc.Upa.Impl.Persistence.Result.ResultColumn[] row, Net.Vpc.Upa.Persistence.ResultMetaData metadata) { System.Collections.Generic.IList <Net.Vpc.Upa.Persistence.ResultField> fields = metadata.GetFields(); Net.Vpc.Upa.Impl.Persistence.DefaultResultMetaData d = (Net.Vpc.Upa.Impl.Persistence.DefaultResultMetaData)metadata; string[] bindings = (string[])Net.Vpc.Upa.Impl.FwkConvertUtils.GetMapValue <string, object>(d.GetProperties(), CACHE_KEY); if (bindings == null) { bindings = new string[(fields).Count]; for (int i = 0; i < (fields).Count; i++) { Net.Vpc.Upa.Persistence.ResultField field = fields[i]; Net.Vpc.Upa.Expressions.Expression ss = field.GetExpression(); string binding = ss == null ? "null" : ss.ToString(); bindings[i] = binding; } d.GetProperties()[CACHE_KEY] = bindings; } if ((fields).Count == 1) { string binding = bindings[0]; return(row[0].GetValue()); } else { object[] allRet = new object[(fields).Count]; for (int i = 0; i < allRet.Length; i++) { allRet[i] = row[i].GetValue(); } return(allRet); } }
public static string GetValidBinding(Net.Vpc.Upa.Persistence.ResultField s) { if (Net.Vpc.Upa.Impl.Util.StringUtils.IsNullOrEmpty(s.GetAlias())) { Net.Vpc.Upa.Expressions.Expression ss = s.GetExpression(); return(ss == null ? "" : ss.ToString()); } return(s.GetAlias()); }
public virtual object CreateResult(Net.Vpc.Upa.Impl.Persistence.Result.ResultColumn[] row, Net.Vpc.Upa.Persistence.ResultMetaData metadata) { System.Collections.Generic.IList <Net.Vpc.Upa.Persistence.ResultField> fields = metadata.GetFields(); Net.Vpc.Upa.Impl.Persistence.DefaultResultMetaData d = (Net.Vpc.Upa.Impl.Persistence.DefaultResultMetaData)metadata; string[][] preferredNameAndBinding = (string[][])Net.Vpc.Upa.Impl.FwkConvertUtils.GetMapValue <string, object>(d.GetProperties(), CACHE_KEY); if (preferredNameAndBinding == null) { preferredNameAndBinding = (string[][])Net.Vpc.Upa.Impl.FwkConvertUtils.CreateMultiArray(typeof(string), (fields).Count, 2); for (int i = 0; i < (fields).Count; i++) { Net.Vpc.Upa.Persistence.ResultField field = fields[i]; Net.Vpc.Upa.Expressions.Expression ss = field.GetExpression(); string binding = ss == null ? "null" : ss.ToString(); string preferredName = binding; if (preferredName.IndexOf('.') >= 0) { preferredName = preferredName.Substring(preferredName.LastIndexOf('.') + 1); } string alias = field.GetAlias(); if (!Net.Vpc.Upa.Impl.Util.StringUtils.IsNullOrEmpty(alias)) { preferredName = alias; } preferredNameAndBinding[i][0] = preferredName; preferredNameAndBinding[i][1] = binding; } d.GetProperties()[CACHE_KEY] = preferredNameAndBinding; } if ((fields).Count == 1 && row[0].GetValue() is Net.Vpc.Upa.Record) { return(row[0].GetValue()); } Net.Vpc.Upa.Record r = new Net.Vpc.Upa.Impl.DefaultRecord(); for (int i = 0; i < (fields).Count; i++) { string preferredName = preferredNameAndBinding[i][0]; r.SetObject(preferredName, row[i].GetValue()); } return(r); }
protected internal virtual Net.Vpc.Upa.Persistence.ResultField Merge(Net.Vpc.Upa.Persistence.ResultField first, Net.Vpc.Upa.Persistence.ResultField second) { throw new Net.Vpc.Upa.Exceptions.UPAException("NoSupportedYet"); }
public virtual void AddField(Net.Vpc.Upa.Persistence.ResultField field) { fields.Add(field); }
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; }