Browse Source

Cleanup Interfaces and BaseClasses

reports
Peter Forstmeier 13 years ago
parent
commit
23d38d0864
  1. 9
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/ICSharpCode.Reporting.csproj
  2. 36
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Arrange/ArrangeStrategy.cs
  3. 84
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/DebugExporter.cs
  4. 20
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/IAcceptor.cs
  5. 21
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/IVisitor.cs
  6. 53
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitor.cs
  7. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Factories/ExportColumnFactory.cs
  8. 1
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/Export/IExportColumn.cs
  9. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/Export/IExportContainer.cs
  10. 5
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IPrintableObject.cs
  11. 7
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IReportContainer.cs
  12. 4
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IReportCreator.cs
  13. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/BaseSection.cs
  14. 9
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/PrintableItem.cs
  15. 18
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ReportContainer.cs
  16. 8
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ReportObject.cs
  17. 7
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs
  18. 13
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/ContainerConverter.cs
  19. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportColumn.cs
  20. 9
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportContainer.cs
  21. 7
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportText.cs
  22. 47
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/FormPageBuilder.cs
  23. 1
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/ICSharpCode.Reporting.Test.csproj
  24. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Model/Report_TwoItemsFixture.cs
  25. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/BaseConvertFixture.cs
  26. 8
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/ContainerConverterFixture.cs
  27. 33
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/PageBuilderFixture.cs
  28. 70
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/PageLayoutFixture.cs
  29. 52
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/TestHelper.cs

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

@ -55,9 +55,14 @@ @@ -55,9 +55,14 @@
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="Src\Arrange\ArrangeStrategy.cs" />
<Compile Include="Src\BaseClasses\Page.cs" />
<Compile Include="Src\BaseClasses\PageInfo.cs" />
<Compile Include="Src\Configuration\AssemblyInfo.cs" />
<Compile Include="Src\Exporter\DebugExporter.cs" />
<Compile Include="Src\Exporter\IAcceptor.cs" />
<Compile Include="Src\Exporter\IVisitor.cs" />
<Compile Include="Src\Exporter\Visitor.cs" />
<Compile Include="Src\Factories\ExportColumnFactory.cs" />
<Compile Include="Src\Factories\SectionFactory.cs" />
<Compile Include="Src\Interfaces\Export\IExportColumn.cs" />
@ -74,7 +79,7 @@ @@ -74,7 +79,7 @@
<Compile Include="Src\Items\BaseTextItem.cs" />
<Compile Include="Src\Items\PrintableItem.cs" />
<Compile Include="Src\Items\ReportContainer.cs" />
<Compile Include="Src\Items\ReportItem.cs" />
<Compile Include="Src\Items\ReportObject.cs" />
<Compile Include="Src\Items\ReportModel.cs" />
<Compile Include="Src\Items\ReportSettings.cs" />
<Compile Include="Src\PageBuilder\BasePageBuilder.cs" />
@ -96,6 +101,8 @@ @@ -96,6 +101,8 @@
<Folder Include="Src\Items" />
<Folder Include="Src\BaseClasses" />
<Folder Include="Src\Factories" />
<Folder Include="Src\Exporter" />
<Folder Include="Src\Arrange" />
<Folder Include="Src\PageBuilder" />
<Folder Include="Src\PageBuilder\Converter" />
<Folder Include="Src\PageBuilder\ExportColumns" />

36
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Arrange/ArrangeStrategy.cs

@ -0,0 +1,36 @@ @@ -0,0 +1,36 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 22.04.2013
* Time: 19:11
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using ICSharpCode.Reporting.Interfaces;
using ICSharpCode.Reporting.Items;
using ICSharpCode.Reporting.PageBuilder.ExportColumns;
namespace ICSharpCode.Reporting.Arrange
{
/// <summary>
/// Description of ArrangeStrategy.
/// </summary>
public interface IArrangeStrategy
{
void Arrange(IPrintableObject reportItem);
}
public class ContainerArrangeStrategy:IArrangeStrategy
{
public ContainerArrangeStrategy()
{
}
public void Arrange(IPrintableObject reportItem)
{
Console.WriteLine("Arrange {0}",reportItem.Name);
}
}
}

84
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/DebugExporter.cs

