/// <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(""); }
/// <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); }
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(""); }
/// <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); }
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(""); } }
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); }
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); }