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)); }
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)); }
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});"); }
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); }
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()); }
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()); }