@ -0,0 +1,84 @@ @@ -0,0 +1,84 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 18.04.2013
* Time: 20:06
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using ICSharpCode.Reporting.Interfaces.Export;
namespace ICSharpCode.Reporting.Exporter
{
/// <summary>
/// Description of DebugExporter.
/// </summary>
public class DebugExporter
{
public DebugExporter(Collection<IPage> pages)
{
if (pages == null) {
throw new ArgumentException("pages");
}
Pages = pages;
}
public void Run () {
foreach (var page in Pages) {
ShowDebug(page);
}
}
static void ShowDebug(IExportContainer container)
{
var visitor = new DebugVisitor();
foreach (var item in container.ExportedItems) {
if (item is IExportContainer) {
var a = item as IAcceptor;
if (a != null) {
Console.WriteLine("----");
a.Accept(visitor);
}
ShowDebug(item as IExportContainer);
} else {
var b = item as IAcceptor;
if (b != null) {
b.Accept(visitor);
}
}
}
}
/*
static void ShowDebug(IExportContainer container)
{
var visitor = new DebugVisitor();
foreach (var item in container.ExportedItems) {
if (item is IExportContainer) {
var a = item as IAcceptor;
if (a != null) {
Console.WriteLine("----");
a.Accept(visitor);
}
ShowDebug(item as IExportContainer);
} else {
var b = item as IAcceptor;
if (b != null) {
b.Accept(visitor);
}
}
}
}
*/
public Collection<IPage> Pages {get; private set;}
}
}

20
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/IAcceptor.cs

@ -0,0 +1,20 @@ @@ -0,0 +1,20 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 20.04.2013
* Time: 18:30
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
namespace ICSharpCode.Reporting.Exporter
{
/// <summary>
/// Description of IAcceptor.
/// </summary>
public interface IAcceptor
{
void Accept(IVisitor visitor);
}
}

21
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/IVisitor.cs

@ -0,0 +1,21 @@ @@ -0,0 +1,21 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 18.04.2013
* Time: 20:09
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Collections.Generic;
using ICSharpCode.Reporting.PageBuilder.ExportColumns;
namespace ICSharpCode.Reporting.Exporter
{
public interface IVisitor
{
void Visit(ExportColumn exportColumn);
void Visit(ExportContainer exportColumn);
void Visit(ExportText exportColumn);
}
}

53
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitor.cs

@ -0,0 +1,53 @@ @@ -0,0 +1,53 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 18.04.2013
* Time: 20:09
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Collections.Generic;
using ICSharpCode.Reporting.PageBuilder.ExportColumns;
namespace ICSharpCode.Reporting.Exporter
{
/// <summary>
/// Description of Visitor.
/// </summary>
///
public abstract class Visitor : IVisitor
{
public abstract void Visit(ExportColumn exportColumn);
public abstract void Visit(ExportContainer exportColumn);
public abstract void Visit(ExportText exportColumn);
}
// http://www.remondo.net/visitor-pattern-example-csharp/
// http://www.codeproject.com/Articles/42240/Visitor-Design-Pattern
// http://www.remondo.net/strategy-pattern-example-csharp/
public class DebugVisitor : Visitor
{
public override void Visit(ExportColumn exportColumn)
{
Console.WriteLine("Visit ExportColumn {0} - {1} - {2}", exportColumn.Name,exportColumn.Size,exportColumn.Location);
}
public override void Visit(ExportContainer exportColumn)
{
Console.WriteLine("Visit ExportContainer {0} - {1} - {2}", exportColumn.Name,exportColumn.Size,exportColumn.Location);
}
public override void Visit(ExportText exportColumn)
{
Console.WriteLine("Visit ExportText {0} - {1} - {2}", exportColumn.Name,exportColumn.Size,exportColumn.Location);
}
}
}

2
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Factories/ExportColumnFactory.cs

