示例#1
0
        /// <summary>
        /// Obtains by reflection the name of an attribute in the database
        /// </summary>
        /// <param name="typeInstance">Type of the class</param>
        /// <param name="attributeInDisplay">Attribute to be checked</param>
        public static string GetFieldNameOfAttribute(Type typeInstance, ONPath attributeInDisplay)
        {
            string lRol = attributeInDisplay.RemoveHead();

            // Attributes
            if (attributeInDisplay.Count == 0)
            {
                ONAttributeAttribute lAttributeAttribute = ONContext.GetAttributeInProperty(typeInstance, typeof(ONAttributeAttribute), "<Attribute>" + lRol + "</Attribute>") as ONAttributeAttribute;
                if (lAttributeAttribute != null)
                {
                    return(lAttributeAttribute.FieldName);
                }
            }

            // Roles
            ONRoleAttribute lRoleAttribute = ONContext.GetAttributeInProperty(typeInstance, typeof(ONRoleAttribute), "<Role>" + lRol + "</Role>") as ONRoleAttribute;

            if (lRoleAttribute != null)
            {
                if (attributeInDisplay.Count == 0)
                {
                    return("");
                }
                else
                {
                    return(GetFieldNameOfAttribute(ONContext.GetType_Instance(lRoleAttribute.Domain), attributeInDisplay));
                }
            }
            return("");
        }
示例#2
0
        /// <summary>
        /// Checks if the attributes of a determinate class are visible according to the agent connected
        /// </summary>
        /// <param name="typeInstance">Type fo the class to check the visibility</param>
        /// <param name="attributeVisibility">Attribute to be checked, it is not owned to the class that is being checked</param>
        /// <param name="onContext">Request context </param>
        public static bool IsVisibleInv(Type typeInstance, ONPath attributeVisibility, ONContext onContext)
        {
            if (attributeVisibility.Count == 0)
            {
                return(true);
            }

            ONPath lAttributeVisibility = new ONPath(attributeVisibility);
            string lRol = lAttributeVisibility.RemoveHead();

            // Attributes
            if (lAttributeVisibility.Count == 0)
            {
                ONAttributeAttribute lAttributeAttribute = ONContext.GetAttributeInProperty(typeInstance, typeof(ONAttributeAttribute), "<Attribute>" + lRol + "</Attribute>") as ONAttributeAttribute;
                if (lAttributeAttribute != null)
                {
                    return(lAttributeAttribute.IsVisible(onContext));
                }
            }

            // Roles
            ONRoleAttribute lRoleAttribute = ONContext.GetAttributeInProperty(typeInstance, typeof(ONRoleAttribute), "<Role>" + lRol + "</Role>") as ONRoleAttribute;

            if (lRoleAttribute != null)
            {
                Type lTypeInstanceInv = ONContext.GetType_Instance(lRoleAttribute.Domain);
                return(IsVisible(lTypeInstanceInv, lRoleAttribute.RoleInv, onContext) && IsVisibleInv(lTypeInstanceInv, lAttributeVisibility, onContext));
            }

            return(false);
        }
示例#3
0
        public static string InversePath(Type typeInstance, ONPath rolePath)
        {
            ONPath          lRolePath      = new ONPath(rolePath);
            string          lRol           = lRolePath.RemoveHead();
            ONRoleAttribute lRoleAttribute = ONContext.GetAttributeInProperty(typeInstance, typeof(ONRoleAttribute), "<Role>" + lRol + "</Role>") as ONRoleAttribute;

            if (lRoleAttribute != null)
            {
                if (lRolePath.Count == 0)
                {
                    return(lRoleAttribute.RoleInv);
                }
                else
                {
                    return((InversePath(ONContext.GetType_Instance(lRoleAttribute.Domain), lRolePath)) + "." + (lRoleAttribute.RoleInv));
                }
            }
            return("");
        }
