public void Add(IRelationAdditionOptions options) { string filePath = this.pathService.GetAbsolutePathForDbContext(options); string fileData = UpdateFileData(options, filePath); CsharpClassWriter.Write(filePath, fileData); }
private static void ParseOptions(IRelationAdditionOptions options, string[] args) { string entityName = args[3]; options.DomainFrom = entityName.Split('.')[0]; options.EntityNameFrom = entityName.Split('.')[1].Split(':')[0]; options.EntityNamePluralFrom = entityName.Split(':')[1]; entityName = args[4]; options.DomainTo = entityName.Split('.')[0]; options.EntityNameTo = entityName.Split('.')[1].Split(':')[0]; options.EntityNamePluralTo = entityName.Split(':')[1]; if (ArgumentParser.HasArgument(args, "-n", "--alternative-property-names")) { string st = ArgumentParser.ExtractArgument(args, "-n", "--alternative-property-names"); options.PropertyNameFrom = st.Split(':')[0]; options.PropertyNameTo = st.Split(':')[1]; } else { options.PropertyNameFrom = options.EntityNameFrom; options.PropertyNameTo = options.EntityNamePluralTo; } }
private string UpdateFileData(IRelationAdditionOptions options, string filePath) { string fileData = File.ReadAllText(filePath); StringEditor stringEditor = new StringEditor(fileData); stringEditor.NextThatContains("constructor("); stringEditor.InsertLine($" {options.EntityNamePluralLowerFrom}: I{options.EntityNameFrom}[];"); stringEditor.InsertNewLine(); stringEditor.NextThatContains("private router: Router"); stringEditor.InsertLine($" private {options.EntityNamePluralLowerFrom}CrudService: {options.EntityNamePluralFrom}CrudService,"); stringEditor.NextThatContains("this.formBuilder.group({"); stringEditor.NextThatContains("});"); stringEditor.InsertLine($" {options.PropertyNameFrom.LowerFirstChar()}Id: new FormControl(null, [Validators.required]),"); stringEditor.MoveToStart(); stringEditor.NextThatContains("ngOnInit()"); stringEditor.NextThatStartsWith(" }"); stringEditor.InsertNewLine(); stringEditor.InsertLine($" this.{options.EntityNamePluralLowerFrom} = await this.{options.EntityNamePluralLowerFrom}CrudService.get{options.EntityNamePluralFrom}();"); return(stringEditor.GetText()); }
private void AddTab(IRelationAdditionOptions options, StringEditor stringEditor) { stringEditor.MoveToStart(); stringEditor.NextThatContains(" </mat-tab-group>"); stringEditor.InsertLine($" <mat-tab label=\"{options.PropertyNameTo.ToReadable()}\">"); stringEditor.InsertLine($" <h2>{options.PropertyNameTo.ToReadable()}</h2>"); stringEditor.InsertLine($" <div class=\"table-container\">"); stringEditor.InsertLine($" <table mat-table [dataSource]=\"{options.EntityNamePluralLowerTo}TableDataSource\">"); stringEditor.InsertLine($""); stringEditor.InsertLine($" <ng-container matColumnDef=\"name\">"); stringEditor.InsertLine($" <th mat-header-cell *matHeaderCellDef> Name </th>"); stringEditor.InsertLine($" <td mat-cell *matCellDef=\"let element\"> {{{{element.name}}}} </td>"); stringEditor.InsertLine($" </ng-container>"); stringEditor.InsertLine($""); stringEditor.InsertLine($" <ng-container matColumnDef=\"detail\">"); stringEditor.InsertLine($" <th mat-header-cell *matHeaderCellDef></th>"); stringEditor.InsertLine($" <td mat-cell *matCellDef=\"let element\" width=\"10%\">"); stringEditor.InsertLine($" <button mat-button role=\"link\">Detail</button>"); stringEditor.InsertLine($" </td>"); stringEditor.InsertLine($" </ng-container>"); stringEditor.InsertLine($""); stringEditor.InsertLine($" <tr mat-header-row *matHeaderRowDef=\"{options.EntityNamePluralLowerTo}GridColumns; sticky: true\"></tr>"); stringEditor.InsertLine($" <tr mat-row *matRowDef=\"let row; columns: {options.EntityNamePluralLowerTo}GridColumns;\""); stringEditor.InsertLine($" [routerLink]=\"['/{StringConverter.PascalToKebabCase(options.DomainTo)}/{StringConverter.PascalToKebabCase(options.EntityNamePluralTo)}/detail', row.id]\"></tr>"); stringEditor.InsertLine($" </table>"); stringEditor.InsertLine($" </div>"); stringEditor.InsertLine($" </mat-tab>"); }
private string UpdateFileData(IRelationAdditionOptions options, string filePath) { string fileData = File.ReadAllText(filePath); StringEditor stringEditor = new StringEditor(fileData); // ----------- DbSet ----------- stringEditor.NextThatContains($"export class {options.EntityNameFrom}DetailPage"); stringEditor.Next(); stringEditor.InsertNewLine(); stringEditor.InsertLine($" public {options.EntityNamePluralLowerTo}TableDataSource = new MatTableDataSource<I{options.EntityNameTo}>([]);"); stringEditor.InsertLine($" public {options.EntityNamePluralLowerTo}GridColumns: string[] = ["); stringEditor.InsertLine($" 'name',"); stringEditor.InsertLine($" 'detail',"); stringEditor.InsertLine($" ];"); stringEditor.NextThatContains($"private async load{options.EntityNameFrom}("); stringEditor.NextThatContains(" }"); stringEditor.InsertNewLine(); stringEditor.InsertLine($" this.{options.EntityNamePluralLowerTo}TableDataSource.data = this.{options.EntityNameLowerFrom}.{options.PropertyNameTo.LowerFirstChar()};"); return(stringEditor.GetText()); }
protected override void Add1ToNRelation(IRelationAdditionOptions options) { // From string fromImportStatementPath = $"src/app/model/{StringConverter.PascalToKebabCase(options.DomainTo)}" + $"/{StringConverter.PascalToKebabCase(options.EntityNamePluralTo)}" + $"/dtos/i-{StringConverter.PascalToKebabCase(options.EntityNameTo)}"; IRelationSideAdditionOptions fromOptions = RelationAdditionOptions.GetPropertyForFrom(options, $"I{options.EntityNameTo}[]"); this.frontendDtoRelationAddition.AddPropertyToDTO(fromOptions, ModelProjectGeneration.DomainFolder, FileName, $"{options.EntityNameTo}, I{options.EntityNameTo}", fromImportStatementPath); frontendDtoPropertyFromMethodAddition.AddPropertyToDTO(options, ModelProjectGeneration.DomainFolder, FileName); // To string toImportStatementPath = $"src/app/model/{StringConverter.PascalToKebabCase(options.DomainFrom)}" + $"/{StringConverter.PascalToKebabCase(options.EntityNamePluralFrom)}" + $"/dtos/i-{StringConverter.PascalToKebabCase(options.EntityNameFrom)}"; IRelationSideAdditionOptions toOptions = RelationAdditionOptions.GetPropertyForTo(options, $"I{options.EntityNameFrom}"); this.frontendDtoRelationAddition.AddPropertyToDTO(toOptions, ModelProjectGeneration.DomainFolder, FileName, $"{options.EntityNameFrom}, I{options.EntityNameFrom}", toImportStatementPath); frontendDtoPropertyToMethodAddition.AddPropertyToDTO(options, ModelProjectGeneration.DomainFolder, FileName); }
private string GetNameResolutionMethod(IRelationAdditionOptions options) { return ($" public get{options.EntityNameFrom}Name({options.EntityNameLowerFrom}Id: string): string {{\n" + $" return this.{options.EntityNamePluralLowerFrom}.find({options.EntityNameLowerFrom} => {options.EntityNameLowerFrom}.id === {options.EntityNameLowerFrom}Id).name;\n" + " }"); }
public static bool Validate(IRelationAdditionOptions options) { if (string.IsNullOrEmpty(options.DomainFrom) || string.IsNullOrEmpty(options.EntityNameFrom) || string.IsNullOrEmpty(options.EntityNamePluralFrom) || string.IsNullOrEmpty(options.PropertyNameFrom) || string.IsNullOrEmpty(options.DomainTo) || string.IsNullOrEmpty(options.EntityNameTo) || string.IsNullOrEmpty(options.EntityNamePluralTo) || string.IsNullOrEmpty(options.PropertyNameTo) || !options.DomainFrom.IsAlpha() || !options.EntityNameFrom.IsAlpha() || !options.EntityNamePluralFrom.IsAlpha() || !options.PropertyNameFrom.IsAlpha() || !options.DomainTo.IsAlpha() || !options.EntityNameTo.IsAlpha() || !options.EntityNamePluralTo.IsAlpha() || !options.PropertyNameTo.IsAlpha()) { return(false); } options.DomainFrom = options.DomainFrom.UpperFirstChar(); options.EntityNameFrom = options.EntityNameFrom.UpperFirstChar(); options.EntityNamePluralFrom = options.EntityNamePluralFrom.UpperFirstChar(); options.PropertyNameFrom = options.PropertyNameFrom.UpperFirstChar(); options.DomainTo = options.DomainTo.UpperFirstChar(); options.EntityNameTo = options.EntityNameTo.UpperFirstChar(); options.EntityNamePluralTo = options.EntityNamePluralTo.UpperFirstChar(); options.PropertyNameTo = options.PropertyNameTo.UpperFirstChar(); return(true); }
public void AddPropertyToDTO(IRelationAdditionOptions options, string domainFolder, string fileName) { string filePath = GetFilePath(options, domainFolder, fileName); string fileData = UpdateFileData(options, filePath); TypescriptClassWriter.Write(filePath, fileData); }
private string UpdateFileData(IRelationAdditionOptions options, string filePath) { string fileData = File.ReadAllText(filePath); StringEditor stringEditor = new StringEditor(fileData); // ----------- DbSet ----------- if (fileData.Contains("</mat-tab-group>")) { stringEditor.NextThatContains("<mat-tab label=\"Stammdaten\">"); stringEditor.NextThatContains("</mat-tab>"); } else { stringEditor.NextThatStartsWith($"<div class=\"{options.EntityNameTo.ToKebab()}-detail-page\""); stringEditor.NextThatStartsWith($"</div>"); } stringEditor.InsertNewLine(); stringEditor.InsertLine(GetLine(options)); return(stringEditor.GetText()); }
public void Add(IRelationAdditionOptions options, string domainFolder, string templateFileName) { string filePath = GetFilePath(options, domainFolder, templateFileName); string fileData = UpdateFileData(options, filePath); CsharpClassWriter.Write(filePath, fileData); }
protected override void Add1ToNRelation(IRelationAdditionOptions options) { // To string usingStatement = $"{options.ProjectName}.Contract.Persistence.Modules.{options.DomainFrom}.{options.EntityNamePluralFrom}"; this.logicRelationAddition.Add(options, LogicProjectGeneration.DomainFolder, FileName, usingStatement); }
public void AddContraint(IRelationAdditionOptions options, string domainFolder, string templateFileName) { string filePath = GetFilePath(options, domainFolder, templateFileName); string fileData = GetFileData(options, filePath); File.WriteAllText(filePath, fileData); }
private string GetAppRoutingLine(IRelationAdditionOptions options) { return ($" <ng-container matColumnDef=\"{options.PropertyNameFrom.LowerFirstChar()}\">\n" + $" <th mat-header-cell *matHeaderCellDef mat-sort-header> {options.PropertyNameFrom.ToReadable()} </th>\n" + $" <td mat-cell *matCellDef=\"let element\" > {{{{get{options.EntityNameFrom}Name(element.{options.PropertyNameFrom.LowerFirstChar()}Id)}}}} </td>\n" + " </ng-container>\n"); }
protected override void Add1ToNRelation(IRelationAdditionOptions options) { IRelationSideAdditionOptions guidPropertyOptions = RelationAdditionOptions.GetPropertyForTo(options, "Guid"); PropertyAdditionOptions propertyAdditionOptions = new PropertyAdditionOptions(guidPropertyOptions); this.propertyAddition.AddPropertyToDTO(propertyAdditionOptions, LogicTestsProjectGeneration.DomainFolder, FileName); this.logicDbDtoTestMethodsAddition.Add(propertyAdditionOptions, LogicTestsProjectGeneration.DomainFolder, FileName); }
protected override void Add1ToNRelation(IRelationAdditionOptions options) { // From this.dtoFromRepositoryIncludeAddition.Add(options, PersistenceProjectGeneration.DomainFolder, FileName); // To this.dtoToRepositoryIncludeAddition.Add(options, PersistenceProjectGeneration.DomainFolder, FileName); }
protected override void Add1ToNRelation(IRelationAdditionOptions options) { // To IRelationSideAdditionOptions optionsTo = RelationAdditionOptions .GetPropertyForTo(options, "Guid"); this.relationAddition.AddRelationToDTO(optionsTo, LogicProjectGeneration.DomainFolder, FileName); }
protected override void Add1ToNRelation(IRelationAdditionOptions options) { IRelationSideAdditionOptions relationAdditionOptions = RelationAdditionOptions.GetPropertyForTo(options, "Guid"); PropertyAdditionOptions propertyAdditionOptions = new PropertyAdditionOptions(relationAdditionOptions); this.apiPropertyAddition.AddPropertyToDTO(propertyAdditionOptions, ApiProjectGeneration.DomainFolder, FileName); }
private string GetFilePath(IRelationAdditionOptions options, string domainFolder, string templateFileName) { IEntityAdditionOptions entityOptions = RelationAdditionOptions.GetPropertyForFrom(options); string absolutePathForDTOs = this.pathService.GetAbsolutePathForDTOs(entityOptions, domainFolder); string fileName = templateFileName.Replace("Entity", entityOptions.EntityName); string filePath = Path.Combine(absolutePathForDTOs, fileName); return(filePath); }
public static IEntityAdditionOptions GetPropertyForFrom(IRelationAdditionOptions options) { return(new EntityAdditionOptions(options) { Domain = options.DomainFrom, EntityName = options.EntityNameFrom, EntityNamePlural = options.EntityNamePluralFrom }); }
public void Add(IRelationAdditionOptions options, string domainFolder, string templateFileName) { string filePath = GetFilePath(options, domainFolder, templateFileName); string fileData = UpdateFileData(options, filePath); fileData = UsingStatements.Add(fileData, "Microsoft.EntityFrameworkCore"); CsharpClassWriter.Write(filePath, fileData); }
protected override void Add1ToNRelation(IRelationAdditionOptions options) { IRelationSideAdditionOptions toOptions = RelationAdditionOptions.GetPropertyForTo(options, "Guid"); PropertyAdditionOptions propertyAdditionOptions = new PropertyAdditionOptions(toOptions); this.frontendDtoPropertyAddition.AddPropertyToDTO(propertyAdditionOptions, ModelProjectGeneration.DomainFolder, FileName); this.frontendDtoPropertyMethodAddition.AddPropertyToDTO(propertyAdditionOptions, "fromApiEntity", "apiEntity", ModelProjectGeneration.DomainFolder, FileName); }
public static IEntityAdditionOptions GetPropertyForTo(IRelationAdditionOptions options) { return(new EntityAdditionOptions(options) { Domain = options.DomainTo, EntityName = options.EntityNameTo, EntityNamePlural = options.EntityNamePluralTo, }); }
public void Add(IRelationAdditionOptions options, string domainFolder, string templateFileName, string namespaceToAdd) { string filePath = GetFilePath(options, domainFolder, templateFileName); string fileData = UpdateFileData(options, filePath); fileData = UsingStatements.Add(fileData, namespaceToAdd); CsharpClassWriter.Write(filePath, fileData); }
private string GetFilePath(IRelationAdditionOptions options, string domainFolder, string templateFileName) { var entityOptions = RelationAdditionOptions.GetPropertyForTo(options); string absolutePathForDomain = this.pathService.GetAbsolutePathForDbDomain(entityOptions, domainFolder); string fileName = templateFileName.Replace("Entities", entityOptions.EntityNamePlural); string filePath = Path.Combine(absolutePathForDomain, fileName); return(filePath); }
protected override void Add1ToNRelation(IRelationAdditionOptions options) { // To IRelationSideAdditionOptions relationSideAdditionOptions = RelationAdditionOptions.GetPropertyForTo(options, "Guid"); PropertyAdditionOptions propertyAdditionOptions = new PropertyAdditionOptions(relationSideAdditionOptions); this.dbTablePropertyAddition.AddProperty(propertyAdditionOptions, DBProjectGeneration.DomainFolder, FileName); this.dbTableRelationContraintAddition.AddContraint(options, DBProjectGeneration.DomainFolder, FileName); }
private string GetFilePath(IRelationAdditionOptions options, string domainFolder, string fileName) { IEntityAdditionOptions entityOptions = RelationAdditionOptions.GetPropertyForFrom(options); string absolutePathForDTOs = this.pathService.GetAbsolutePathForFrontendModel(entityOptions, domainFolder); fileName = fileName.Replace("entity-kebab", StringConverter.PascalToKebabCase(entityOptions.EntityName)); string filePath = Path.Combine(absolutePathForDTOs, fileName); return(filePath); }
public void PerformAdd1ToNRelationCommand(IRelationAdditionOptions options) { try { this.Add1ToNRelation(options); } catch (Exception e) { Console.WriteLine("Fehler bei Relation-Generierung: " + e.Message); } }
internal static IRelationSideAdditionOptions GetPropertyForTo(IRelationAdditionOptions options, string propertyType) { return(new RelationSideAdditionOptions(options) { Domain = options.DomainTo, EntityName = options.EntityNameTo, EntityNamePlural = options.EntityNamePluralTo, PropertyType = propertyType, PropertyName = options.PropertyNameFrom + (propertyType.Equals("Guid") ? "Id" : "") }); }
private string UpdateFileData(IRelationAdditionOptions options, string filePath) { string fileData = File.ReadAllText(filePath); fileData = UsingStatements.Add(fileData, $"{options.ProjectName}.Contract.Persistence.Modules.{options.DomainFrom}.{options.EntityNamePluralFrom}"); fileData = UsingStatements.Add(fileData, $"{options.ProjectName}.Logic.Tests.Modules.{options.DomainFrom}.{options.EntityNamePluralFrom}"); // ----------- Repository Generation ----------- StringEditor stringEditor = new StringEditor(fileData); stringEditor.MoveToEnd(); stringEditor.Next(); stringEditor.PrevThatContains("}"); stringEditor.PrevThatContains("}"); stringEditor.InsertLine("\n" + $" private Mock<I{options.EntityNamePluralFrom}CrudRepository> Setup{options.EntityNamePluralFrom}RepositoryDefault()\n" + " {\n" + $" var {options.EntityNamePluralLowerFrom}CrudRepository = new Mock<I{options.EntityNamePluralFrom}CrudRepository>(MockBehavior.Strict);\n" + $" {options.EntityNamePluralLowerFrom}CrudRepository.Setup(repository => repository.Does{options.EntityNameFrom}Exist({options.EntityNameFrom}TestValues.IdDefault)).Returns(true);\n" + $" {options.EntityNamePluralLowerFrom}CrudRepository.Setup(repository => repository.Does{options.EntityNameFrom}Exist({options.EntityNameFrom}TestValues.IdDefault2)).Returns(true);\n" + $" {options.EntityNamePluralLowerFrom}CrudRepository.Setup(repository => repository.Does{options.EntityNameFrom}Exist({options.EntityNameFrom}TestValues.IdForCreate)).Returns(false);\n" + $" return {options.EntityNamePluralLowerFrom}CrudRepository;\n" + " }"); fileData = stringEditor.GetText(); // ----------- TestMethods ----------- stringEditor = new StringEditor(fileData); stringEditor.NextThatContains("[TestMethod]"); while (stringEditor.GetLineNumber() < stringEditor.GetLineCount()) { stringEditor.Next(); if (stringEditor.GetLine().Contains("Create" + options.EntityNameTo) || stringEditor.GetLine().Contains("Update" + options.EntityNameTo)) { stringEditor.NextThatContains($"Mock<I{options.EntityNamePluralTo}CrudRepository>"); stringEditor.Next(line => !line.Contains("CrudRepository>") && line.Trim().Length > 0); stringEditor.InsertLine($" Mock<I{options.EntityNamePluralFrom}CrudRepository> {options.EntityNamePluralLowerFrom}CrudRepository = this.Setup{options.EntityNamePluralFrom}RepositoryDefault();"); stringEditor.NextThatContains($"{options.EntityNamePluralTo}CrudLogic {options.EntityNamePluralLowerTo}CrudLogic = new {options.EntityNamePluralTo}CrudLogic"); stringEditor.Next(line => !line.Contains("CrudRepository.Object")); stringEditor.InsertLine($" {options.EntityNamePluralLowerFrom}CrudRepository.Object,"); } else { stringEditor.NextThatContains($"{options.EntityNamePluralTo}CrudLogic {options.EntityNamePluralLowerTo}CrudLogic = new {options.EntityNamePluralTo}CrudLogic"); stringEditor.Next(line => !line.Contains("CrudRepository.Object")); stringEditor.InsertLine(" null,"); } stringEditor.NextThatContains("[TestMethod]"); } return(stringEditor.GetText()); }