private static void RunGenerator(RunContext context) { var contextConverter = new DALContextCreator(); var dalContext = contextConverter.ConvertRunContext(context); var callChainData = new DataModelCallChainBuilder().BuildPropertySheet(dalContext.RootDataModelType); var dalFactory = GetFactory(context.DALType); var generatedDalCode = dalFactory.EmitDataAccessLayerCode(callChainData, dalContext); WriteFile(context.OutputDirectory, TypeUtility.GetClassNameFromType(dalContext.RootDataModelType) + ".cs", generatedDalCode); }
public void Driver_ParseExpression() { DataModelCallChainBuilder <Derp> gb = new DataModelCallChainBuilder <Derp>(); gb.BuildPropertySheet(); // Ex: All expressions are anchored to a variable. // The variable anchor is a special token: $input followed by the call chain specific to that type: // Ex: Assuming $input is of type Derp: // $input.A2.T2 var parser = new QueryableChunkExpressionParser <Derp>(); //parser.Parse("A1.B1.T2"); //parser.Parse("A1.AR1[0]"); parser.Parse("AR1[2].A1.B1.C1.AR2[0]"); }
public void Driver_InvokeCallChain() { var derp = new Derp() { A1 = new Glorp() { B1 = new Flerb() { T1 = "A1,B1,T1", T2 = "A1,B1,T2" }, T1 = "A1,T1", AR1 = new[] { "derp", "glorp", "flerb" } }, A2 = new Flerb() { T1 = "A2,T1", T2 = "A2,T2" }, T1 = "T1" }; var derp2 = new Derp2() { Name = "level1", Nodes = new[] { new Derp2() { Name = "level2_1", Nodes = new Derp2[] { new Derp2() { Name = "level3_1" } } }, new Derp2() { Name = "level2_2", Nodes = new Derp2[] { new Derp2() { Name = "level3_2", Nodes = new Derp2[] { new Derp2() { Name = "level4_2" } } } } }, } }; DataModelCallChainBuilder <Derp2> dmccb = new DataModelCallChainBuilder <Derp2>(); var ps = dmccb.BuildPropertySheet(); var dpcDalFactory = new DirectPropertyCallDALFactory <Derp2>(); var context = new DALBuilderContext() { Namespace = "DataInspectorNS" }; using var dal = dpcDalFactory.CreateDataAccessLayer(ps, context); var output = dal.FetchValue <string>(derp2, "Nodes[1].Nodes[0].Nodes[0].Name"); // level4_2 var start = DateTime.Now; for (var i = 0; i < 1000000; ++i) { dal.FetchValue(derp2, "Nodes[1].Nodes[0].Nodes[0].Name"); // level4_2 } var end = DateTime.Now - start; Console.WriteLine(end); }
public void Driver_BuildCallChainGraph() { DataModelCallChainBuilder <Derp> gb = new DataModelCallChainBuilder <Derp>(); gb.BuildPropertySheet(); }