public override bool CanExecute()
        {
            if (AssociationGuid == Guid.Empty || PSMClassGuid == Guid.Empty)
            {
                ErrorDescription = CommandErrors.CMDERR_INPUT_TYPE_MISMATCH;
                return(false);
            }

            PSMAssociation association = Project.TranslateComponent <PSMAssociation>(AssociationGuid);
            PSMClass       oldclass    = association.Parent as PSMClass;

            if (oldclass == null)
            {
                ErrorDescription = CommandErrors.CMDERR_PARENT_NOT_PSMCLASS;
                return(false);
            }

            PSMClass newclass = Project.TranslateComponent <PSMClass>(PSMClassGuid);

            if (!oldclass.GetGeneralClasses().Contains(newclass))
            {
                ErrorDescription = CommandErrors.CMDERR_CLASS_NOT_GENERAL;
                return(false);
            }

            return(true);
        }
Exemplo n.º 2
0
 public override bool CanExecute()
 {
     if (generalClassGuid != Guid.Empty &&
         Project.VerifyComponentType <PSMClass>(generalClassGuid) &&
         specificClassGuid != Guid.Empty &&
         Project.VerifyComponentType <PSMClass>(specificClassGuid) &&
         schemaGuid != Guid.Empty &&
         Project.VerifyComponentType <PSMSchema>(schemaGuid))
     {
         PSMClass specific = Project.TranslateComponent <PSMClass>(specificClassGuid);
         PSMClass general  = Project.TranslateComponent <PSMClass>(generalClassGuid);
         if (specific.GeneralizationAsSpecific != null)
         {
             ErrorDescription = CommandErrors.CMDERR_NO_MULTIPLE_INHERITANCE;
             return(false);
         }
         else if (general.Final)
         {
             ErrorDescription = CommandErrors.CMDERR_GENERAL_IS_FINAL;
             return(false);
         }
         else if (specificClassGuid == generalClassGuid)
         {
             ErrorDescription = CommandErrors.CMDERR_NO_SELF_INHERITANCE;
             return(false);
         }
         else if (general.GetGeneralClasses().Contains(specific))
         {
             ErrorDescription = CommandErrors.CMDERR_CYCLIC_INHERITANCE;
             return(false);
         }
         else
         {
             return(true);
         }
     }
     else
     {
         ErrorDescription = CommandErrors.CMDERR_INPUT_TYPE_MISMATCH;
         return(false);
     }
 }
Exemplo n.º 3
0
        public override bool CanExecute()
        {
            if (AttributeGuid == Guid.Empty || PSMClassGuid == Guid.Empty)
            {
                ErrorDescription = CommandErrors.CMDERR_INPUT_TYPE_MISMATCH;
                return(false);
            }

            PSMAttribute attribute = Project.TranslateComponent <PSMAttribute>(AttributeGuid);
            PSMClass     oldclass  = attribute.PSMClass;
            PSMClass     newclass  = Project.TranslateComponent <PSMClass>(PSMClassGuid);

            if (!oldclass.GetGeneralClasses().Contains(newclass))
            {
                ErrorDescription = CommandErrors.CMDERR_CLASS_NOT_GENERAL;
                return(false);
            }

            return(true);
        }