Exemplo n.º 1
0
    public static string GetModelName(GenerationItemModel model, ObjectDefinitionBase objectDefinition, bool isInterface)
    {
        objectDefinition = GetDefinition(objectDefinition, model);

        if (objectDefinition is EnumDefinition)
        {
            isInterface = false;
        }

        var translator = model.GetTranslator(objectDefinition);

        if (translator == null)
        {
            if (objectDefinition.IsArray && objectDefinition.InnerObject != null)
            {
                return(string.Format("List<{0}>", GetModelName(model, objectDefinition.InnerObject, isInterface: isInterface)));
            }

            if (objectDefinition.IsInterface)
            {
                return(objectDefinition.Name.Substring(1, objectDefinition.Name.Length - 1).Replace("View", ""));
            }

            if (objectDefinition is EnumDefinition)
            {
                return(objectDefinition.FullName);
            }

            return(string.Format("{0}{1}", isInterface && !objectDefinition.IsInterface ?  "I" : "", objectDefinition.Name.Replace("View", "")));
        }

        return(translator.Translation);
    }
Exemplo n.º 2
0
        public override ObjectDefinitionBase Process(ObjectDefinitionBase output, ObjectBase input, IInputService service)
        {
            var methodProvider   = this.Resolve <IMethodProvider>();
            var propertyProvider = this.Resolve <IPropertyProvider>();
            var structOutput     = output as StructDefinition;
            var structInput      = input as Struct;

            if (structOutput == null || structInput == null)
            {
                return(output);
            }

            if (structInput.Methods != null)
            {
                structOutput.Methods = structInput.Methods.Select(x => methodProvider.Process(methodProvider.Create(x), x, service)).ToList();
            }

            if (structInput.Properties != null)
            {
                structOutput.Properties = structInput.Properties.Select(x => propertyProvider.Process(propertyProvider.Create(x), x, service)).ToList();
            }

            if (structInput.GenericArguments != null)
            {
                structOutput.GenericArguments = structInput.GenericArguments.Select(x => service.GetObjectDefinitions().FirstOrDefault(o => o.FullName == x.FullName)).ToList();
            }

            return(base.Process(output, input, service));
        }
Exemplo n.º 3
0
        protected override bool IsMatch(TypeMatcherConfiguration configuration, ObjectDefinitionBase objectDefinition)
        {
            if (configuration.Parameters.Length == 0)
                throw new Exception("NameIn type expect an array of names.");

            return configuration.Parameters.Contains(objectDefinition.Name);
        }
Exemplo n.º 4
0
    public static string GetFileName(GenerationItemModel model, ObjectDefinitionBase objectDefinition, bool isInterface)
    {
        var namingRule = new SeparateWordsNamingRule();
        var name       = GetModelName(model, objectDefinition, isInterface: false);

        if (objectDefinition.IsInterface)
        {
            name = name.Substring(1, name.Length - 1);
        }

        var newName = namingRule.Execute(name, new NamingRuleConfiguration()
        {
            Parameters = new[] { "-" }
        }).ToLowerInvariant();


        if (isInterface && objectDefinition is StructDefinition)
        {
            return(newName + ".interface");
        }

        if (isInterface && objectDefinition is EnumDefinition)
        {
            return(newName + ".enum");
        }

        return(newName);
    }
Exemplo n.º 5
0
    public static string GetIsEqualCondition(ObjectDefinitionBase definition, string source, string destination)
    {
        var structDefinition = definition as StructDefinition;

        if (structDefinition == null)
        {
            return(string.Empty);
        }

        var primaryKeys = GetPrimaryKeys(structDefinition);

        if (!primaryKeys.Any())
        {
            return("true");
        }

        var builder = new System.Text.StringBuilder();

        foreach (var property in primaryKeys)
        {
            builder.AppendFormat("{0}.{1} == {2}.{1} && ", source, property.Name, destination);
        }

        return(builder.Remove(builder.Length - 4, 4).ToString());
    }
 public GenerationItemModel(OutputFileConfiguration configuration, ObjectDefinitionBase definition, IEnumerable <ObjectDefinitionBase> definitions, INativeTypeTranslators typeTranslators)
 {
     this.Configuration   = configuration;
     this.Definition      = definition;
     this.Definitions     = definitions;
     this.TypeTranslators = typeTranslators;
 }
