示例#1
0
        public Array GetFieldAsArray()
        {
            IOptimizedPersistable parentObj = (IOptimizedPersistable)m_session.Open(m_parentId, false, null, false, 0, Int32.MaxValue);
            object memberObj = m_member.GetMemberValue(parentObj.WrappedObject);

            return(memberObj as Array);
        }
示例#2
0
 public FieldViewModel(IOptimizedPersistable parentObj, DataMember member, ObjectViewModel parentObject, SessionBase session)
     : base(parentObject, true)
 {
     _session          = session;
     page              = parentObj.Page;
     memberObj         = member.GetMemberValue(parentObj.WrappedObject);
     isEncodedOidArray = (parentObj as BTreeNode) != null && memberObj != null && (memberObj as Array) != null && (member.Field.Name == "keysArray" || member.Field.Name == "valuesArray");
     fieldAsString     = OptimizedPersistable.ToStringDetails(member, parentObj.WrappedObject, parentObj, parentObj.Page, true);
 }
示例#3
0
 public FieldViewModel(IOptimizedPersistable parentObj, DataMember member, ObjectViewModel parentObject, SessionBase session)
   : base(parentObject, true)
 {
   _session = session;
   page = parentObj.Page;
   memberObj = member.GetMemberValue(parentObj.WrappedObject);
   isEncodedOidArray = (parentObj as BTreeNode) != null && memberObj != null && (memberObj as Array) != null && (member.Field.Name == "keysArray" || member.Field.Name == "valuesArray");
   fieldAsString = OptimizedPersistable.ToStringDetails(member, parentObj.WrappedObject, parentObj, parentObj.Page, true);
 }
示例#4
0
 public FieldViewModel(IOptimizedPersistable parentObj, DataMember member, ObjectViewModel parentObject, SessionBase session)
   : base(parentObject, true)
 {
   m_member = member;
   m_session = session;
   m_parentId = parentObj.Id; 
   object memberObj = member.GetMemberValue(parentObj.WrappedObject);
   m_isEncodedOidArray = (parentObj as BTreeNode) != null && memberObj != null && (memberObj as Array) != null && (member.Field.Name == "keysArray" || member.Field.Name == "valuesArray");
   m_isEncodedOidArray = m_isEncodedOidArray || parentObj.GetType().IsGenericType && parentObj.GetType().GetGenericTypeDefinition() == typeof(WeakReferenceList<>);
   m_fieldAsString = Utilities.ToStringDetails(member, parentObj.WrappedObject, parentObj, parentObj.Page, true);
 }
示例#5
0
        public FieldViewModel(IOptimizedPersistable parentObj, DataMember member, ObjectViewModel parentObject, SessionBase session)
            : base(parentObject, true)
        {
            m_member   = member;
            m_session  = session;
            m_parentId = parentObj.Id;
            object memberObj = member.GetMemberValue(parentObj.WrappedObject);

            m_isEncodedOidArray = (parentObj as BTreeNode) != null && memberObj != null && (memberObj as Array) != null && (member.Field.Name == "keysArray" || member.Field.Name == "valuesArray");
            m_isEncodedOidArray = m_isEncodedOidArray || parentObj.GetType().IsGenericType&& parentObj.GetType().GetGenericTypeDefinition() == typeof(WeakReferenceList <>);
            m_fieldAsString     = Utilities.ToStringDetails(member, parentObj.WrappedObject, parentObj, parentObj.Page, true);
        }
示例#6
0
        /// <summary>
        /// This is a support function for the VelocityDbBrowser. It converts a field into a string.
        /// </summary>
        /// <param name="member">A field in an object</param>
        /// <param name="obj">The object containing the field</param>
        /// <param name="page">The page of the object</param>
        /// <param name="skipArrays">Option to skip arrays of the object</param>
        /// <returns>A <see cref="string"/> containing all details of this field.</returns>
        public static string ToStringDetails(DataMember member, object obj, IOptimizedPersistable pObj, Page page, bool skipArrays)
        {
            SessionBase           session = pObj.Page.Database.Session;
            IOptimizedPersistable placeHolder;
            Schema    schema = session.OpenSchema(false);
            FieldInfo field  = member.Field;
            object    o      = member.GetMemberValue(obj);

            if (member.IsGuid)
            {
                Guid guid = (Guid)o;
                return(guid.ToString());
            }
            StringBuilder sb = new StringBuilder(100);

            if (o == null)
            {
                sb.Append("  " + member.FieldName + " : " + "null");
            }
            else
            {
                bool foundIt = session.GlobalObjWrapperGet(o, out placeHolder);
                if (foundIt)
                {
                    sb.Append("  " + member.FieldName + " : " + placeHolder.WrappedObject.ToString() + " " + Oid.AsString(placeHolder.Id));
                }
                else
                {
                    Array array = o as Array;
                    if (array != null)
                    {
                        Type elementType = member.FieldType.GetElementType();
                        sb.Append("  " + member.FieldName + " " + field.FieldType.ToGenericTypeString() + " size: " + array.Length.ToString());
                        if (!skipArrays)
                        {
                            sb.Append(ArrayToString(array, false, page, elementType));
                        }
                    }
                    else
                    {
                        IList list = o as IList;
                        if (list != null)
                        {
                            int    i          = 0;
                            string listObjStr = "  " + member.FieldName + " " + o.GetType().ToGenericTypeString() + " size: " + list.Count.ToString();
                            sb.Append(listObjStr);
                            if (!skipArrays)
                            {
                                foreach (object listObj in list)
                                {
                                    sb.AppendLine();
                                    pObj = listObj as OptimizedPersistable;
                                    if (listObj != null && pObj != null)
                                    {
                                        sb.Append("\t[" + i.ToString() + "]\t" + Oid.AsString(pObj.Id));
                                    }
                                    else
                                    {
                                        foundIt = session.GlobalObjWrapperGet(listObj, out placeHolder);
                                        if (foundIt)
                                        {
                                            sb.Append("\t[" + i.ToString() + "]\t" + Oid.AsString(placeHolder.Id));
                                        }
                                        else
                                        {
                                            sb.Append("\t[" + i.ToString() + "]\t" + listObj.ToString());
                                        }
                                    }
                                    i++;
                                }
                            }
                        }
                        else
                        {
                            VelocityDbType t = null;
                            if (field.FieldType == CommonTypes.s_typeOfType)
                            {
                                Type fieldType = o as Type;
                                sb.Append("  " + field.Name + " : " + fieldType.ToGenericTypeString());
                            }
                            else
                            {
                                bool cond1 = field.FieldType.GetTypeInfo().IsPrimitive || member.HasId || field.FieldType == CommonTypes.s_typeOfString || field.FieldType.GetTypeInfo().IsEnum;
                                if (cond1 || schema.LookupByType.TryGetValue(field.FieldType, out t) == false ||
                                    (field.FieldType.GetTypeInfo().IsGenericType&& field.FieldType.GetGenericTypeDefinition() == CommonTypes.s_typeOfWeakIOptimizedPersistableReference))
                                {
                                    sb.Append("  " + field.Name + " : " + o.ToString());
                                }
                                else
                                {
                                    TypeVersion memberShape = t.LastShape();
                                    bool        isNullable  = memberShape.Type.GetTypeInfo().IsGenericType&& memberShape.Type.GetGenericTypeDefinition() == CommonTypes.s_typeOfNullable;
                                    if (isNullable)
                                    {
                                        Type elementType = memberShape.Type.GetTypeInfo().GetGenericArguments()[0];
                                        schema.LookupByType.TryGetValue(elementType, out t);
                                        memberShape = t.LastShape();
                                    }
                                    sb.Append("  " + field.Name + " : " + ToStringDetails(o, schema, page, memberShape, skipArrays));
                                }
                            }
                        }
                    }
                }
            }
            return(sb.ToString());
        }