@ -24,7 +24,7 @@ namespace ICSharpCode.Reporting.Factories @@ -24,7 +24,7 @@ namespace ICSharpCode.Reporting.Factories
{
}
public IExportColumn CreateItem (IPrintableObject item) {
public static IExportColumn CreateItem (IPrintableObject item) {
var export = item.CreateExportColumn();
return export;
}

1
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/Export/IExportColumn.cs

@ -8,6 +8,7 @@ @@ -8,6 +8,7 @@
*/
using System;
using ICSharpCode.Reporting.BaseClasses;
using ICSharpCode.Reporting.Exporter;
namespace ICSharpCode.Reporting.Interfaces.Export
{

2
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/Export/IExportContainer.cs

@ -17,7 +17,7 @@ namespace ICSharpCode.Reporting.Interfaces.Export @@ -17,7 +17,7 @@ namespace ICSharpCode.Reporting.Interfaces.Export
/// </summary>
public interface IExportContainer:IExportColumn
{
List<IExportColumn> ExportedItems {get;set;}
List<IExportColumn> ExportedItems {get;}
}
}

5
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IPrintableObject.cs

@ -23,7 +23,10 @@ namespace ICSharpCode.Reporting.Interfaces @@ -23,7 +23,10 @@ namespace ICSharpCode.Reporting.Interfaces
}
public interface IPrintableObject:IReportObject {
public interface IPrintableObject {
string Name{get;set;}
Size Size {get;set;}
Point Location {get;set;}
IExportColumn CreateExportColumn();
}

7
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IReportContainer.cs

@ -16,9 +16,10 @@ namespace ICSharpCode.Reporting.Interfaces @@ -16,9 +16,10 @@ namespace ICSharpCode.Reporting.Interfaces
/// <summary>
/// Description of IReportContainer.
/// </summary>
public interface IReportContainer :IReportObject
public interface IReportContainer :IPrintableObject
{
List<IPrintableObject> Items {get;set;}
IExportContainer CreateExportColumn();
List<IPrintableObject> Items {get;}
// IExportContainer CreateExportColumn();
// IExportColumn CreateExportColumn();
}
}

4
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IReportCreator.cs

@ -8,6 +8,8 @@ @@ -8,6 +8,8 @@
*/
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using ICSharpCode.Reporting.BaseClasses;
using ICSharpCode.Reporting.Interfaces.Export;
@ -19,7 +21,7 @@ namespace ICSharpCode.Reporting.Interfaces @@ -19,7 +21,7 @@ namespace ICSharpCode.Reporting.Interfaces
public interface IReportCreator
{
void BuildExportList ();
List<IPage> Pages {get;}
Collection<IPage> Pages {get;}
// PagesCollection Pages{get;}
// event EventHandler<PageCreatedEventArgs> PageCreated;

2
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/BaseSection.cs

@ -31,5 +31,7 @@ namespace ICSharpCode.Reporting.Items @@ -31,5 +31,7 @@ namespace ICSharpCode.Reporting.Items
}
#endregion
}
}

9
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/PrintableItem.cs

@ -13,8 +13,15 @@ using ICSharpCode.Reporting.Interfaces.Export; @@ -13,8 +13,15 @@ using ICSharpCode.Reporting.Interfaces.Export;
namespace ICSharpCode.Reporting.Items
{
public class PrintableItem : ReportItem,IPrintableObject
public class PrintableItem : IPrintableObject
{
public string Name { get; set; }
public Point Location { get; set; }
public Size Size { get; set; }
public virtual IExportColumn CreateExportColumn()
{
return null;

18
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ReportContainer.cs

@ -8,6 +8,8 @@ @@ -8,6 +8,8 @@
*/
using System;
using System.Collections.Generic;
using ICSharpCode.Reporting.Arrange;
using ICSharpCode.Reporting.Exporter;
using ICSharpCode.Reporting.Interfaces;
using ICSharpCode.Reporting.Interfaces.Export;
using ICSharpCode.Reporting.PageBuilder.ExportColumns;
@ -17,7 +19,7 @@ namespace ICSharpCode.Reporting.Items @@ -17,7 +19,7 @@ namespace ICSharpCode.Reporting.Items
/// <summary>
/// Description of ReportContainer.
/// </summary>
public class ReportContainer:ReportItem,IReportContainer
public class ReportContainer:PrintableItem,IReportContainer
{
public ReportContainer()
{
@ -26,9 +28,7 @@ namespace ICSharpCode.Reporting.Items @@ -26,9 +28,7 @@ namespace ICSharpCode.Reporting.Items
public List<IPrintableObject> Items {get;set;}
public IExportContainer CreateExportColumn()
public override IExportColumn CreateExportColumn()
{
return new ExportContainer(){
Name = this.Name,
@ -36,5 +36,15 @@ namespace ICSharpCode.Reporting.Items @@ -36,5 +36,15 @@ namespace ICSharpCode.Reporting.Items
Location = this.Location
};
}
IArrangeStrategy arrangeStrategy;
public IArrangeStrategy ArrangeStrategy {
get {if (arrangeStrategy == null) {
arrangeStrategy = new ContainerArrangeStrategy();
}
return arrangeStrategy; }
set { arrangeStrategy = value; }
}
}
}

8
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ReportItem.cs → src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ReportObject.cs

@ -18,10 +18,10 @@ namespace ICSharpCode.Reporting.Items @@ -18,10 +18,10 @@ namespace ICSharpCode.Reporting.Items
/// </summary>
public class ReportItem : IReportObject
/*
public class ReportObject : IReportObject
{
public ReportItem()
public ReportObject()
{
}
@ -34,7 +34,7 @@ namespace ICSharpCode.Reporting.Items @@ -34,7 +34,7 @@ namespace ICSharpCode.Reporting.Items
}
*/
}

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

@ -8,6 +8,7 @@ @@ -8,6 +8,7 @@
*/
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Drawing;
using ICSharpCode.Reporting.BaseClasses;
@ -21,7 +22,7 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -21,7 +22,7 @@ namespace ICSharpCode.Reporting.PageBuilder
/// </summary>
public class BasePageBuilder:IReportCreator
{
private readonly object addLock = new object();
// private readonly object addLock = new object();
public BasePageBuilder(IReportModel reportModel)
{
@ -29,7 +30,7 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -29,7 +30,7 @@ namespace ICSharpCode.Reporting.PageBuilder
throw new ArgumentNullException("reportModel");
}
ReportModel = reportModel;
Pages = new List<IPage>();
Pages = new Collection<IPage>();
}
@ -67,7 +68,7 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -67,7 +68,7 @@ namespace ICSharpCode.Reporting.PageBuilder
public IPage CurrentPage {get; protected set;}
public List<IPage> Pages {get; private set;}
public Collection<IPage> Pages {get; private set;}
}
}