示例#4
0
        /// <summary>
        /// Obtains by reflection if an attribute is optimized
        /// </summary>
        /// <param name="typeInstance">Type of the class</param>
        /// <param name="attributeInDisplay">Attribute to be checked</param>
        public static bool IsOptimized(Type typeInstance, ONPath path)
        {
            if (path == null)
            {
                return(true);
            }

            if (path.Count == 0)
            {
                return(true);
            }

            ONPath lPath = new ONPath(path);
            string lRol  = lPath.RemoveHead();

            // Attributes
            if (lPath.Count == 0)
            {
                ONAttributeAttribute lAttributeAttribute = ONContext.GetAttributeInProperty(typeInstance, typeof(ONAttributeAttribute), "<Attribute>" + lRol + "</Attribute>") as ONAttributeAttribute;
                if (lAttributeAttribute != null)
                {
                    return(lAttributeAttribute.IsOptimized);
                }
            }

            // Roles
            ONRoleAttribute lRoleAttribute = ONContext.GetAttributeInProperty(typeInstance, typeof(ONRoleAttribute), "<Role>" + lRol + "</Role>") as ONRoleAttribute;

            if (lRoleAttribute != null)
            {
                if (lPath.Count == 0)
                {
                    return(!lRoleAttribute.IsLegacy);
                }
                else if (!lRoleAttribute.IsLegacy)
                {
                    return(IsOptimized(ONContext.GetType_Instance(lRoleAttribute.Domain), lPath));
                }
            }

            return(false);
        }
示例#5
0
        public static string GetTargetClass(ONContext onContext, Type typeInstance, ONPath path)
        {
            foreach (string lRole in path.Roles)
            {
                // Attributes
                ONAttributeAttribute lAttributeAttribute = ONContext.GetAttributeInProperty(typeInstance, typeof(ONAttributeAttribute), "<Attribute>" + lRole + "</Attribute>") as ONAttributeAttribute;

                if (lAttributeAttribute != null)
                {
                    return(lAttributeAttribute.FacetOfField);
                }

                // Roles
                ONRoleAttribute lRoleAttribute = ONContext.GetAttributeInProperty(typeInstance, typeof(ONRoleAttribute), "<Role>" + lRole + "</Role>") as ONRoleAttribute;

                if (lRoleAttribute != null)
                {
                    typeInstance = ONContext.GetType_Instance(lRoleAttribute.Domain);
                }
                else
                {
                    break;
                }
            }

            if (typeInstance != null)
            {
                object[] lParameters = new object[1];
                lParameters[0] = onContext;

                ONInstance lInstance = Activator.CreateInstance(typeInstance, lParameters) as ONInstance;
                return(lInstance.ClassName);
            }
            else
            {
                return("");
            }
        }
示例#6
0
        public static bool HasHorizontalVisibility(Type typeInstance, ONPath rolePath, StringCollection activeAgentFacets)
        {
            ONPath lRolePath = new ONPath(rolePath);
            string lRol      = lRolePath.RemoveHead();

            // Attributes
            if (lRolePath.Count == 0)
            {
                ONAttributeAttribute lAttributeAttribute = ONContext.GetAttributeInProperty(typeInstance, typeof(ONAttributeAttribute), "<Attribute>" + lRol + "</Attribute>") as ONAttributeAttribute;
                if (lAttributeAttribute != null)
                {
                    return(false);
                }
            }

            ONRoleAttribute lRoleAttribute = ONContext.GetAttributeInProperty(typeInstance, typeof(ONRoleAttribute), "<Role>" + lRol + "</Role>") as ONRoleAttribute;

            if (lRoleAttribute != null)
            {
                if (lRoleAttribute.HasHorizontalVisibility(activeAgentFacets))
                {
                    return(true);
                }

                if (lRolePath.Count == 0)
                {
                    return(false);
                }
                else
                {
                    return(HasHorizontalVisibility(ONContext.GetType_Instance(lRoleAttribute.Domain), lRolePath, activeAgentFacets));
                }
            }

            return(false);
        }
示例#7
0
        public static bool IsLocal(Type typeInstance, ONPath rolePath)
        {
            if (rolePath.Count == 0)
            {
                return(true);
            }

            ONPath lRolePath = new ONPath(rolePath);
            string lRol      = lRolePath.RemoveHead();

            // Attributes
            if (lRolePath.Count == 0)
            {
                ONAttributeAttribute lAttributeAttribute = ONContext.GetAttributeInProperty(typeInstance, typeof(ONAttributeAttribute), "<Attribute>" + lRol + "</Attribute>") as ONAttributeAttribute;
                if (lAttributeAttribute != null)
                {
                    return(!lAttributeAttribute.IsLegacy);
                }
            }

            ONRoleAttribute lRoleAttribute = ONContext.GetAttributeInProperty(typeInstance, typeof(ONRoleAttribute), "<Role>" + lRol + "</Role>") as ONRoleAttribute;

            if (lRoleAttribute != null)
            {
                if (lRolePath.Count == 0)
                {
                    return(!lRoleAttribute.IsLegacy);
                }
                else
                {
                    return((!lRoleAttribute.IsLegacy) && (IsLocal(ONContext.GetType_Instance(lRoleAttribute.Domain), lRolePath)));
                }
            }

            return(false);
        }