示例#7
0
 /// <summary>
 /// This is a support function for the VelocityDbBrowser. It converts a field into a string.
 /// </summary>
 /// <param name="member">A field in an object</param>
 /// <param name="obj">The object containing the field</param>
 /// <param name="pObj">The object containing the field or the owner of the object containing the field</param>
 /// <param name="page">The page of the object</param>
 /// <param name="skipArrays">Option to skip arrays of the object</param>
 /// <returns></returns>
 public static string ToStringDetails(DataMember member, object obj, IOptimizedPersistable pObj, Page page, bool skipArrays)
 {
   SessionBase session = pObj.Page.Database.Session;
   IOptimizedPersistable placeHolder;
   Schema schema = session.OpenSchema(false);
   FieldInfo field = member.Field;
   object o = member.GetMemberValue(obj);
   if (member.IsGuid)
   {
     Guid guid = (Guid)o;
     return guid.ToString();
   }
   StringBuilder sb = new StringBuilder(100);
   if (o == null)
     sb.Append("  " + member.FieldName + " : " + "null");
   else
   {
     bool foundIt = session.GlobalObjWrapperGet(o, out placeHolder);
     if (foundIt)
       sb.Append("  " + member.FieldName + " : " + placeHolder.WrappedObject.ToString() + " " + Oid.AsString(placeHolder.Id));
     else
     {
       Array array = o as Array;
       if (array != null)
       {
         sb.Append("  " + member.FieldName + " " + field.FieldType.ToGenericTypeString() + " size: " + array.Length.ToString());
         if (!skipArrays)
           sb.Append(ArrayToString(array, false, page));
       }
       else
       {
         IList list = o as IList;
         if (list != null)
         {
           int i = 0;
           string listObjStr = "  " + member.FieldName + " " + o.GetType().ToGenericTypeString() + " size: " + list.Count.ToString();
           sb.Append(listObjStr);
           if (!skipArrays)
             foreach (object listObj in list)
             {
               sb.AppendLine();
               pObj = listObj as OptimizedPersistable;
               if (listObj != null && pObj != null)
                 sb.Append("\t[" + i.ToString() + "]\t" + Oid.AsString(pObj.Id));
               else
               {
                 foundIt = session.GlobalObjWrapperGet(listObj, out placeHolder);
                 if (foundIt)
                   sb.Append("\t[" + i.ToString() + "]\t" + Oid.AsString(placeHolder.Id));
                 else
                   sb.Append("\t[" + i.ToString() + "]\t" + listObj.ToString());
               }
               i++;
             }
         }
         else
         {
           VelocityDbType t = null;
           if (field.FieldType == CommonTypes.s_typeOfType)
           {
             Type fieldType = o as Type;
             sb.Append("  " + field.Name + " : " + fieldType.ToGenericTypeString());
           }
           else
           {
             bool cond1 = field.FieldType.GetTypeInfo().IsPrimitive || member.HasId || field.FieldType == CommonTypes.s_typeOfString || field.FieldType.GetTypeInfo().IsEnum;
             if (cond1 || schema.LookupByType.TryGetValue(field.FieldType, out t) == false ||
               (field.FieldType.GetTypeInfo().IsGenericType && field.FieldType.GetGenericTypeDefinition() == CommonTypes.s_typeOfWeakIOptimizedPersistableReference))
               sb.Append("  " + field.Name + " : " + o.ToString());
             else
             {
               TypeVersion memberShape = t.LastShape();
               sb.Append("  " + field.Name + " : " + ToStringDetails(o, schema, page, memberShape, skipArrays));
             }
           }
         }
       }
     }
   }
   return sb.ToString();
 }