13
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/ContainerConverter.cs

@ -23,23 +23,26 @@ namespace ICSharpCode.Reporting.PageBuilder.Converter @@ -23,23 +23,26 @@ namespace ICSharpCode.Reporting.PageBuilder.Converter
/// </summary>
internal class ContainerConverter
{
private ExportColumnFactory factory;
// private ExportColumnFactory factory;
public ContainerConverter(IReportContainer container,Point currentLocation )
public ContainerConverter(IReportContainer reportContainer,Point currentLocation )
{
Container = container;
Container = reportContainer;
CurrentLocation = currentLocation;
factory = new ExportColumnFactory();
// factory = new ExportColumnFactory();
}
public IExportContainer Convert() {
Console.WriteLine("Convert section for location {0}",CurrentLocation);
var strat = ((ReportContainer)Container).ArrangeStrategy;
strat.Arrange(Container);
var exportContainer = (ExportContainer)Container.CreateExportColumn();
exportContainer.Location = CurrentLocation;
var itemsList = new List<IExportColumn>();
foreach (var element in Container.Items) {
var item = factory.CreateItem(element);
var item = ExportColumnFactory.CreateItem(element);
itemsList.Add(item);
}
exportContainer.ExportedItems.AddRange(itemsList);

2
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportColumn.cs

@ -9,6 +9,7 @@ @@ -9,6 +9,7 @@
using System;
using System.Drawing;
using ICSharpCode.Reporting.BaseClasses;
using ICSharpCode.Reporting.Exporter;
using ICSharpCode.Reporting.Interfaces;
using ICSharpCode.Reporting.Interfaces.Export;
@ -25,6 +26,5 @@ namespace ICSharpCode.Reporting.PageBuilder.ExportColumns @@ -25,6 +26,5 @@ namespace ICSharpCode.Reporting.PageBuilder.ExportColumns
public Size Size {get;set;}
public Point Location {get;set;}
}
}

9
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportContainer.cs

@ -8,6 +8,7 @@ @@ -8,6 +8,7 @@
*/
using System;
using System.Collections.Generic;
using ICSharpCode.Reporting.Exporter;
using ICSharpCode.Reporting.Interfaces.Export;
namespace ICSharpCode.Reporting.PageBuilder.ExportColumns
@ -15,7 +16,7 @@ namespace ICSharpCode.Reporting.PageBuilder.ExportColumns @@ -15,7 +16,7 @@ namespace ICSharpCode.Reporting.PageBuilder.ExportColumns
/// <summary>
/// Description of BaseExportContainer.
/// </summary>
public class ExportContainer:ExportColumn,IExportContainer
public class ExportContainer:ExportColumn,IExportContainer,IAcceptor
{
public ExportContainer()
{
@ -24,5 +25,11 @@ namespace ICSharpCode.Reporting.PageBuilder.ExportColumns @@ -24,5 +25,11 @@ namespace ICSharpCode.Reporting.PageBuilder.ExportColumns
public List<IExportColumn> ExportedItems {get;set;}
public void Accept(IVisitor visitor)
{
visitor.Visit(this);
}
}
}