Exemplo n.º 7
0
    public static string GetIsNewCondition(ObjectDefinitionBase definition)
    {
        var structDefinition = definition as StructDefinition;

        if (structDefinition == null)
        {
            return(string.Empty);
        }

        var primaryKeys = GetPrimaryKeys(structDefinition);

        if (!primaryKeys.Any())
        {
            return("true");
        }

        var builder = new System.Text.StringBuilder();

        foreach (var property in primaryKeys)
        {
            builder.AppendFormat("this.{0} == default({1}) || ", property.Name, property.Type.Name);
        }

        return(builder.Remove(builder.Length - 4, 4).ToString());
    }
Exemplo n.º 8
0
        public void Add(Type key, ObjectDefinitionBase definition)
        {
            if (key == null)
            {
                throw new ArgumentNullException(nameof(key));
            }

            this.Definitions.Add(definition.FullName, definition);
        }
Exemplo n.º 9
0
        public bool Match(TypeMatcherConfiguration configuration, ObjectDefinitionBase objectDefinition)
        {
            if (configuration.Negate)
            {
                return(!this.IsMatch(configuration, objectDefinition));
            }

            return(this.IsMatch(configuration, objectDefinition));
        }
        protected override bool IsMatch(TypeMatcherConfiguration configuration, ObjectDefinitionBase objectDefinition)
        {
            if (configuration.Parameters.Length != 1)
            {
                throw new Exception("Contains attribute type matcher has only 1 argument, the string to be found.");
            }

            return(objectDefinition.Attributes.Any(x => x.Name == configuration.Parameters[0]));
        }
Exemplo n.º 11
0
        protected override bool IsMatch(TypeMatcherConfiguration configuration, ObjectDefinitionBase objectDefinition)
        {
            if (configuration.Parameters.Length != 0)
            {
                throw new Exception("Is Struct type matcher hasn't any arguments.");
            }

            return(objectDefinition.GetType() == typeof(StructDefinition));
        }
        protected override bool IsMatch(TypeMatcherConfiguration configuration, ObjectDefinitionBase objectDefinition)
        {
            if (configuration.Parameters.Length != 1)
            {
                throw new Exception("FullNameEquals type matcher has only 1 argument, the string to be found.");
            }

            return(objectDefinition.FullName.Equals(configuration.Parameters[0]));
        }
Exemplo n.º 13
0
        protected override bool IsMatch(TypeMatcherConfiguration configuration, ObjectDefinitionBase objectDefinition)
        {
            if (configuration.Parameters.Length < 1)
            {
                throw new Exception("NameEndsWith type matcher needs at least 1 parameter.");
            }

            return(configuration.Parameters.Aggregate(false, (current, parameter) => current || objectDefinition.Name.EndsWith(parameter)));
        }
Exemplo n.º 14
0
    public static ObjectDefinitionBase GetDefinition(ObjectDefinitionBase objectDefinition, GenerationItemModel model)
    {
        if (objectDefinition.FullName.StartsWith("System.Threading.Tasks.Task"))
        {
            var structDefinition = objectDefinition as StructDefinition;
            return(structDefinition.GenericArguments.FirstOrDefault() ?? model.Definitions.FirstOrDefault(x => x.FullName == "System.Void"));
        }

        return(objectDefinition);
    }
Exemplo n.º 15
0
    public static bool RequiresQuotationMarks(ObjectDefinitionBase objectDefinition)
    {
        var name = IsNullable(objectDefinition) && objectDefinition.InnerObject != null ? objectDefinition.InnerObject.Name : objectDefinition.Name;

        return(name == "String" ||
               name == "Char" ||
               name == "DateTime" ||
               name == "TimeSpan" ||
               name == "Object");
    }
Exemplo n.º 16
0
        public static bool InheritsFrom(this ObjectDefinitionBase definition, string name)
        {
            if (definition == null)
            {
                throw new ArgumentNullException(nameof(definition));
            }

            if (name == null)
            {
                throw new ArgumentNullException(nameof(name));
            }

            return(definition.FindInHierarchy(name) != null);
        }
