Example #1
0
        public UmlDiagramClassAttribute AddAttributeFromModel(UmlClass umlClass, UmlAttribute umlAttribute)
        {
            var umlDiagramClass          = modelToDiagramClasses[umlClass];
            var umlDiagramClassAttribute = new UmlDiagramClassAttribute(umlAttribute);

            umlDiagramClass.Attributes.Add(umlDiagramClassAttribute);
            return(umlDiagramClassAttribute);
        }
        public IUmlTaggedValue getFacetTaggedValue(string tagname)
        {
            //first check if there is an overridden version
            var overriddenTagName = "override_" + tagname;
            var overriddentag     = UmlAttribute.GetTaggedValue(overriddenTagName);

            return(overriddentag.IsDefined ?
                   overriddentag :
                   UmlAttribute.GetTaggedValue(tagname));
        }
Example #3
0
        public void RemoveAttributeFromModel(UmlClass umlClass, UmlAttribute attributeToRemove)
        {
            var umlDiagramClass    = modelToDiagramClasses[umlClass];
            var attributesToRemove = umlDiagramClass.Attributes.Where(u => u.UmlAttribute == attributeToRemove).ToList();

            foreach (var attribute in attributesToRemove)
            {
                umlDiagramClass.Attributes.Remove(attribute);
            }
        }
Example #4
0
        public UmlAttribute CreateModelAttribute(UmlClass umlClass, string name, string type)
        {
            // TODO: check if attribute is already in the model
            var umlAttribute = new UmlAttribute(name, type);

            umlClass.Attributes.Add(umlAttribute);
            //
            // Exception for now: immediately create the attribute in the diagram too. This should happen via an event from the model,
            // but for now, we do it directly.
            //
            AddAttributeFromModel(umlClass, umlAttribute);
            return(umlAttribute);
        }
