public bool Match(IMetaDataManager metaDataManager, SoftwareFactory.Engine.IApplication application, IClass domainModel, IOperationModel operationModel)
        {
            if (operationModel.Parameters.Count() != 1)
            {
                return(false);
            }

            if (!operationModel.Parameters.Any(p => string.Equals(p.Name, "id", StringComparison.OrdinalIgnoreCase)))
            {
                return(false);
            }

            if (operationModel.ReturnType != null)
            {
                return(false);
            }

            var lowerDomainName    = domainModel.Name.ToLower();
            var lowerOperationName = operationModel.Name.ToLower();

            return(new[]
            {
                "delete",
                $"delete{lowerDomainName}"
            }
                   .Contains(lowerOperationName));
        }
        public bool Match(IMetaDataManager metaDataManager, SoftwareFactory.Engine.IApplication application, IClass domainModel, IOperationModel operationModel)
        {
            if (operationModel.Parameters.Any())
            {
                return(false);
            }

            if (!(operationModel?.ReturnType?.TypeReference?.IsCollection ?? false))
            {
                return(false);
            }

            var lowerDomainName       = domainModel.Name.ToLower();
            var pluralLowerDomainName = Vocabularies.Default.Pluralize(lowerDomainName);
            var lowerOperationName    = operationModel.Name.ToLower();

            return(new[]
            {
                "get",
                $"get{lowerDomainName}",
                $"get{pluralLowerDomainName}",
                "getall",
                "find",
                $"find{lowerDomainName}",
                $"find{pluralLowerDomainName}",
                "findall"
            }
                   .Contains(lowerOperationName));
        }
Пример #3
0
        public bool Match(IMetaDataManager metaDataManager, SoftwareFactory.Engine.IApplication application, IClass domainModel, IOperationModel operationModel)
        {
            if (operationModel.Parameters.Count() != 1)
            {
                return(false);
            }

            if (!operationModel.Parameters.Any(p => string.Equals(p.Name, "id", StringComparison.OrdinalIgnoreCase)))
            {
                return(false);
            }

            if (operationModel?.ReturnType?.TypeReference?.IsCollection ?? false)
            {
                return(false);
            }

            var lowerDomainName    = domainModel.Name.ToLower();
            var lowerOperationName = operationModel.Name.ToLower();

            return(new[]
            {
                "get",
                $"get{lowerDomainName}",
                "find",
                "findbyid",
                $"find{lowerDomainName}",
                $"find{lowerDomainName}byid",
                lowerDomainName
            }
                   .Contains(lowerOperationName));
        }
