static void Main(string[] args) { Translator translator = new Translator((configure) => { configure.AddPlantUmlTarget((config) => { config.AddDataStructureObject(); config.UseArrowFirstToLast(); config.ShowNumberLine(); }); configure.AddTsqlTarget((config) => { config.AddComments(); }); configure.AddLogging((config) => { config.AddConsole(); config.AddDebug(); }); }); translator.EnvironmentMapper.Mapping = new Dictionary <string, string>() { { "Json", string.Empty }, { "Regular", string.Empty }, { "Namespace", "[DbSchema].[DbTable]." }, }; translator.DataModels.AddJsonModel($"{Directory.GetCurrentDirectory()}\\DataModel.json"); translator.DataModels.AddDictionaryModel(RegularModel.ModelConfiguration, "Regular"); translator.DataModels.DefaultNamespace = "Json"; ITransformationSchema schema = translator.CreateSchema(Example.Source); if (translator.Errors.Count == 0) { string plantUmlResult = translator.Translate(schema, "PlantUML"); PlantUmlUrlConverter converter = new PlantUmlUrlConverter(plantUmlResult); Process.Start("cmd.exe", $"/C start {converter.SVGUrl}"); string tsqlResult = translator.Translate(schema, "TSQL"); Debug.WriteLine(tsqlResult); } }
public static void Main(string[] args) { string source = Example.Source; string connectionString = @"Server=...;Trusted_Connection=True;"; IServiceCollection services = new ServiceCollection(); services.AddVtlProcessing((configure) => { configure.DataModels.DefaultNamespace = "Json"; configure.DataModels.AddSqlServerModel(connectionString); configure.DataModels.AddJsonModel($"{Directory.GetCurrentDirectory()}\\DataModel.json"); // namespace name is in a json file configure.DataModels.AddDictionaryModel((config) => { config .AddDataSet( "R1", (ComponentType.Identifier, BasicDataType.Integer, "Id1"), (ComponentType.Identifier, BasicDataType.Integer, "Id2"), (ComponentType.Measure, BasicDataType.Integer, "Me1"), (ComponentType.Measure, BasicDataType.Integer, "Me2"), (ComponentType.NonViralAttribute, BasicDataType.String, "At1"), (ComponentType.ViralAttribute, BasicDataType.Integer, "At2") ) .AddDataSet( "R2", (ComponentType.Identifier, BasicDataType.Integer, "Id1"), (ComponentType.Measure, BasicDataType.String, "Me1"), (ComponentType.Measure, BasicDataType.Integer, "Me2") ) .AddDataSet( "R_num", (ComponentType.Identifier, BasicDataType.Integer, "Id1"), (ComponentType.Measure, BasicDataType.Number, "Me2") ); } , "def_ns"); configure.EnvironmentMapper.Mapping = new Dictionary <string, string>() { { "Json", string.Empty }, { "Regular", string.Empty }, { "Pivot", "[VtlProcessingTests].[Pivoting]." }, }; }); services.AddPlantUmlTarget((configure) => { configure.AddDataStructureObject(); configure.UseArrowFirstToLast(); configure.ShowNumberLine(); configure.UseRuleExpressionsModel(); }); services.AddTsqlTarget((configure) => { configure.AddComments(); }); services.AddLogging((configure) => { configure.AddConsole(); configure.AddDebug(); configure.AddProvider(new ErrorCollectorProvider()); }); ServiceProvider provider = services.BuildServiceProvider(); ErrorCollectorProvider errColector = provider.GetService <ILoggerProvider>() as ErrorCollectorProvider; ITransformationSchema schema = provider.GetFrontEnd().BuildTransformationSchema(source); // front-end provider.GetMiddleEnd().Process(schema); // middle-end bool areErrors = errColector.ErrorCollectors.Sum(counter => counter.Errors.Count) > 0; // back-end: ITargetRenderer plantUmlRenderer = provider.GetTargetRenderer("PlantUML"); string plantUmlResult = plantUmlRenderer.Render(schema); PlantUmlUrlConverter converter = new PlantUmlUrlConverter(plantUmlResult); if (!areErrors) { ITargetRenderer tsqlRenderer = provider.GetTargetRenderer("TSQL"); Process.Start("cmd.exe", $"/C start {converter.SVGUrl}"); FilesManager.ResultToFile(plantUmlResult, "result.plantuml"); FilesManager.ResultToFile(tsqlRenderer.Render(schema), "result.sql"); } else { Debug.WriteLine($"\n\n{converter.SVGUrl}\n\n"); } }