Example #5
0
        public string PropertySetterBefore(UmlAttribute attribute)
        {
            var sb = new StringBuilder();

            sb.Append(@"                if (!OrmLoading)
                {");
            foreach (var validation in GetSetPropertyValidations(attribute))
            {
                sb.Append($@"
                    if ({validation.Key})
                        throw new DomainViolationException(this, ""{validation.Value}"");");
            }
            sb.Append(@"
                }");
            return(sb.ToString());
        }
Example #6
0
        public Dictionary <string, string> GetSetPropertyValidations(UmlAttribute attribute)
        {
            var result = new Dictionary <string, string>();

            if (attribute.Type == "string" && attribute.IsMandatory)
            {
                result.Add("string.IsNullOrEmpty(value)", attribute.Name + " is mandatory.");
            }

            var minLength = attribute.Stereotypes.GetTagValue <int?>("Text", "MinLength");

            if (minLength != null && minLength > 0)
            {
                result.Add("!string.IsNullOrEmpty(value) && value.Length < " + minLength, attribute.Name + " cannot be less than " + minLength + " characters.");
            }

            var maxLength = attribute.Stereotypes.GetTagValue <int?>("Text", "MaxLength");

            if (maxLength != null)
            {
                result.Add("!string.IsNullOrEmpty(value) && value.Length > " + maxLength, attribute.Name + " cannot be more than " + maxLength + " characters.");
            }

            var minValue = attribute.Stereotypes.GetTagValue <int?>("Numeric", "MinValue");

            if (minValue != null)
            {
                result.Add("value < " + minValue, attribute.Name + " cannot be less than " + minValue + ".");
            }

            var maxValue = attribute.Stereotypes.GetTagValue <int?>("Numeric", "MaxValue");

            if (maxValue != null)
            {
                result.Add("value > " + maxValue, attribute.Name + " cannot be more than " + maxValue + ".");
            }

            var maxDecimalPlaces = attribute.Stereotypes.GetTagValue <int?>("Numeric", "MaxDecimalPlaces");

            if (maxDecimalPlaces != null)
            {
                result.Add(string.Format("(value * {0}) != Math.Floor(value * {0})", Math.Pow(10, maxDecimalPlaces.Value)), attribute.Name + " cannot have more than " + maxDecimalPlaces + " decimal places.");
            }

            return(result);
        }
Example #7
0
 public string PropertyAnnotations(UmlAttribute attribute)
 {
     return(null);
 }
Example #8
0
 public string PropertySetterAfter(UmlAttribute attribute)
 {
     return(GetDecorators().Aggregate(x => x.PropertySetterAfter(attribute)));
 }
Example #9
0
 public string PropertySetterBefore(UmlAttribute attribute) => null;
Example #10
0
 public string PropertySetterAfter(UmlAttribute attribute) => null;
Example #11
0
 public override int GetHashCode()
 {
     return(UmlAttribute != null ? UmlAttribute.GetHashCode() : 0);
 }
Example #12
0
 public string PropertyAnnotations(UmlAttribute attribute) => null;
Example #13
0
 public static bool HasComplexDomainType(this UmlAttribute attribute)
 {
     return(ComplexDomainType(attribute) != null);
 }
Example #14
0
 public static string ComplexDomainType(this UmlAttribute attribute)
 {
     return(attribute.Stereotypes.GetTagValue <string>("DomainType", "Type"));
 }
Example #15
0
 public string PropertySetterAfter(UmlAttribute attribute)
 {
     return(null);
 }
Example #16
0
 public string PropertyAnnotations(UmlAttribute attribute)
 {
     return(GetDecorators().Aggregate(x => x.PropertyAnnotations(attribute)));
 }
Example #17
0
 public static string DomainType(this UmlAttribute attribute)
 {
     return(ConvertType(attribute.Type, !attribute.IsMandatory, false, attribute.ModelType, attribute.EnumDefinition));
 }
Example #18
0
        public void AddAttribute(UmlAttribute attribute)
        {
            if (attribute.Stereotypes.Any(x => x.Name == "Calculated"))
            {
                return;
            }


        #line default
        #line hidden

        #line 205 "C:\Dev\Intent.Modules\Modules\Intent.Modules.RichDomain\Templates\EntityState\DomainEntityStateTemplate.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(PropertyFieldAnnotations(attribute)));


        #line default
        #line hidden

        #line 206 "C:\Dev\Intent.Modules\Modules\Intent.Modules.RichDomain\Templates\EntityState\DomainEntityStateTemplate.tt"
            this.Write("        private ");


        #line default
        #line hidden

        #line 206 "C:\Dev\Intent.Modules\Modules\Intent.Modules.RichDomain\Templates\EntityState\DomainEntityStateTemplate.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(attribute.DomainType()));


        #line default
        #line hidden

        #line 206 "C:\Dev\Intent.Modules\Modules\Intent.Modules.RichDomain\Templates\EntityState\DomainEntityStateTemplate.tt"
            this.Write(" ");


        #line default
        #line hidden

        #line 206 "C:\Dev\Intent.Modules\Modules\Intent.Modules.RichDomain\Templates\EntityState\DomainEntityStateTemplate.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(attribute.Name.ToPrivateMember()));


        #line default
        #line hidden

        #line 206 "C:\Dev\Intent.Modules\Modules\Intent.Modules.RichDomain\Templates\EntityState\DomainEntityStateTemplate.tt"
            this.Write(";");


        #line default
        #line hidden

        #line 206 "C:\Dev\Intent.Modules\Modules\Intent.Modules.RichDomain\Templates\EntityState\DomainEntityStateTemplate.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(PropertyAnnotations(attribute)));


        #line default
        #line hidden

        #line 206 "C:\Dev\Intent.Modules\Modules\Intent.Modules.RichDomain\Templates\EntityState\DomainEntityStateTemplate.tt"
            this.Write("\r\n        public ");


        #line default
        #line hidden

        #line 207 "C:\Dev\Intent.Modules\Modules\Intent.Modules.RichDomain\Templates\EntityState\DomainEntityStateTemplate.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(attribute.DomainType()));


        #line default
        #line hidden

        #line 207 "C:\Dev\Intent.Modules\Modules\Intent.Modules.RichDomain\Templates\EntityState\DomainEntityStateTemplate.tt"
            this.Write(" ");


        #line default
        #line hidden

        #line 207 "C:\Dev\Intent.Modules\Modules\Intent.Modules.RichDomain\Templates\EntityState\DomainEntityStateTemplate.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(attribute.Name.ToPascalCase()));


        #line default
        #line hidden

        #line 207 "C:\Dev\Intent.Modules\Modules\Intent.Modules.RichDomain\Templates\EntityState\DomainEntityStateTemplate.tt"
            this.Write(" \r\n        {\r\n            get { return ");


        #line default
        #line hidden

        #line 209 "C:\Dev\Intent.Modules\Modules\Intent.Modules.RichDomain\Templates\EntityState\DomainEntityStateTemplate.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(attribute.Name.ToPrivateMember()));


        #line default
        #line hidden

        #line 209 "C:\Dev\Intent.Modules\Modules\Intent.Modules.RichDomain\Templates\EntityState\DomainEntityStateTemplate.tt"
            this.Write("; }\r\n            set\r\n            {\r\n");


        #line default
        #line hidden

        #line 212 "C:\Dev\Intent.Modules\Modules\Intent.Modules.RichDomain\Templates\EntityState\DomainEntityStateTemplate.tt"
            if (attribute.Stereotypes.GetTagValue("Text", "TrimAutomatically", false))
            {
        #line default
        #line hidden

        #line 212 "C:\Dev\Intent.Modules\Modules\Intent.Modules.RichDomain\Templates\EntityState\DomainEntityStateTemplate.tt"
                this.Write("                value = value?.Truncate(");


        #line default
        #line hidden

        #line 213 "C:\Dev\Intent.Modules\Modules\Intent.Modules.RichDomain\Templates\EntityState\DomainEntityStateTemplate.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(attribute.Stereotypes.GetTagValue("Text", "MaxLength", 8000)));


        #line default
        #line hidden

        #line 213 "C:\Dev\Intent.Modules\Modules\Intent.Modules.RichDomain\Templates\EntityState\DomainEntityStateTemplate.tt"
                this.Write(");\r\n");


        #line default
        #line hidden

        #line 214 "C:\Dev\Intent.Modules\Modules\Intent.Modules.RichDomain\Templates\EntityState\DomainEntityStateTemplate.tt"
            }

        #line default
        #line hidden

        #line 214 "C:\Dev\Intent.Modules\Modules\Intent.Modules.RichDomain\Templates\EntityState\DomainEntityStateTemplate.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(PropertySetterBefore(attribute)));


        #line default
        #line hidden

        #line 214 "C:\Dev\Intent.Modules\Modules\Intent.Modules.RichDomain\Templates\EntityState\DomainEntityStateTemplate.tt"
            this.Write("\r\n");


        #line default
        #line hidden

        #line 215 "C:\Dev\Intent.Modules\Modules\Intent.Modules.RichDomain\Templates\EntityState\DomainEntityStateTemplate.tt"
            if (attribute.Type == "date")
            {
                if (attribute.IsMandatory)
                {
        #line default
        #line hidden

        #line 218 "C:\Dev\Intent.Modules\Modules\Intent.Modules.RichDomain\Templates\EntityState\DomainEntityStateTemplate.tt"
                    this.Write("                ");


        #line default
        #line hidden

        #line 219 "C:\Dev\Intent.Modules\Modules\Intent.Modules.RichDomain\Templates\EntityState\DomainEntityStateTemplate.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(attribute.Name.ToPrivateMember()));


        #line default
        #line hidden

        #line 219 "C:\Dev\Intent.Modules\Modules\Intent.Modules.RichDomain\Templates\EntityState\DomainEntityStateTemplate.tt"
                    this.Write(" = value.Date;\r\n");


        #line default
        #line hidden

        #line 220 "C:\Dev\Intent.Modules\Modules\Intent.Modules.RichDomain\Templates\EntityState\DomainEntityStateTemplate.tt"
                }
                else
                {
        #line default
        #line hidden

        #line 223 "C:\Dev\Intent.Modules\Modules\Intent.Modules.RichDomain\Templates\EntityState\DomainEntityStateTemplate.tt"
                    this.Write("                ");


        #line default
        #line hidden

        #line 224 "C:\Dev\Intent.Modules\Modules\Intent.Modules.RichDomain\Templates\EntityState\DomainEntityStateTemplate.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(attribute.Name.ToPrivateMember()));


        #line default
        #line hidden

        #line 224 "C:\Dev\Intent.Modules\Modules\Intent.Modules.RichDomain\Templates\EntityState\DomainEntityStateTemplate.tt"
                    this.Write(" = (value == null) ? value : value.Value.Date;\r\n");


        #line default
        #line hidden

        #line 225 "C:\Dev\Intent.Modules\Modules\Intent.Modules.RichDomain\Templates\EntityState\DomainEntityStateTemplate.tt"
                }
            }
            else
            {
        #line default
        #line hidden

        #line 228 "C:\Dev\Intent.Modules\Modules\Intent.Modules.RichDomain\Templates\EntityState\DomainEntityStateTemplate.tt"
                this.Write("                ");


        #line default
        #line hidden

        #line 229 "C:\Dev\Intent.Modules\Modules\Intent.Modules.RichDomain\Templates\EntityState\DomainEntityStateTemplate.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(attribute.Name.ToPrivateMember()));


        #line default
        #line hidden

        #line 229 "C:\Dev\Intent.Modules\Modules\Intent.Modules.RichDomain\Templates\EntityState\DomainEntityStateTemplate.tt"
                this.Write(" = value;\r\n");


        #line default
        #line hidden

        #line 230 "C:\Dev\Intent.Modules\Modules\Intent.Modules.RichDomain\Templates\EntityState\DomainEntityStateTemplate.tt"
            }

        #line default
        #line hidden

        #line 230 "C:\Dev\Intent.Modules\Modules\Intent.Modules.RichDomain\Templates\EntityState\DomainEntityStateTemplate.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(PropertySetterAfter(attribute)));


        #line default
        #line hidden

        #line 231 "C:\Dev\Intent.Modules\Modules\Intent.Modules.RichDomain\Templates\EntityState\DomainEntityStateTemplate.tt"
            this.Write("            }\r\n        }\r\n\r\n");


        #line default
        #line hidden

        #line 234 "C:\Dev\Intent.Modules\Modules\Intent.Modules.RichDomain\Templates\EntityState\DomainEntityStateTemplate.tt"
        }
 public UmlDiagramClassAttribute(UmlAttribute umlAttribute) : base(umlAttribute)
 {
     UmlAttribute = umlAttribute;
 }