7
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportText.cs

@ -7,17 +7,22 @@ @@ -7,17 +7,22 @@
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using ICSharpCode.Reporting.Exporter;
namespace ICSharpCode.Reporting.PageBuilder.ExportColumns
{
/// <summary>
/// Description of ExportText.
/// </summary>
public class ExportText:ExportColumn
public class ExportText:ExportColumn,IAcceptor
{
public ExportText()
{
}
public void Accept(IVisitor visitor)
{
visitor.Visit(this);
}
}
}

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

@ -9,6 +9,7 @@ @@ -9,6 +9,7 @@
using System;
using System.Drawing;
using ICSharpCode.Reporting.BaseClasses;
using ICSharpCode.Reporting.Exporter;
using ICSharpCode.Reporting.Interfaces;
using ICSharpCode.Reporting.Interfaces.Export;
using ICSharpCode.Reporting.PageBuilder.Converter;
@ -22,7 +23,7 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -22,7 +23,7 @@ namespace ICSharpCode.Reporting.PageBuilder
public class FormPageBuilder:BasePageBuilder
{
private readonly object addLock = new object();
// private readonly object addLock = new object();
public FormPageBuilder(IReportModel reportModel):base(reportModel)
{
@ -44,7 +45,7 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -44,7 +45,7 @@ namespace ICSharpCode.Reporting.PageBuilder
var header =sc.Convert();
CurrentPage.ExportedItems.Add(header);
var r = new Rectangle(header.Location.X,header.Location.Y,header.Size.Width,header.Size.Height);
CurrentLocation = new Point (ReportModel.ReportSettings.LeftMargin,r.Bottom + 10);
CurrentLocation = new Point (ReportModel.ReportSettings.LeftMargin,r.Bottom + 5);
}
}
@ -57,13 +58,13 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -57,13 +58,13 @@ namespace ICSharpCode.Reporting.PageBuilder
void BuilDetail()
{
Console.WriteLine("Build DetailSection {0} - {1} - {2}",ReportModel.ReportSettings.PageSize.Width,ReportModel.ReportSettings.LeftMargin,ReportModel.ReportSettings.RightMargin);
Console.WriteLine("FormPageBuilder - Build DetailSection {0} - {1} - {2}",ReportModel.ReportSettings.PageSize.Width,ReportModel.ReportSettings.LeftMargin,ReportModel.ReportSettings.RightMargin);
}
void BuildPageFooter()
{
Console.WriteLine("Build PageFooter {0} - {1}",ReportModel.ReportSettings.PageSize.Height,ReportModel.ReportSettings.BottomMargin);
Console.WriteLine("FormPageBuilder - Build PageFooter {0} - {1}",ReportModel.ReportSettings.PageSize.Height,ReportModel.ReportSettings.BottomMargin);
CurrentLocation = new Point(ReportModel.ReportSettings.LeftMargin,
ReportModel.ReportSettings.PageSize.Height - ReportModel.ReportSettings.BottomMargin - ReportModel.PageFooter.Size.Height);
@ -72,6 +73,19 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -72,6 +73,19 @@ namespace ICSharpCode.Reporting.PageBuilder
CurrentPage.ExportedItems.Add(header);
}
void BuildReportFooter()
{
Console.WriteLine("FormPageBuilder - Build ReportFooter {0} - {1}",ReportModel.ReportSettings.PageSize.Height,ReportModel.ReportSettings.BottomMargin);
CurrentLocation = new Point(ReportModel.ReportSettings.LeftMargin,
ReportModel.ReportSettings.PageSize.Height - ReportModel.ReportSettings.BottomMargin - ReportModel.PageFooter.Size.Height);
var sc = new ContainerConverter(ReportModel.ReportFooter,CurrentLocation);
var header =sc.Convert();
CurrentPage.ExportedItems.Add(header);
}
void WritePages()
{
CurrentPage = base.InitNewPage();
@ -80,31 +94,10 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -80,31 +94,10 @@ namespace ICSharpCode.Reporting.PageBuilder
BuildPageHeader();
BuilDetail();
BuildPageFooter();
// BuildReportFooter();
base.AddPage(CurrentPage);
Console.WriteLine("<{0}> Pages created",Pages.Count);
foreach (var page in Pages) {
ShowPage(page);
}
}
void ShowPage( IExportContainer container)
{
foreach (var item in container.ExportedItems) {
if (item is IExportContainer) {
Console.WriteLine("Container: {0}- {1} - {2}",item.Name,item.Location,item.Size);
ShowPage(item as IExportContainer);
} else {
Console.WriteLine("\tItem {0} -relativ location <{1}> - {2}",item.Name,item.Location,item.Size);
}
}
}
}
}

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

