Ejemplo n.º 1
0
        public static ArtifactStateInfo CalculateArtifactStateInfo(object targetObject, ArtifactStateRule rule)
        {
            Guard.ArgumentNotNull(rule, "rule");

            MethodInfo methodInfo = rule.MethodInfo;
            State      editorState;
            bool       active;

            if (methodInfo != null)
            {
                editorState = GetEditorStateFromMethod(methodInfo, targetObject, out active);
                if (!string.IsNullOrEmpty(rule.NormalCriteria))
                {
                    Tracing.Tracer.LogWarning(
                        ExceptionLocalizerTemplate
                        <ConditionalArtifactStateExceptionResourceLocalizer, ConditionalArtifactStateExceptionId> .
                        GetExceptionMessage(
                            ConditionalArtifactStateExceptionId.BrokenRuleContainsBothCriteriaAndMethodInfoParameters),
                        typeof(ArtifactStateRuleAttribute).Name, rule.TypeInfo.FullName, rule.NormalCriteria,
                        rule.MethodInfo.Name);
                }
            }
            else
            {
                editorState = rule.State;
                active      = Fit(targetObject, rule);
            }
            return(new ArtifactStateInfo(active, targetObject, editorState, rule));
        }
Ejemplo n.º 2
0
 static void AddRuntimeMembers(IModelApplication model, XPDictionary dictionary)
 {
     foreach (IModelRuntimeMember modelRuntimeMember in GetCustomFields(model))
     {
         try {
             Type        classType = modelRuntimeMember.ModelClass.TypeInfo.Type;
             XPClassInfo typeInfo  = dictionary.GetClassInfo(classType);
             lock (typeInfo) {
                 if (typeInfo.FindMember(modelRuntimeMember.Name) == null)
                 {
                     XpandCustomMemberInfo memberInfo = GetMemberInfo(modelRuntimeMember, typeInfo);
                     AddAttributes(modelRuntimeMember, memberInfo);
                     XafTypesInfo.Instance.RefreshInfo(classType);
                 }
             }
         } catch (Exception exception) {
             throw new Exception(
                       ExceptionLocalizerTemplate <SystemExceptionResourceLocalizer, ExceptionId> .GetExceptionMessage(
                           ExceptionId.ErrorOccursWhileAddingTheCustomProperty,
                           modelRuntimeMember.MemberInfo.MemberType,
                           ((IModelClass)modelRuntimeMember.Parent).Name,
                           modelRuntimeMember.Name,
                           exception.Message));
         }
     }
 }
Ejemplo n.º 3
0
 static void CreateXpandCustomMemberInfo(IModelMemberEx modelMemberEx, XPObjectSpace objectSpace)
 {
     try {
         Type        classType   = modelMemberEx.ModelClass.TypeInfo.Type;
         XPClassInfo xpClassInfo = XpandModuleBase.Dictiorary.GetClassInfo(classType);
         lock (xpClassInfo) {
             var customMemberInfo = xpClassInfo.FindMember(modelMemberEx.Name) as XPCustomMemberInfo;
             if (customMemberInfo == null)
             {
                 customMemberInfo = CreateMemberInfo(modelMemberEx, xpClassInfo);
                 ((IModelTypesInfoProvider)modelMemberEx.Application).TypesInfo.RefreshInfo(classType);
                 AddAttributes(modelMemberEx, customMemberInfo);
             }
             var xpandCustomMemberInfo = customMemberInfo as XpandCustomMemberInfo;
             if (xpandCustomMemberInfo != null)
             {
                 CreateColumn(modelMemberEx as IModelMemberPersistent, objectSpace, xpandCustomMemberInfo);
                 CreateForeignKey(modelMemberEx as IModelMemberOneToManyCollection, objectSpace, xpandCustomMemberInfo);
                 UpdateMember(modelMemberEx, customMemberInfo);
             }
         }
     }
     catch (Exception exception) {
         throw new Exception(
                   ExceptionLocalizerTemplate <SystemExceptionResourceLocalizer, ExceptionId> .GetExceptionMessage(
                       ExceptionId.ErrorOccursWhileAddingTheCustomProperty,
                       modelMemberEx.MemberInfo.MemberType,
                       ((IModelClass)modelMemberEx.Parent).Name,
                       modelMemberEx.Name,
                       exception.Message));
     }
 }
Ejemplo n.º 4
0
 protected internal virtual void ControllerOnCustomShowNavigationItem(object sender, CustomShowNavigationItemEventArgs args)
 {
     if (args.FitToObjectType(Application, typeof(ModelDifferenceObject)) && SecuritySystem.Instance is ISecurityComplex)
     {
         SecuritySystem.ReloadPermissions();
         if (!SecuritySystemExtensions.IsGranted(new EditModelPermission(ModelAccessModifier.Allow), false))
         {
             args.Handled = true;
             throw new SecurityException(ExceptionLocalizerTemplate <SystemExceptionResourceLocalizer, ExceptionId> .GetExceptionMessage(ExceptionId.PermissionIsDenied));
         }
     }
 }