Exemplo n.º 17
0
    public static string GetModelName(GenerationItemModel model, ObjectDefinitionBase objectDefinition, bool isInterface = false)
    {
        if (objectDefinition is EnumDefinition)
        {
            isInterface = false;
        }

        var translator = model.GetTranslator(objectDefinition);

        if (translator == null)
        {
            return(objectDefinition.IsArray && objectDefinition.InnerObject != null
                    ? $"{(isInterface ? "IReadOnlyCollection" : "List")}<{GetModelName(model, objectDefinition.InnerObject, isInterface: isInterface)}>"
                    : $"{(isInterface ? "I" : "")}{(isInterface ? objectDefinition.Name.Replace("View", string.Empty) : objectDefinition.Name)}");
        }

        return(translator.Translation);
    }
Exemplo n.º 18
0
        public override ObjectDefinitionBase Process(ObjectDefinitionBase output, ObjectBase input, IInputService service)
        {
            var enumValueProvider = this.Resolve <IEnumValueProvider>();
            var enumOutput        = output as EnumDefinition;
            var enumInput         = input as Enum;

            if (enumOutput == null || enumInput == null)
            {
                return(output);
            }

            if (enumInput.Values != null)
            {
                enumOutput.Values = enumInput.Values.Select(x => enumValueProvider.Process(enumValueProvider.Create(x), x, service)).ToList();
            }

            return(base.Process(output, input, service));
        }
Exemplo n.º 19
0
        private static ObjectDefinitionBase FindInHierarchy(this ObjectDefinitionBase definition, string name, bool includeItself = false)
        {
            if (definition == null)
            {
                throw new ArgumentNullException(nameof(definition));
            }

            if (name == null)
            {
                throw new ArgumentNullException(nameof(name));
            }

            if ((definition.FullName == name || definition.Name == name) && includeItself)
            {
                return(definition);
            }

            // search first in the base class hierarchy.
            if (definition.BaseType != null)
            {
                var result = FindInHierarchy(definition.BaseType, name, true);

                if (result != null)
                {
                    return(result);
                }
            }

            // then search in each implemented interface hierarchy.
            if (definition.ImplementedInterfaces != null && definition.ImplementedInterfaces.Any())
            {
                foreach (var implemented in definition.ImplementedInterfaces)
                {
                    var result = FindInHierarchy(implemented, name, true);

                    if (result != null)
                    {
                        return(result);
                    }
                }
            }

            return(null);
        }
Exemplo n.º 20
0
    public static string GetMapMethod(ObjectDefinitionBase objectDefinition)
    {
        var type = IsNullable(objectDefinition) && objectDefinition.InnerObject != null ? objectDefinition.InnerObject : objectDefinition;

        if (type.Name == typeof(Byte[]).Name || type.Name == typeof(SByte[]).Name)
        {
            return("GetBytes");
        }

        if (type.Name == typeof(float).Name || type.Name == typeof(System.Single).Name)
        {
            return("GetFloat");
        }

        if (type.Name == typeof(DateTimeOffset).Name)
        {
            return("GetDateTime");
        }

        return($"Get{type.Name}");
    }
Exemplo n.º 21
0
        public override ObjectDefinitionBase Process(ObjectDefinitionBase definition, IObjectDefinitions <Type> objectDefinitions, Type parameter)
        {
            base.Process(definition, objectDefinitions, parameter);

            var attributeProvider = this.Resolve <IAttributeDefinitionProvider <Attribute, Type> >();
            var propertyProvider  = this.Resolve <IPropertyDefinitionProvider <PropertyInfo, Type> >();
            var methodProvider    = this.Resolve <IMethodDefinitionProvider <MethodInfo, Type> >();
            var typeInfo          = parameter.GetTypeInfo();

            var structDefinition = definition as StructDefinition;

            if (structDefinition == null)
            {
                return(definition);
            }

            typeInfo.GetCustomAttributes()
            .Select(x => attributeProvider.Process(attributeProvider.GetFromSource(x), objectDefinitions, x))
            .ToList()
            .ForEach(x => structDefinition.AddAttribute(x));

            typeInfo.DeclaredProperties
            .Where(x => (x.GetMethod?.IsPublic ?? false) || (x.SetMethod?.IsPublic ?? false))
            .Select(x => propertyProvider.Process(propertyProvider.GetFromSource(x), objectDefinitions, x))
            .ToList()
            .ForEach(x => structDefinition.AddProperty(x));

            typeInfo.DeclaredMethods
            .Where(x => !x.IsSpecialName && x.IsPublic)
            .Select(x => methodProvider.Process(methodProvider.GetFromSource(x), objectDefinitions, x))
            .ToList()
            .ForEach(x => structDefinition.AddMethod(x));

            typeInfo.GenericTypeArguments
            .Select(objectDefinitions.Get)
            .ToList()
            .ForEach(x => structDefinition.AddGenericArgument(x));

            return(structDefinition);
        }
