Exemplo n.º 1
0
 private void AddColumns <TEntity>(VerticalReportSchemaBuilder <TEntity> builder, ReportVariableData[] properties, Attribute[] globalAttributes)
 {
     foreach (ReportVariableData x in properties)
     {
         this.AddColumn(builder, x.Property, x.Attribute, globalAttributes);
     }
 }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
                }
            }
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }