private void AddColumns <TEntity>(VerticalReportSchemaBuilder <TEntity> builder, ReportVariableData[] properties, Attribute[] globalAttributes) { foreach (ReportVariableData x in properties) { this.AddColumn(builder, x.Property, x.Attribute, globalAttributes); } }
private void AddColumn <TEntity>(VerticalReportSchemaBuilder <TEntity> builder, PropertyInfo property, ReportVariableAttribute attribute, Attribute[] globalAttributes) { IReportCellsProvider <TEntity> instance = this.CreateCellsProvider <TEntity>(property, attribute); builder.AddColumn(instance); builder.AddAlias(property.Name); this.ApplyAttributes(builder, property, globalAttributes); }
private void ProcessTablePropertyAttributes <TEntity>(VerticalReportSchemaBuilder <TEntity> builder) { IEnumerable <TablePropertyAttribute> attributes = typeof(TEntity) .GetCustomAttributes <TablePropertyAttribute>(); foreach (TablePropertyAttribute attribute in attributes) { foreach (IAttributeHandler handler in this.attributeHandlers) { handler.Handle(builder, attribute); } } }
private VerticalReportSchemaBuilder <TEntity> BuildVerticalReport <TEntity>(VerticalReportAttribute reportAttribute) { VerticalReportSchemaBuilder <TEntity> builder = this.BuildVerticalReportNoPostBuild <TEntity>(); if (reportAttribute?.PostBuilder != null && typeof(IVerticalReportPostBuilder <TEntity>).IsAssignableFrom(reportAttribute.PostBuilder)) { ((IVerticalReportPostBuilder <TEntity>)ActivatorUtilities.GetServiceOrCreateInstance(this.serviceProvider, reportAttribute.PostBuilder)) .Build(builder); } return(builder); }
private VerticalReportSchemaBuilder <TEntity> BuildVerticalReportNoPostBuild <TEntity>() { VerticalReportSchemaBuilder <TEntity> builder = new VerticalReportSchemaBuilder <TEntity>(); Attribute[] globalAttributes = this.GetGlobalAttributes <TEntity>(); ReportVariableData[] properties = this.GetProperties <TEntity>(); this.AddColumns(builder, properties, globalAttributes); this.AddComplexHeader(builder, properties); this.ProcessTablePropertyAttributes <TEntity>(builder); return(builder); }
private VerticalReportSchemaBuilder <TEntity> BuildVerticalReport <TEntity, TBuildParameter>( VerticalReportAttribute reportAttribute, TBuildParameter parameter) { VerticalReportSchemaBuilder <TEntity> builder = this.BuildVerticalReportNoPostBuild <TEntity>(); if (reportAttribute?.PostBuilder == null) { throw new InvalidOperationException($"Type {typeof(TEntity)} does not have post-builder."); } if (!typeof(IVerticalReportPostBuilder <TEntity, TBuildParameter>).IsAssignableFrom(reportAttribute.PostBuilder)) { throw new InvalidOperationException($"Type {reportAttribute.PostBuilder} is not assignable to {typeof(IVerticalReportPostBuilder<TEntity, TBuildParameter>)}."); } ((IVerticalReportPostBuilder <TEntity, TBuildParameter>)ActivatorUtilities.GetServiceOrCreateInstance(this.serviceProvider, reportAttribute.PostBuilder)) .Build(builder, parameter); return(builder); }