Browse Source

ExpressionVisitor.cs

reports
Peter Forstmeier 13 years ago
parent
commit
8933d4045b
  1. 3
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/ICSharpCode.Reporting.csproj
  2. 1
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ExportRenderer/FixedDocumentCreator.cs
  3. 41
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/ExpressionVisitor.cs
  4. 1
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/WpfExporter.cs
  5. 47
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Expressions/ExpressionRunner.cs
  6. 3
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs
  7. 8
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs
  8. 11
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/FormPageBuilder.cs
  9. 18
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ReportingFactory.cs
  10. 1
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/ICSharpCode.Reporting.Test.csproj
  11. 63
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Reportingfactory/FormPageFixture.cs
  12. 82
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Reportingfactory/GeneralReportLoading.cs
  13. 15
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Reportingfactory/PushModelFixture.cs

3
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/ICSharpCode.Reporting.csproj

@ -96,6 +96,7 @@
<Compile Include="Src\Exporter\DebugExporter.cs" /> <Compile Include="Src\Exporter\DebugExporter.cs" />
<Compile Include="Src\Exporter\Visitors\CanvasExtension.cs" /> <Compile Include="Src\Exporter\Visitors\CanvasExtension.cs" />
<Compile Include="Src\Exporter\Visitors\CanvasHelper.cs" /> <Compile Include="Src\Exporter\Visitors\CanvasHelper.cs" />
<Compile Include="Src\Exporter\Visitors\ExpressionVisitor.cs" />
<Compile Include="Src\Exporter\WpfExporter.cs" /> <Compile Include="Src\Exporter\WpfExporter.cs" />
<Compile Include="Src\Exporter\Visitors\AbstractVisitor.cs" /> <Compile Include="Src\Exporter\Visitors\AbstractVisitor.cs" />
<Compile Include="Src\Exporter\Visitors\IAcceptor.cs" /> <Compile Include="Src\Exporter\Visitors\IAcceptor.cs" />
@ -103,6 +104,7 @@
<Compile Include="Src\Exporter\Visitors\DebugVisitor.cs" /> <Compile Include="Src\Exporter\Visitors\DebugVisitor.cs" />
<Compile Include="Src\Exporter\Visitors\WpfVisitor.cs" /> <Compile Include="Src\Exporter\Visitors\WpfVisitor.cs" />
<Compile Include="Src\ExportRenderer\FixedDocumentCreator.cs" /> <Compile Include="Src\ExportRenderer\FixedDocumentCreator.cs" />
<Compile Include="Src\Expressions\ExpressionRunner.cs" />
<Compile Include="Src\Factories\ExportColumnFactory.cs" /> <Compile Include="Src\Factories\ExportColumnFactory.cs" />
<Compile Include="Src\Factories\ReportCreatorFactory.cs" /> <Compile Include="Src\Factories\ReportCreatorFactory.cs" />
<Compile Include="Src\Globals\CreateGraphics.cs" /> <Compile Include="Src\Globals\CreateGraphics.cs" />
@ -162,6 +164,7 @@
<Folder Include="Src\DataSource" /> <Folder Include="Src\DataSource" />
<Folder Include="Src\DataManager" /> <Folder Include="Src\DataManager" />
<Folder Include="Src\DataManager\Listhandling" /> <Folder Include="Src\DataManager\Listhandling" />
<Folder Include="Src\Expressions" />
<Folder Include="Src\Wpf" /> <Folder Include="Src\Wpf" />
<Folder Include="Src\PageBuilder" /> <Folder Include="Src\PageBuilder" />
<Folder Include="Src\PageBuilder\Converter" /> <Folder Include="Src\PageBuilder\Converter" />

1
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ExportRenderer/FixedDocumentCreator.cs

