private void ReportDiff(GeneratedDaoAssemblyInfo info, TypeSchema typeSchema) { OldInfoString = info.TypeSchemaInfo ?? string.Empty; NewInfoString = typeSchema.ToString(); DiffReport diff = DiffReport.Create(OldInfoString, NewInfoString); ConsoleDiffReportFormatter diffFormatter = new ConsoleDiffReportFormatter(diff); diffFormatter.Format(); // outputs to console FireEvent(SchemaDifferenceDetected, new SchemaDifferenceEventArgs { GeneratedDaoAssemblyInfo = info, TypeSchema = typeSchema, DiffReport = diff }); }
protected internal bool GenerateDaoAssembly(TypeSchema typeSchema, out CompilationException compilationEx) { try { compilationEx = null; SchemaDefinition schema = SchemaDefinitionCreateResult.SchemaDefinition; string assemblyName = "{0}.dll"._Format(schema.Name); string writeSourceTo = TypeSchemaTempPathProvider(schema, typeSchema); CompilerResults results = GenerateAndCompile(assemblyName, writeSourceTo); GeneratedDaoAssemblyInfo info = new GeneratedDaoAssemblyInfo(schema.Name, results) { TypeSchema = typeSchema, SchemaDefinition = schema }; info.Save(); GeneratedAssemblies.SetAssemblyInfo(schema.Name, info); Message = "Type Dao Generation completed successfully"; FireEvent(GenerateDaoAssemblySucceeded, new GenerateDaoAssemblyEventArgs(info)); TryDeleteDaoTemp(writeSourceTo); return(true); } catch (CompilationException ex) { Message = ex.Message; if (!string.IsNullOrEmpty(ex.StackTrace)) { Message = "{0}:\r\nStackTrace: {1}"._Format(Message, ex.StackTrace); } compilationEx = ex; FireEvent(GenerateDaoAssemblyFailed, EventArgs.Empty); return(false); } }
public Assembly GetDaoAssembly(bool useExisting = true) { GeneratedDaoAssemblyInfo info = GeneratedAssemblies.GetGeneratedAssemblyInfo(SchemaName) as GeneratedDaoAssemblyInfo; if (info == null) { TypeSchema typeSchema = SchemaDefinitionCreateResult.TypeSchema; SchemaDefinition schemaDef = SchemaDefinitionCreateResult.SchemaDefinition; string schemaName = schemaDef.Name; string schemaHash = typeSchema.Hash; info = new GeneratedDaoAssemblyInfo(schemaName, typeSchema, schemaDef); // check for the info file if (info.InfoFileExists && useExisting) // load it from file if it exists { info = info.InfoFilePath.FromJsonFile <GeneratedDaoAssemblyInfo>(); if (info.TypeSchemaHash == null || !info.TypeSchemaHash.Equals(schemaHash)) // regenerate if the hashes don't match { ReportDiff(info, typeSchema); GenerateOrThrow(schemaDef, typeSchema); } else { GeneratedAssemblies.SetAssemblyInfo(schemaName, info); } } else { GenerateOrThrow(schemaDef, typeSchema); } info = GeneratedAssemblies.GetGeneratedAssemblyInfo(SchemaName) as GeneratedDaoAssemblyInfo; } return(info.GetAssembly()); }