@ -65,6 +65,7 @@ @@ -65,6 +65,7 @@
<Compile Include="src\PageBuilder\BaseConvertFixture.cs" />
<Compile Include="src\PageBuilder\ContainerConverterFixture.cs" />
<Compile Include="src\PageBuilder\PageBuilderFixture.cs" />
<Compile Include="src\PageBuilder\PageLayoutFixture.cs" />
<Compile Include="src\Properties\AssemblyInfo.cs" />
<Compile Include="src\TestHelper.cs" />
</ItemGroup>

2
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Model/Report_TwoItemsFixture.cs

@ -17,7 +17,7 @@ using NUnit.Framework; @@ -17,7 +17,7 @@ using NUnit.Framework;
namespace ICSharpCode.Reporting.Test.Model
{
[TestFixture]
public class Report_TwoItemsFixture
public class ReportTwoItemsFixture
{
Stream stream;

2
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/BaseConvertFixture.cs

@ -22,7 +22,7 @@ namespace ICSharpCode.Reporting.Test.PageBuilder @@ -22,7 +22,7 @@ namespace ICSharpCode.Reporting.Test.PageBuilder
[Test]
public void CurrentPageContainOneItem() {
public void CurrentPageContainFiveItems() {
reportCreator.BuildExportList();
var page = reportCreator.Pages[0];
Assert.That(page.ExportedItems.Count, Is.EqualTo(3));

8
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/ContainerConverterFixture.cs

@ -42,11 +42,13 @@ namespace ICSharpCode.Reporting.Test.PageBuilder @@ -42,11 +42,13 @@ namespace ICSharpCode.Reporting.Test.PageBuilder
[Test]
public void LocationIsAdjusted() {
var pp = new Point(30,30);
var converter = new ContainerConverter(container,pp);
var location = new Point(30,30);
var converter = new ContainerConverter(container,location);
var result = converter.Convert();
Assert.That(result.Location,Is.EqualTo(pp));
Assert.That(result.Location,Is.EqualTo(location));
}
[TestFixtureSetUp]
public void Init()
{

33
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/PageBuilderFixture.cs

@ -10,6 +10,7 @@ using System; @@ -10,6 +10,7 @@ using System;
using System.IO;
using System.Reflection;
using ICSharpCode.Reporting.Exporter;
using ICSharpCode.Reporting.Interfaces;
using ICSharpCode.Reporting.Interfaces.Export;
using ICSharpCode.Reporting.PageBuilder;
@ -23,7 +24,6 @@ namespace ICSharpCode.Reporting.Test.PageBuilder @@ -23,7 +24,6 @@ namespace ICSharpCode.Reporting.Test.PageBuilder
private IReportCreator reportCreator;
[Test]
public void CanCreateFormsPageBuilder()
{
@ -77,27 +77,34 @@ namespace ICSharpCode.Reporting.Test.PageBuilder @@ -77,27 +77,34 @@ namespace ICSharpCode.Reporting.Test.PageBuilder
reportCreator.BuildExportList();
var pi = reportCreator.Pages[0].PageInfo;
Assert.That(pi.ReportName,Is.EqualTo("Report1"));
Console.WriteLine("----------------");
foreach (var page in reportCreator.Pages) {
ShowPage(page);
}
// Console.WriteLine("----------------");
// foreach (var page in reportCreator.Pages) {
// TestHelper.ShowDebug(page);
// }
}
void ShowPage( IExportContainer container)
/*
void ShowDebug(IExportContainer container)
{
var visitor = new DebugVisitor();
foreach (var item in container.ExportedItems) {
if (item is IExportContainer) {
Console.WriteLine("DoContainer {0} - {1} - {2}",item.Name,item.Location,item.Size);
ShowPage(item as IExportContainer);
var a = item as IAcceptor;
if (a != null) {
Console.WriteLine("----");
a.Accept(visitor);
}
ShowDebug(item as IExportContainer);
} else {
Console.WriteLine("\tItem {0} - {1} - {2}",item.Name,item.Location,item.Size);
var b = item as IAcceptor;
if (b != null) {
b.Accept(visitor);
}
}
}
}
*/
#endregion

70
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/PageLayoutFixture.cs

@ -0,0 +1,70 @@ @@ -0,0 +1,70 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 21.04.2013
* Time: 18:18
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Drawing;
using System.Linq;
using System.Reflection;
using ICSharpCode.Reporting.Exporter;
using ICSharpCode.Reporting.Interfaces;
using ICSharpCode.Reporting.Interfaces.Export;
using ICSharpCode.Reporting.PageBuilder.ExportColumns;
using NUnit.Framework;
namespace ICSharpCode.Reporting.Test.PageBuilder
{
[TestFixture]
public class PageLayoutFixture
{
private IReportCreator reportCreator;
[Test]
public void PageContainsFourExportContainer()
{
reportCreator.BuildExportList();
var x = reportCreator.Pages[0].ExportedItems;
var y = from s in x
where s.GetType() == typeof(ExportContainer)
select s;
Assert.That(y.ToList().Count,Is.EqualTo(3));
Console.WriteLine("-------ShowDebug---------");
var ex = new DebugExporter(reportCreator.Pages);
ex.Run();
}
[Test]
public void SectionsInpageDoNotOverlap()
{
Point p = Point.Empty;
reportCreator.BuildExportList();
foreach (IPage element in reportCreator.Pages) {
var first = true;
foreach (var item in element.ExportedItems) {
if (! first) {
var p2 = new Point(item.Location.X,item.Location.Y);
Assert.That(p2.Y,Is.GreaterThan(p.Y));
} else {
first = false;
}
p = new Point(item.Location.X,item.Location.Y + item.Size.Height);
}
}
}
[SetUp]
public void LoadFromStream()
{
System.Reflection.Assembly asm = Assembly.GetExecutingAssembly();
var stream = asm.GetManifestResourceStream(TestHelper.RepWithTwoItems);
var reportingFactory = new ReportingFactory();
reportCreator = reportingFactory.ReportCreator(stream);
}
}
}

52
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/TestHelper.cs

@ -7,21 +7,20 @@ @@ -7,21 +7,20 @@
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using ICSharpCode.Reporting.Exporter;
using ICSharpCode.Reporting.Interfaces.Export;
namespace ICSharpCode.Reporting.Test
{
/// <summary>
/// Description of TestHelper.
/// </summary>
public class TestHelper
public static class TestHelper
{
private const string nameSpace = "ICSharpCode.Reporting.Test.src.TestReports.";
private const string plainReportName = "PlainModel.srd";
private const string rr = "ReportWithTwoItems.srd";
public TestHelper()
{
}
public static string PlainReportFileName{
get{return nameSpace + plainReportName;}
@ -30,5 +29,50 @@ namespace ICSharpCode.Reporting.Test @@ -30,5 +29,50 @@ namespace ICSharpCode.Reporting.Test
public static string RepWithTwoItems {
get {return nameSpace + rr;}
}
public static void ShowDebug(IExportContainer exportContainer)
{
var visitor = new DebugVisitor();
foreach (var item in exportContainer.ExportedItems) {
var container = item as IExportContainer;
var acceptor = item as IAcceptor;
if (container != null) {
if (acceptor != null) {
Console.WriteLine("----");
acceptor.Accept(visitor);
}
ShowDebug(container);
} else {
// var b = item as IAcceptor;
if (acceptor != null) {
acceptor.Accept(visitor);
}
}
}
}
/*
public static void ShowDebug(IExportContainer container)
{
var visitor = new DebugVisitor();
foreach (var item in container.ExportedItems) {
if (item is IExportContainer) {
var a = item as IAcceptor;
if (a != null) {
Console.WriteLine("----");
a.Accept(visitor);
}
ShowDebug(item as IExportContainer);
} else {
var b = item as IAcceptor;
if (b != null) {
b.Accept(visitor);
}
}
}
}
*/
}
}

Loading…
Cancel
Save