@ -66,7 +66,6 @@ namespace ICSharpCode.Reporting.ExportRenderer
public TextBlock CreateTextBlock(ExportText exportText) public TextBlock CreateTextBlock(ExportText exportText)
{ {
var textBlock = new TextBlock(); var textBlock = new TextBlock();
Console.WriteLine("createtextBlock for {0}",exportText.Text);
textBlock.Foreground = ConvertBrush(exportText.ForeColor); textBlock.Foreground = ConvertBrush(exportText.ForeColor);
// textBlock.Background = ConvertBrush(exportText.BackColor); // textBlock.Background = ConvertBrush(exportText.BackColor);
textBlock.Background = ConvertBrush(System.Drawing.Color.LightGray); textBlock.Background = ConvertBrush(System.Drawing.Color.LightGray);

41
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/ExpressionVisitor.cs

@ -0,0 +1,41 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.ObjectModel;
using ICSharpCode.Reporting.PageBuilder.ExportColumns;
namespace ICSharpCode.Reporting.Exporter.Visitors
{
/// <summary>
/// Description of ExpressionVisitor.
/// </summary>
internal class ExpressionVisitor: AbstractVisitor
{
private readonly Collection<ExportPage> pages;
public ExpressionVisitor(Collection<ExportPage> pages)
{
this.pages = pages;
}
public override void Visit(ICSharpCode.Reporting.PageBuilder.ExportColumns.ExportColumn exportColumn)
{
Console.WriteLine("Visit Page ");
}
public override void Visit(ICSharpCode.Reporting.PageBuilder.ExportColumns.ExportText exportColumn)
{
Console.WriteLine("ExpressionVisitor <{0}>",exportColumn.Name);
}
public override void Visit(ICSharpCode.Reporting.PageBuilder.ExportColumns.ExportContainer exportColumn)
{
Console.WriteLine("ExpressionVisitor <{0}>",exportColumn.Name);
}
public override void Visit(ICSharpCode.Reporting.PageBuilder.ExportColumns.ExportPage page)
{
Console.WriteLine("ExpressionVisitor page <{0}>",page.PageInfo.PageNumber);
}
}
}

1
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/WpfExporter.cs

@ -106,6 +106,7 @@ namespace ICSharpCode.Reporting.Exporter
return true; return true;
} }
Canvas CreateContainer(UIElement parent,IExportContainer exportContainer) Canvas CreateContainer(UIElement parent,IExportContainer exportContainer)
{ {
var acceptor = exportContainer as IAcceptor; var acceptor = exportContainer as IAcceptor;

47
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Expressions/ExpressionRunner.cs

@ -0,0 +1,47 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.ObjectModel;
using ICSharpCode.Reporting.Exporter;
using ICSharpCode.Reporting.Exporter.Visitors;
using ICSharpCode.Reporting.PageBuilder.ExportColumns;
namespace ICSharpCode.Reporting.Expressions
{
/// <summary>
/// Description of ExpressionRunner.
/// </summary>
class ExpressionRunner:BaseExporter
{
// http://www.killswtch.net/2013/08/01/time-arithmetic-with-irony/
// http://blog.miraclespain.com/archive/2009/Oct-07.html
//
private readonly ExpressionVisitor visitor;
public ExpressionRunner(Collection<ExportPage> pages):base(pages)
{
visitor = new ExpressionVisitor (Pages);
}
public override void Run()
{
Console.WriteLine("Start ExpressionVisitor");
foreach (var page in Pages) {
InternalRun(page);
}
Console.WriteLine("Finish ExpressionVisitor");
}
void InternalRun(ExportPage page)
{
page.Accept(visitor);
foreach (var item in page.ExportedItems) {
// ShowContainerRecursive(null,item);
var acceptor = item as IAcceptor;
acceptor.Accept(visitor);
}
}
}
}

3
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs

@ -190,6 +190,9 @@ namespace ICSharpCode.Reporting.PageBuilder
public virtual void BuildExportList() public virtual void BuildExportList()
{ {
this.Pages.Clear(); this.Pages.Clear();
CurrentPage = CreateNewPage ();
WriteStandardSections();
CurrentLocation = DetailStart;
} }
protected IReportModel ReportModel {get; private set;} protected IReportModel ReportModel {get; private set;}

8
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs

@ -13,6 +13,7 @@ using System.Drawing;
using System.Linq; using System.Linq;
using ICSharpCode.Reporting.DataManager.Listhandling; using ICSharpCode.Reporting.DataManager.Listhandling;
using ICSharpCode.Reporting.Expressions;
using ICSharpCode.Reporting.Interfaces; using ICSharpCode.Reporting.Interfaces;
using ICSharpCode.Reporting.Interfaces.Export; using ICSharpCode.Reporting.Interfaces.Export;
using ICSharpCode.Reporting.PageBuilder.Converter; using ICSharpCode.Reporting.PageBuilder.Converter;
@ -35,12 +36,11 @@ namespace ICSharpCode.Reporting.PageBuilder
public override void BuildExportList() public override void BuildExportList()
{ {
base.BuildExportList(); base.BuildExportList();
CurrentPage = CreateNewPage ();
WriteStandardSections();
CurrentLocation = DetailStart;
BuildDetail(); BuildDetail();
// row_BuildDetail(); // row_BuildDetail();
base.AddPage(CurrentPage); base.AddPage(CurrentPage);
var er = new ExpressionRunner(Pages);
er.Run();
} }
@ -61,7 +61,7 @@ namespace ICSharpCode.Reporting.PageBuilder
detail = CreateContainerForSection(DetailStart); detail = CreateContainerForSection(DetailStart);
detail.DesiredSize = new Size(detail.Size.Width,DetailEnds.Y - DetailStart.Y); detail.DesiredSize = new Size(detail.Size.Width,DetailEnds.Y - DetailStart.Y);
//detail = CreateDetail(DetailStart);
detail.Parent = CurrentPage; detail.Parent = CurrentPage;
do { do {
collectionSource.Fill(CurrentSection.Items); collectionSource.Fill(CurrentSection.Items);

11
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/FormPageBuilder.cs

@ -8,9 +8,8 @@
*/ */
using System; using System;
using System.Linq; using System.Linq;
using ICSharpCode.Reporting.Expressions;
using ICSharpCode.Reporting.Interfaces; using ICSharpCode.Reporting.Interfaces;
using ICSharpCode.Reporting.Interfaces.Export;
namespace ICSharpCode.Reporting.PageBuilder namespace ICSharpCode.Reporting.PageBuilder
{ {
@ -28,14 +27,14 @@ namespace ICSharpCode.Reporting.PageBuilder
public override void BuildExportList() public override void BuildExportList()
{ {
base.BuildExportList(); base.BuildExportList();
CurrentPage = CreateNewPage (); BuildDetail();
WriteStandardSections();
BuilDetail();
base.AddPage(CurrentPage); base.AddPage(CurrentPage);
var er = new ExpressionRunner(Pages);
er.Run();
} }
void BuilDetail() void BuildDetail()
{ {
CurrentLocation = DetailStart; CurrentLocation = DetailStart;
var detail = CreateSection(ReportModel.DetailSection,CurrentLocation); var detail = CreateSection(ReportModel.DetailSection,CurrentLocation);

18
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ReportingFactory.cs

@ -8,12 +8,9 @@
*/ */
using System; using System;
using System.Collections; using System.Collections;
using System.Collections.Generic;
using System.IO; using System.IO;
using System.Xml; using System.Xml;
using ICSharpCode.Reporting.Factories;
using ICSharpCode.Reporting.Globals;
using ICSharpCode.Reporting.Interfaces; using ICSharpCode.Reporting.Interfaces;
using ICSharpCode.Reporting.Items; using ICSharpCode.Reporting.Items;
using ICSharpCode.Reporting.PageBuilder; using ICSharpCode.Reporting.PageBuilder;
@ -44,21 +41,12 @@ namespace ICSharpCode.Reporting
{ {
ReportModel = LoadReportModel (stream); ReportModel = LoadReportModel (stream);
IReportCreator builder = null; IReportCreator builder = null;
builder = ReportCreatorFactory.ExporterFactory(ReportModel); // builder = ReportCreatorFactory.ExporterFactory(ReportModel);
builder = new FormPageBuilder(ReportModel);
return builder; return builder;
} }
internal IReportCreator ReportCreator (ReportModel reportModel) {
if (reportModel == null)
throw new ArgumentNullException("reportModel");
IReportCreator builder = null;
ReportModel = reportModel;
builder = ReportCreatorFactory.ExporterFactory(reportModel);
return builder;
}
internal ReportModel LoadReportModel (Stream stream) internal ReportModel LoadReportModel (Stream stream)
{ {
var doc = new XmlDocument(); var doc = new XmlDocument();

1
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/ICSharpCode.Reporting.Test.csproj

@ -73,6 +73,7 @@
<Compile Include="src\PageBuilder\PageLayoutFixture.cs" /> <Compile Include="src\PageBuilder\PageLayoutFixture.cs" />
<Compile Include="src\Properties\AssemblyInfo.cs" /> <Compile Include="src\Properties\AssemblyInfo.cs" />
<Compile Include="src\Reportingfactory\FormPageFixture.cs" /> <Compile Include="src\Reportingfactory\FormPageFixture.cs" />
<Compile Include="src\Reportingfactory\GeneralReportLoading.cs" />
<Compile Include="src\Reportingfactory\PushModelFixture.cs" /> <Compile Include="src\Reportingfactory\PushModelFixture.cs" />
<Compile Include="src\ReportItems\TextItemFixture.cs" /> <Compile Include="src\ReportItems\TextItemFixture.cs" />
<Compile Include="src\TestHelper.cs" /> <Compile Include="src\TestHelper.cs" />

63
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Reportingfactory/FormPageFixture.cs

@ -10,69 +10,28 @@ using System;
using System.IO; using System.IO;
using System.Reflection; using System.Reflection;
using ICSharpCode.Reporting.Globals; using ICSharpCode.Reporting.PageBuilder;
using NUnit.Framework; using NUnit.Framework;
using ICSharpCode.Reporting.Test; using ICSharpCode.Reporting.Test;
namespace ICSharpCode.Reporting.Test.Model namespace ICSharpCode.Reporting.Test.Reportingfactory
{ {
[TestFixture] [TestFixture]
public class LoadPlainModelFixture public class FormSheetFixture
{ {
private Stream stream; Stream stream;
[Test]
public void CanLoadFromResource()
{
Assert.IsNotNull(stream);
}
[Test]
public void LoadPlainModel()
{
var rf = new ReportingFactory();
var model = rf.LoadReportModel(stream);
Assert.IsNotNull(model);
}
[Test] [Test]
public void ReportSettingsFromPlainModel() public void CanCreateReportCreatorFromFormSheet () {
{ var reportingFactory = new ReportingFactory();
var rf = new ReportingFactory(); var rc = reportingFactory.ReportCreator(stream);
var model = rf.LoadReportModel(stream); Assert.That(rc,Is.Not.Null);
Assert.That(model.ReportSettings,Is.Not.Null); Assert.That(rc,Is.TypeOf(typeof(FormPageBuilder)));
} }
[Test]
public void ReportSettingsReportName()
{
var rf = new ReportingFactory();
var model = rf.LoadReportModel(stream);
Assert.That(model.ReportSettings.ReportName,Is.EqualTo(GlobalValues.DefaultReportName));
}
[Test]
public void ReportSettingsDataModelFormSheet()
{
var rf = new ReportingFactory();
var model = rf.LoadReportModel(stream);
Assert.That(model.ReportSettings.DataModel,Is.EqualTo(GlobalEnums.PushPullModel.FormSheet));
}
[Test]
public void ReportSettingsPageSize()
{
var rf = new ReportingFactory();
var model = rf.LoadReportModel(stream);
Assert.That(model.ReportSettings.PageSize,Is.EqualTo(Globals.GlobalValues.DefaultPageSize));
}
[SetUp] [SetUp]
public void LoadFromStream() public void LoadFromStream()
{ {

82
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Reportingfactory/GeneralReportLoading.cs

@ -0,0 +1,82 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 05.09.2013
* Time: 20:26
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.IO;
using System.Reflection;
using ICSharpCode.Reporting.Globals;
using NUnit.Framework;
namespace ICSharpCode.Reporting.Test.Reportingfactory
{
[TestFixture]
public class GeneralReportLoading
{
private Stream stream;
[Test]
public void CanLoadFromResource()
{
Assert.IsNotNull(stream);
}
[Test]
public void LoadPlainModel()
{
var rf = new ReportingFactory();
var model = rf.LoadReportModel(stream);
Assert.IsNotNull(model);
}
[Test]
public void ReportSettingsFromPlainModel()
{
var rf = new ReportingFactory();
var model = rf.LoadReportModel(stream);
Assert.That(model.ReportSettings,Is.Not.Null);
}
[Test]
public void ReportSettingsReportName()
{
var rf = new ReportingFactory();
var model = rf.LoadReportModel(stream);
Assert.That(model.ReportSettings.ReportName,Is.EqualTo(GlobalValues.DefaultReportName));
}
[Test]
public void ReportSettingsDataModelFormSheet()
{
var rf = new ReportingFactory();
var model = rf.LoadReportModel(stream);
Assert.That(model.ReportSettings.DataModel,Is.EqualTo(GlobalEnums.PushPullModel.FormSheet));
}
[Test]
public void ReportSettingsPageSize()
{
var rf = new ReportingFactory();
var model = rf.LoadReportModel(stream);
Assert.That(model.ReportSettings.PageSize,Is.EqualTo(Globals.GlobalValues.DefaultPageSize));
}
[SetUp]
public void LoadFromStream()
{
var asm = Assembly.GetExecutingAssembly();
stream = asm.GetManifestResourceStream(TestHelper.PlainReportFileName);
}
}
}

15
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Reportingfactory/PushModelFixture.cs

@ -27,6 +27,21 @@ namespace ICSharpCode.Reporting.Test.Reportingfactory
private IReportCreator reportCreator; private IReportCreator reportCreator;
[Test]
public void CanCreateReportCreatorFromList () {
var contributorList = new ContributorsList();
var list = contributorList.ContributorCollection;
var asm = Assembly.GetExecutingAssembly();
var stream = asm.GetManifestResourceStream(TestHelper.ReportFromList);
var reportingFactory = new ReportingFactory();
var rc = reportingFactory.ReportCreator(stream,typeof(Contributor),list);
Assert.That(rc,Is.Not.Null);
Assert.That(rc,Is.TypeOf(typeof(DataPageBuilder)));
}
[Test] [Test]
public void InitPushModelReport() public void InitPushModelReport()
{ {

Loading…
Cancel
Save