Exemplo n.º 22
0
 public static bool IsGenericNullable(ObjectDefinitionBase objectDefinition)
 {
     return(objectDefinition.Name.StartsWith("Nullable<"));
 }
Exemplo n.º 23
0
 public static string GetServiceName(ObjectDefinitionBase objectDefinition, bool isInterface)
 {
     return(string.Format("{0}{1}", isInterface ?  "I" : "", objectDefinition.Name.Replace("Controller", "Service")));
 }
Exemplo n.º 24
0
 protected abstract bool IsMatch(TypeMatcherConfiguration configuration, ObjectDefinitionBase objectDefinition);
 public NativeTypeTranslator GetTranslator(ObjectDefinitionBase definition)
 {
     return(this.TypeTranslators.Find(x => x.Name == definition.FullName || x.Name == definition.Name).FirstOrDefault());
 }
Exemplo n.º 26
0
 public static bool IsNullable(ObjectDefinitionBase objectDefinition)
 {
     return(objectDefinition.Name.StartsWith("Nullable<") || objectDefinition.Name == "String" || objectDefinition.IsArray);
 }
Exemplo n.º 27
0
    public static IEnumerable <ObjectDefinitionBase> GetModelRelatedContracts(GenerationItemModel model, ObjectDefinitionBase definition, List <PropertyDefinition> properties)
    {
        var contracts = new Dictionary <string, ObjectDefinitionBase>();

        foreach (var property in properties)
        {
            var objectDefinition = GetDefinition(property.Type, model);

            if (objectDefinition.IsArray)
            {
                objectDefinition = objectDefinition.InnerObject;
            }

            var translator = model.GetTranslator(objectDefinition);

            if (objectDefinition.Name != definition.Name &&
                !contracts.ContainsKey(objectDefinition.Name) &&
                translator == null)
            {
                contracts.Add(objectDefinition.Name, objectDefinition);
            }
        }

        return(contracts.Values.ToList());
    }
Exemplo n.º 28
0
    public static IEnumerable <ObjectDefinitionBase> GetServiceRelatedContracts(GenerationItemModel model, ObjectDefinitionBase definition)
    {
        var contracts       = new Dictionary <string, ObjectDefinitionBase>();
        var classDefinition = definition as StructDefinition;

        if (classDefinition == null)
        {
            return(contracts.Values);
        }

        foreach (var method in classDefinition.Methods)
        {
            var objectDefinition = GetDefinition(method.ReturnType, model);

            if (objectDefinition.IsArray)
            {
                objectDefinition = objectDefinition.InnerObject;
            }

            var translator = model.GetTranslator(objectDefinition);

            if (!contracts.ContainsKey(objectDefinition.Name) &&
                translator == null)
            {
                contracts.Add(objectDefinition.Name, objectDefinition);
            }

            foreach (var parameter in method.Parameters)
            {
                objectDefinition = GetDefinition(parameter.Type, model);

                if (objectDefinition.IsArray)
                {
                    objectDefinition = objectDefinition.InnerObject;
                }

                translator = model.GetTranslator(objectDefinition);

                if (!contracts.ContainsKey(objectDefinition.Name) &&
                    translator == null)
                {
                    contracts.Add(objectDefinition.Name, objectDefinition);
                }
            }
        }

        return(contracts.Values.ToList());
    }
Exemplo n.º 29
0
 private static bool IsMatch(ObjectDefinitionBase objectDefinition, OutputFileConfiguration outputConfiguration)
 {
     return(outputConfiguration.TypeMatchers.Any() &&
            outputConfiguration.TypeMatchers.Aggregate(true, (current, typeMatcherConfiguration) => current & TypeMatcherFactory.Create(typeMatcherConfiguration.Name).Match(typeMatcherConfiguration, objectDefinition)));
 }
Exemplo n.º 30
0
 public static List <PropertyDefinition> GetProperties(ObjectDefinitionBase definition)
 {
     return((definition as StructDefinition).Properties.Where(x => x.Attributes.Any(a => a.Name == "DataMemberAttribute")).ToList());
 }