Пример #4
0
        public string GetImplementation(IMetaDataManager metaDataManager, SoftwareFactory.Engine.IApplication application, IClass domainModel, IOperationModel operationModel)
        {
            var idParam  = operationModel.Parameters.First(p => string.Equals(p.Name, "id", StringComparison.OrdinalIgnoreCase));
            var dtoParam = operationModel.Parameters.First(p => !string.Equals(p.Name, "id", StringComparison.OrdinalIgnoreCase));

            return($@"var existing{domainModel.Name} ={ (operationModel.IsAsync() ? " await" : "") } {domainModel.Name.ToPrivateMember()}Repository.FindById{ (operationModel.IsAsync() ? "Async" : "") }({idParam.Name});
                {EmitPropertyAssignments(metaDataManager, application, domainModel, "existing"+ domainModel.Name, dtoParam)}");
        }
        public string GetImplementation(IMetaDataManager metaDataManager, SoftwareFactory.Engine.IApplication application, IClass domainModel, IOperationModel operationModel)
        {
            return($@"var new{domainModel.Name} = new {domainModel.Name}
                {{
{EmitPropertyAssignments(metaDataManager, application, domainModel, operationModel.Parameters.First())}
                }};
                
                {domainModel.Name.ToPrivateMember()}Repository.Add(new{domainModel.Name});");
        }
Пример #6
0
        public static string ImplementOnMatch(IMetaDataManager metaDataManager, SoftwareFactory.Engine.IApplication application, IClass domainModel, IOperationModel operationModel)
        {
            foreach (var strategy in _strategies)
            {
                if (strategy.Match(metaDataManager, application, domainModel, operationModel))
                {
                    return(strategy.GetImplementation(metaDataManager, application, domainModel, operationModel));
                }
            }

            return(string.Empty);
        }
Пример #7
0
        private string EmitPropertyAssignments(IMetaDataManager metaDataManager, SoftwareFactory.Engine.IApplication application, IClass domainModel, string domainVarName, IOperationParameterModel operationParameterModel)
        {
            var sb  = new StringBuilder();
            var dto = metaDataManager.GetDTOModels(application).First(p => p.Id == operationParameterModel.TypeReference.Id);

            foreach (var domainAttribute in domainModel.Attributes)
            {
                var dtoField = dto.Fields.FirstOrDefault(p => p.Name.Equals(domainAttribute.Name, StringComparison.OrdinalIgnoreCase));
                if (dtoField == null)
                {
                    sb.AppendLine($"                    #warning No matching field found for {domainAttribute.Name}");
                    continue;
                }
                if (domainAttribute.Type.Id != dtoField.TypeReference.Id)
                {
                    sb.AppendLine($"                    #warning No matching type for Domain: {domainAttribute.Name} and DTO: {dtoField.Name}");
                    continue;
                }
                sb.AppendLine($"                    {domainVarName}.{domainAttribute.Name.ToPascalCase()} = {operationParameterModel.Name}.{dtoField.Name.ToPascalCase()};");
            }

            return(sb.ToString().Trim());
        }
        public bool Match(IMetaDataManager metaDataManager, SoftwareFactory.Engine.IApplication application, IClass domainModel, IOperationModel operationModel)
        {
            if (operationModel.Parameters.Count() != 1)
            {
                return(false);
            }

            if (operationModel.ReturnType != null)
            {
                return(false);
            }

            var lowerDomainName    = domainModel.Name.ToLower();
            var lowerOperationName = operationModel.Name.ToLower();

            return(new[]
            {
                "post",
                $"post{lowerDomainName}",
                "create",
                $"create{lowerDomainName}",
            }
                   .Contains(lowerOperationName));
        }
 public override IList <IClass> GetModels(SoftwareFactory.Engine.IApplication application)
 {
     return(_metaDataManager.GetDomainModels(application).ToList());
 }
 public string GetImplementation(IMetaDataManager metaDataManager, SoftwareFactory.Engine.IApplication application, IClass domainModel, IOperationModel operationModel)
 {
     return($@"var existing{domainModel.Name} ={ (operationModel.IsAsync() ? " await" : "") } {domainModel.Name.ToPrivateMember()}Repository.FindById{ (operationModel.IsAsync() ? "Async" : "") }(id);
         {domainModel.Name.ToPrivateMember()}Repository.Remove(existing{domainModel.Name});");
 }
 public string GetImplementation(IMetaDataManager metaDataManager, SoftwareFactory.Engine.IApplication application, IClass domainModel, IOperationModel operationModel)
 {
     return($@"var elements ={ (operationModel.IsAsync() ? "await" : "") } {domainModel.Name.ToPrivateMember()}Repository.FindAll{ (operationModel.IsAsync() ? "Async" : "") }();
     return elements.MapTo{domainModel.Name.ToPascalCase()}DTOs();");
 }
        public static IEnumerable <IEnumModel> GetEnumModels(this SoftwareFactory.Engine.IMetaDataManager metaDataManager, SoftwareFactory.Engine.IApplication application, string metadataIdentifier = null)
        {
            if (!string.IsNullOrWhiteSpace(metadataIdentifier))
            {
                return(metaDataManager.GetMetaData <IEnumModel>(new MetaDataIdentifier(metadataIdentifier)).Where(x => x.Application.Name == application.ApplicationName).ToList());
            }

            return(new IEnumModel[0]
                   .Concat(metaDataManager.GetMetaData <IEnumModel>(new MetaDataIdentifier("Domain")).Where(x => x.Application.Name == application.ApplicationName))
                   .Concat(metaDataManager.GetMetaData <IEnumModel>(new MetaDataIdentifier("Services")).Where(x => x.Application.Name == application.ApplicationName))
                   .ToList());
        }
        public static IEnumerable <IDTOModel> GetDTOModels(this SoftwareFactory.Engine.IMetaDataManager metaDataManager, SoftwareFactory.Engine.IApplication application, string metadataIdentifier = "Services")
        {
            var result = metaDataManager.GetMetaData <IDTOModel>(new MetaDataIdentifier(metadataIdentifier ?? "Services")).Where(x => x.Application.Name == application.ApplicationName).ToList();

            if (result.Any())
            {
                return(result);
            }

            // Purely for backward compatibility between 1.5.x and 1.6.x
            return(metaDataManager.GetMetaData <IDTOModel>(new MetaDataIdentifier("DTO")).Where(x => x.Application.Name == application.ApplicationName).ToList());
        }
Пример #14
0
 public static IEnumerable <IEnumModel> GetEnumModels(this IMetaDataManager metaDataManager, SoftwareFactory.Engine.IApplication application, string metadataIdentifier)
 {
     return(metaDataManager.GetMetaData <IEnumModel>(metadataIdentifier).Where(x => x.Application.Name == application.ApplicationName).ToList());
 }