public static void Create(CodeNamespace codeNamespace, CodeGenerationInfo generationInfo) { foreach (var item in generationInfo.GetTables()) { Create(codeNamespace, item, generationInfo); } }
private static void CreateTableFields(CodeTypeDeclaration classType, CodeGenerationInfo generationInfo) { foreach (var item in generationInfo.GetTables(true)) { var cmf = new CodeMemberField(); cmf.Attributes = MemberAttributes.Private; cmf.Name = item.GetFieldName(); cmf.Type = item.GetCodeType(); classType.Members.Add(cmf); } }
private static void CreateTableProperties(CodeTypeDeclaration classType, CodeGenerationInfo generationInfo) { foreach (var item in generationInfo.GetTables(true)) { var cmp = new CodeMemberProperty(); cmp.Attributes = MemberAttributes.Public | MemberAttributes.Final; cmp.Name = item.Name; cmp.Type = item.GetCodeType(); cmp.HasGet = true; cmp.HasSet = false; cmp.Comments.AddSummary(item.Comment); cmp.GetStatements.AddMethodReturn(item.GetFieldExpression()); classType.Members.Add(cmp); } }
public static void Create(CodeNamespace codeNamespace, CodeGenerationInfo generationInfo) { codeNamespace.Comments.Add(new CodeCommentStatement($"------------------------------------------------------------------------------")); codeNamespace.Comments.Add(new CodeCommentStatement($"dataBase: {generationInfo.DataBaseName}")); codeNamespace.Comments.Add(new CodeCommentStatement($"revision: {generationInfo.Revision}")); codeNamespace.Comments.Add(new CodeCommentStatement($"requested revision: {generationInfo.RequestedRevision}")); codeNamespace.Comments.Add(new CodeCommentStatement($"devmode: {generationInfo.IsDevmode}")); codeNamespace.Comments.Add(new CodeCommentStatement($"hash value: {generationInfo.TablesHashValue}")); codeNamespace.Comments.Add(new CodeCommentStatement($"tags: {generationInfo.Tags}")); codeNamespace.Comments.Add(new CodeCommentStatement($"------------------------------------------------------------------------------")); foreach (var item in generationInfo.GetTables()) { CremaTableClassCreator.Create(codeNamespace, item, generationInfo); } var classType = new CodeTypeDeclaration(); classType.Attributes = MemberAttributes.Public; classType.Name = generationInfo.ClassName; classType.IsClass = true; classType.TypeAttributes |= TypeAttributes.Sealed; classType.BaseTypes.Add("base", "CremaData"); CreateNameField(classType, generationInfo); CreateRevisionField(classType, generationInfo); CreateTypesHashValueField(classType, generationInfo); CreateTablesHashValueField(classType, generationInfo); CreateTagsHashValueField(classType, generationInfo); CreateNameProperty(classType, generationInfo); CreateRevisionProperty(classType, generationInfo); CreateTypesHashValueProperty(classType, generationInfo); CreateTablesHashValueProperty(classType, generationInfo); CreateTagsProperty(classType, generationInfo); CreateTableFields(classType, generationInfo); CreateCreateFromDataSetMethod(classType, generationInfo); CreateCreateFromFileMethod(classType, generationInfo); CreateTableProperties(classType, generationInfo); CreateReadFromDataSetMethod(classType, generationInfo); CreateReadFromFileMethod(classType, generationInfo); codeNamespace.Types.Add(classType); }
private static void CreateReadFromDataSetMethod(CodeTypeDeclaration classType, CodeGenerationInfo generationInfo) { var cmm = new CodeMemberMethod(); cmm.Attributes = MemberAttributes.Public; cmm.Name = "readFromDataSet"; cmm.Parameters.Add("reader", "IDataSet", "dataSet"); cmm.Parameters.Add(typeof(bool), "verifyRevision"); var dataSet = new CodeVariableReferenceExpression("dataSet"); { var ccs = CreateCompareDataBaseStatement(classType, generationInfo); var tst = CreateTryCatchStatement(classType, ccs, generationInfo.IsDevmode); cmm.Statements.Add(tst); } { var ccs = CreateCompareTypesHashValueStatement(classType, generationInfo); var tst = CreateTryCatchStatement(classType, ccs, generationInfo.IsDevmode); cmm.Statements.Add(tst); } { var ccs = CreateCompareTablesHashValueStatement(classType, generationInfo); var tst = CreateTryCatchStatement(classType, ccs, generationInfo.IsDevmode); cmm.Statements.Add(tst); } { var ccs = CreateCompareRevisionStatement(classType, generationInfo); var tst = CreateTryCatchStatement(classType, ccs, generationInfo.IsDevmode); cmm.Statements.Add(tst); } { var field = new CodeFieldReferenceExpression(new CodeThisReferenceExpression(), "_name"); var property = new CodePropertyReferenceExpression(dataSet, "name"); cmm.Statements.AddAssign(field, property); } { var field = new CodeFieldReferenceExpression(new CodeThisReferenceExpression(), "_revision"); var property = new CodePropertyReferenceExpression(dataSet, "revision"); cmm.Statements.AddAssign(field, property); } { var field = new CodeFieldReferenceExpression(new CodeThisReferenceExpression(), "_typesHashValue"); var property = new CodePropertyReferenceExpression(dataSet, "typesHashValue"); cmm.Statements.AddAssign(field, property); } { var field = new CodeFieldReferenceExpression(new CodeThisReferenceExpression(), "_tablesHashValue"); var property = new CodePropertyReferenceExpression(dataSet, "tablesHashValue"); cmm.Statements.AddAssign(field, property); } { var field = new CodeFieldReferenceExpression(new CodeThisReferenceExpression(), "_tags"); var property = new CodePropertyReferenceExpression(dataSet, "tags"); cmm.Statements.AddAssign(field, property); } foreach (var item in generationInfo.GetTables(true)) { var tableName = new CodePrimitiveExpression(item.Name); var tablesProp = new CodePropertyReferenceExpression(dataSet, "tables"); var table = new CodePropertyReferenceExpression(tablesProp, item.Name); var field = item.GetFieldExpression(); var createFromTable = new CodeMethodReferenceExpression(item.GetCodeTypeExpression(), "createFromTable"); var invoke = new CodeMethodInvokeExpression(createFromTable, table); var assignStatement = new CodeAssignStatement(field, invoke); var tryStatement = CreateTryCatchStatement(classType, assignStatement, generationInfo.IsDevmode); cmm.Statements.Add(tryStatement); } classType.Members.Add(cmm); }