Browse Source

Sections in ReportModel.cs

reports
Peter Forstmeier 13 years ago
parent
commit
4a4ef4bfcb
  1. 5
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/ICSharpCode.Reporting.csproj
  2. 23
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/Page.cs
  3. 59
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/PageInfo.cs
  4. 30
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Factories/SectionFactory.cs
  5. 14
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Globals/GlobalEnums.cs
  6. 6
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Globals/GlobalValues.cs
  7. 1
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IReportCreator.cs
  8. 29
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IReportItem.cs
  9. 6
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IReportModel.cs
  10. 11
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/BaseSection.cs
  11. 27
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ReportItem.cs
  12. 43
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ReportModel.cs
  13. 24
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ReportSettings.cs
  14. 16
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs
  15. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ReportingFactory.cs
  16. 49
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/PageBuilderFixture.cs

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

@ -56,12 +56,16 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="Src\BaseClasses\Page.cs" /> <Compile Include="Src\BaseClasses\Page.cs" />
<Compile Include="Src\BaseClasses\PageInfo.cs" />
<Compile Include="Src\Configuration\AssemblyInfo.cs" /> <Compile Include="Src\Configuration\AssemblyInfo.cs" />
<Compile Include="Src\Factories\SectionFactory.cs" />
<Compile Include="Src\Interfaces\IReportItem.cs" />
<Compile Include="Src\Interfaces\IReportCreator.cs" /> <Compile Include="Src\Interfaces\IReportCreator.cs" />
<Compile Include="Src\Items\BaseSection.cs" /> <Compile Include="Src\Items\BaseSection.cs" />
<Compile Include="Src\Globals\GlobalEnums.cs" /> <Compile Include="Src\Globals\GlobalEnums.cs" />
<Compile Include="Src\Globals\GlobalValues.cs" /> <Compile Include="Src\Globals\GlobalValues.cs" />
<Compile Include="Src\Interfaces\IReportModel.cs" /> <Compile Include="Src\Interfaces\IReportModel.cs" />
<Compile Include="Src\Items\ReportItem.cs" />
<Compile Include="Src\Items\ReportModel.cs" /> <Compile Include="Src\Items\ReportModel.cs" />
<Compile Include="Src\Items\ReportSettings.cs" /> <Compile Include="Src\Items\ReportSettings.cs" />
<Compile Include="Src\PageBuilder\BasePageBuilder.cs" /> <Compile Include="Src\PageBuilder\BasePageBuilder.cs" />
@ -77,6 +81,7 @@
<Folder Include="Src" /> <Folder Include="Src" />
<Folder Include="Src\Items" /> <Folder Include="Src\Items" />
<Folder Include="Src\BaseClasses" /> <Folder Include="Src\BaseClasses" />
<Folder Include="Src\Factories" />
<Folder Include="Src\PageBuilder" /> <Folder Include="Src\PageBuilder" />
<Folder Include="Src\Xml" /> <Folder Include="Src\Xml" />
</ItemGroup> </ItemGroup>

23
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/Page.cs

@ -14,14 +14,33 @@ namespace ICSharpCode.Reporting.BaseClasses
/// Description of Page. /// Description of Page.
/// </summary> /// </summary>
/// ///
public interface IPage{ public interface IPage{
bool IsFirstPage {get;set;}
IPageInfo PageInfo {get;}
} }
public class Page:IPage public class Page:IPage
{ {
public Page() public Page(IPageInfo pageInfo)
{ {
if (pageInfo == null) {
throw new ArgumentNullException("pageInfo");
}
PageInfo = pageInfo;
} }
public bool IsFirstPage {get;set;}
public IPageInfo PageInfo {get;private set;}
} }
} }

59
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/BaseClasses/PageInfo.cs

@ -0,0 +1,59 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 05.04.2013
* Time: 19:50
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
namespace ICSharpCode.Reporting.BaseClasses
{
/// <summary>
/// Description of PageInfo.
/// </summary>
///
public interface IPageInfo
{
int PageNumber {get;set;}
int TotalPages {get;set;}
string ReportName {get;set;}
string ReportFileName {get;set;}
string ReportFolder {get;}
DateTime ExecutionTime {get;set;}
// System.Collections.Hashtable ParameterHash {get;set;}
// IDataNavigator IDataNavigator {get;set;}
}
public class PageInfo:IPageInfo
{
public PageInfo()
{
}
public int PageNumber {get;set;}
public int TotalPages {get;set;}
public string ReportName {get;set;}
public string ReportFileName {get;set;}
public string ReportFolder {
get{
return System.IO.Path.GetDirectoryName(this.ReportFileName);
}
}
public DateTime ExecutionTime {get;set;}
}
}

30
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Factories/SectionFactory.cs

@ -0,0 +1,30 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 06.04.2013
* Time: 20:08
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using ICSharpCode.Reporting.Items;
namespace ICSharpCode.Reporting.Factories
{
/// <summary>
/// Description of SectionFactory.
/// </summary>
internal sealed class SectionFactory
{
private SectionFactory ()
{
}
public static BaseSection Create(string sectionName) {
if (String.IsNullOrEmpty(sectionName)) {
throw new ArgumentException("sectionName");
}
return new BaseSection(sectionName);
}
}
}

14
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Globals/GlobalEnums.cs

@ -15,7 +15,7 @@ namespace ICSharpCode.Reporting.Globals
/// </summary> /// </summary>
public class GlobalEnums public class GlobalEnums
{ {
internal enum ReportSection { public enum ReportSection {
ReportHeader, ReportHeader,
ReportPageHeader, ReportPageHeader,
ReportDetail, ReportDetail,
@ -34,5 +34,17 @@ namespace ICSharpCode.Reporting.Globals
PullData, PullData,
FormSheet FormSheet
} }
/// <summary>
/// FormSheet means a blank form with Labels, Lines and Checkboxes
/// DataReport handles all Reports with Data
/// </summary>
public enum ReportType {
FormSheet,
DataReport,
}
} }
} }

6
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Globals/GlobalValues.cs

@ -21,5 +21,11 @@ namespace ICSharpCode.Reporting.Globals
public static Size DefaultPageSize {get {return new Size(827,1169);}} public static Size DefaultPageSize {get {return new Size(827,1169);}}
public static string PlainFileName
{
get {
return DefaultReportName + ReportExtension;
}
}
} }
} }

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

@ -19,6 +19,7 @@ namespace ICSharpCode.Reporting.Interfaces
{ {
void BuildExportList (); void BuildExportList ();
List<IPage> Pages {get;} List<IPage> Pages {get;}
// PagesCollection Pages{get;} // PagesCollection Pages{get;}
// event EventHandler<PageCreatedEventArgs> PageCreated; // event EventHandler<PageCreatedEventArgs> PageCreated;
// event EventHandler<SectionRenderEventArgs> SectionRendering; // event EventHandler<SectionRenderEventArgs> SectionRendering;

29
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IReportItem.cs

@ -0,0 +1,29 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 06.04.2013
* Time: 19:55
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
namespace ICSharpCode.Reporting.Interfaces
{
/// <summary>
/// Description of IPrintObject.
/// </summary>
public interface IReportItem
{
string Name{get;set;}
// Size Size {get;set;}
// Point Location {get;set;}
// Font Font {get;set;}
//// bool VisibleInReport {get;set;}
// Color BackColor {get;set;}
// Color FrameColor {get;set;}
// int SectionOffset {get;set;}
// bool CanGrow {get;set;}
// bool CanShrink {get;set;}
}
}

6
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IReportModel.cs

@ -7,6 +7,7 @@
* To change this template use Tools | Options | Coding | Edit Standard Headers. * To change this template use Tools | Options | Coding | Edit Standard Headers.
*/ */
using System; using System;
using System.Collections.Generic;
using ICSharpCode.Reporting.Items; using ICSharpCode.Reporting.Items;
namespace ICSharpCode.Reporting.Interfaces namespace ICSharpCode.Reporting.Interfaces
@ -17,15 +18,16 @@ namespace ICSharpCode.Reporting.Interfaces
public interface IReportModel public interface IReportModel
{ {
ReportSettings ReportSettings {get;set;} ReportSettings ReportSettings {get;set;}
List<BaseSection> SectionCollection {get;}
/* /*
BaseSection ReportHeader {get;} BaseSection ReportHeader {get;}
BaseSection PageHeader {get;} BaseSection PageHeader {get;}
BaseSection DetailSection {get;} BasistSection DetailSection {get;}
BaseSection PageFooter {get;} BaseSection PageFooter {get;}
BaseSection ReportFooter {get;} BaseSection ReportFooter {get;}
GlobalEnums.PushPullModel DataModel {get;} GlobalEnums.PushPullModel DataModel {get;}
ReportSectionCollection SectionCollection {get;}
*/ */
} }
} }

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

@ -7,16 +7,25 @@
* To change this template use Tools | Options | Coding | Edit Standard Headers. * To change this template use Tools | Options | Coding | Edit Standard Headers.
*/ */
using System; using System;
using ICSharpCode.Reporting.Interfaces;
namespace ICSharpCode.Reporting.Items namespace ICSharpCode.Reporting.Items
{ {
/// <summary> /// <summary>
/// Description of BaseSection. /// Description of BaseSection.
/// </summary> /// </summary>
public class BaseSection public class BaseSection:ReportItem
{ {
#region Constructors
public BaseSection() public BaseSection()
{}
public BaseSection (string sectionName)
{ {
base.Name = sectionName;
} }
#endregion
} }
} }

27
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ReportItem.cs

@ -0,0 +1,27 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 06.04.2013
* Time: 20:15
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using ICSharpCode.Reporting.Interfaces;
namespace ICSharpCode.Reporting.Items
{
/// <summary>
/// Description of ReportItem.
/// </summary>
public class ReportItem:IReportItem
{
public ReportItem()
{
}
public string Name {get;set;}
}
}

43
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ReportModel.cs

@ -7,6 +7,8 @@
* To change this template use Tools | Options | Coding | Edit Standard Headers. * To change this template use Tools | Options | Coding | Edit Standard Headers.
*/ */
using System; using System;
using System.Collections.Generic;
using ICSharpCode.Reporting.Factories;
using ICSharpCode.Reporting.Globals; using ICSharpCode.Reporting.Globals;
using ICSharpCode.Reporting.Interfaces; using ICSharpCode.Reporting.Interfaces;
@ -18,33 +20,20 @@ namespace ICSharpCode.Reporting.Items
internal class ReportModel :IReportModel internal class ReportModel :IReportModel
{ {
// ReportSectionCollection sectionCollection; public ReportModel() {
SectionCollection = new List<BaseSection>();
foreach (GlobalEnums.ReportSection sec in Enum.GetValues(typeof(GlobalEnums.ReportSection))) {
public static ReportModel Create() SectionCollection.Add (SectionFactory.Create(sec.ToString()));
{ }
var model = new ReportModel();
// foreach (GlobalEnums.ReportSection sec in Enum.GetValues(typeof(GlobalEnums.ReportSection))) {
// m.SectionCollection.Add (SectionFactory.Create(sec.ToString()));
// }
return model;
}
/*
public static ReportModel Create(GraphicsUnit graphicsUnit)
{
ReportModel m = Create();
m.ReportSettings.GraphicsUnit = graphicsUnit;
return m;
} }
#region Sections #region Sections
public BaseSection ReportHeader public BaseSection ReportHeader
{ {
get { get {
return (BaseSection)sectionCollection[0]; return (BaseSection)SectionCollection[0];
} }
} }
@ -52,7 +41,7 @@ namespace ICSharpCode.Reporting.Items
public BaseSection PageHeader public BaseSection PageHeader
{ {
get { get {
return (BaseSection)sectionCollection[1]; return (BaseSection)SectionCollection[1];
} }
} }
@ -60,7 +49,7 @@ namespace ICSharpCode.Reporting.Items
public BaseSection DetailSection public BaseSection DetailSection
{ {
get { get {
return (BaseSection)sectionCollection[2]; return (BaseSection)SectionCollection[2];
} }
} }
@ -68,19 +57,19 @@ namespace ICSharpCode.Reporting.Items
public BaseSection PageFooter public BaseSection PageFooter
{ {
get { get {
return (BaseSection)sectionCollection[3]; return (BaseSection)SectionCollection[3];
} }
} }
public BaseSection ReportFooter public BaseSection ReportFooter
{ {
get { get {
return (BaseSection)sectionCollection[4]; return (BaseSection)SectionCollection[4];
} }
} }
#endregion #endregion
*/
ReportSettings reportSettings ; ReportSettings reportSettings ;
@ -96,5 +85,7 @@ namespace ICSharpCode.Reporting.Items
reportSettings = value; reportSettings = value;
} }
} }
public List<BaseSection> SectionCollection {get; private set;}
} }
} }

24
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ReportSettings.cs

@ -8,6 +8,8 @@
*/ */
using System; using System;
using System.Drawing; using System.Drawing;
using System.IO;
using ICSharpCode.Reporting.Globals; using ICSharpCode.Reporting.Globals;
namespace ICSharpCode.Reporting.Items namespace ICSharpCode.Reporting.Items
@ -33,7 +35,7 @@ namespace ICSharpCode.Reporting.Items
// this.GraphicsUnit = GraphicsUnit.Pixel; // this.GraphicsUnit = GraphicsUnit.Pixel;
// this.Padding = new Padding(5); // this.Padding = new Padding(5);
// this.DefaultFont = GlobalValues.DefaultFont; // this.DefaultFont = GlobalValues.DefaultFont;
// this.ReportType = GlobalEnums.ReportType.FormSheet; this.ReportType = GlobalEnums.ReportType.FormSheet;
// //
this.DataModel = GlobalEnums.PushPullModel.FormSheet; this.DataModel = GlobalEnums.PushPullModel.FormSheet;
// //
@ -74,6 +76,22 @@ namespace ICSharpCode.Reporting.Items
} }
} }
private string fileName;
// [Category("Base Settings")]
// [XmlIgnoreAttribute]
public string FileName
{
get {
if (String.IsNullOrEmpty(fileName)) {
fileName = GlobalValues.PlainFileName;
}
return Path.GetFullPath(fileName);
}
set {
fileName = value;
}
}
private Size pageSize; private Size pageSize;
public Size PageSize { public Size PageSize {
@ -95,5 +113,9 @@ namespace ICSharpCode.Reporting.Items
// [Category("Data")] // [Category("Data")]
public GlobalEnums.PushPullModel DataModel {get;set;} public GlobalEnums.PushPullModel DataModel {get;set;}
// [Browsable(true), Category("Base Settings")]
public GlobalEnums.ReportType ReportType {get;set;}
} }
} }

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

@ -31,11 +31,25 @@ namespace ICSharpCode.Reporting.PageBuilder
protected IPage InitNewPage(){ protected IPage InitNewPage(){
return new Page(); var pi = CreatePageInfo();
return new Page(pi);
}
IPageInfo CreatePageInfo()
{
var pi = new PageInfo();
pi.PageNumber = Pages.Count +1;
pi.ReportName = ReportModel.ReportSettings.ReportName;
pi.ReportFileName = ReportModel.ReportSettings.FileName;
// pi.ReportName = ReportModel.ReportSettings.ReportName;
return pi;
} }
protected virtual void AddPage(IPage page) { protected virtual void AddPage(IPage page) {
if (Pages.Count == 0) {
page.IsFirstPage = true;
}
Pages.Add(page); Pages.Add(page);
} }

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

@ -35,9 +35,7 @@ namespace ICSharpCode.Reporting
IReportModel reportModel = LoadReportModel (stream); IReportModel reportModel = LoadReportModel (stream);
IReportCreator builder = null; IReportCreator builder = null;
if (reportModel.ReportSettings.DataModel == GlobalEnums.PushPullModel.FormSheet) { if (reportModel.ReportSettings.DataModel == GlobalEnums.PushPullModel.FormSheet) {
// builder = FormPageBuilder.CreateInstance(reportModel);
builder = new FormPageBuilder(reportModel); builder = new FormPageBuilder(reportModel);
Console.WriteLine("aaaaaaaaaaaaaaaaa");
} }
// else { // else {
// CheckForParameters(reportModel,reportParameters); // CheckForParameters(reportModel,reportParameters);

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

@ -10,7 +10,7 @@ using System;
using System.IO; using System.IO;
using System.Reflection; using System.Reflection;
using ICSharpCode.Reporting.BaseClasses; using ICSharpCode.Reporting.Interfaces;
using ICSharpCode.Reporting.PageBuilder; using ICSharpCode.Reporting.PageBuilder;
using NUnit.Framework; using NUnit.Framework;
@ -19,47 +19,76 @@ namespace ICSharpCode.Reporting.Test.PageBuilder
[TestFixture] [TestFixture]
public class PageBuilderFixture public class PageBuilderFixture
{ {
private Stream stream;
private IReportCreator reportCreator;
[Test] [Test]
public void CanCreateFormsPageBuilder() public void CanCreateFormsPageBuilder()
{ {
var reportingFactory = new ReportingFactory();
var reportCreator = reportingFactory.ReportCreator(stream);
Assert.IsNotNull(reportCreator); Assert.IsNotNull(reportCreator);
} }
[Test] [Test]
public void PagesCountIsZero () { public void PagesCountIsZero () {
var reportingFactory = new ReportingFactory();
var reportCreator = reportingFactory.ReportCreator(stream);
Assert.That(reportCreator.Pages.Count,Is.EqualTo(0)); Assert.That(reportCreator.Pages.Count,Is.EqualTo(0));
} }
[Test] [Test]
public void BuildExportPagesCountIsOne() { public void BuildExportPagesCountIsOne() {
var reportingFactory = new ReportingFactory();
var reportCreator = reportingFactory.ReportCreator(stream);
reportCreator.BuildExportList(); reportCreator.BuildExportList();
Assert.That(reportCreator.Pages.Count,Is.EqualTo(1)); Assert.That(reportCreator.Pages.Count,Is.EqualTo(1));
} }
[Test] [Test]
public void CurrentPageIsSet() { public void CurrentPageIsSet() {
System.Reflection.Assembly asm = Assembly.GetExecutingAssembly();
var stream = asm.GetManifestResourceStream(TestHelper.PlainReportFileName);
var reportingFactory = new ReportingFactory(); var reportingFactory = new ReportingFactory();
var reportCreator = (FormPageBuilder)reportingFactory.ReportCreator(stream); var reportCreator = (FormPageBuilder)reportingFactory.ReportCreator(stream);
reportCreator.BuildExportList(); reportCreator.BuildExportList();
Assert.That(reportCreator.CurrentPage,Is.Not.Null); Assert.That(reportCreator.CurrentPage,Is.Not.Null);
} }
[Test]
public void CurrentPageIsFirstPage() {
System.Reflection.Assembly asm = Assembly.GetExecutingAssembly();
var stream = asm.GetManifestResourceStream(TestHelper.PlainReportFileName);
var reportingFactory = new ReportingFactory();
var reportCreator = (FormPageBuilder)reportingFactory.ReportCreator(stream);
reportCreator.BuildExportList();
Assert.That(reportCreator.CurrentPage.IsFirstPage,Is.True);
Assert.That(reportCreator.Pages[0].IsFirstPage,Is.True);
}
[Test]
public void PageInfoPageNumberIsOne() {
reportCreator.BuildExportList();
var pi = reportCreator.Pages[0].PageInfo;
Assert.That(pi.PageNumber,Is.EqualTo(1));
}
[Test]
public void PageInfoReportName() {
reportCreator.BuildExportList();
var pi = reportCreator.Pages[0].PageInfo;
Assert.That(pi.ReportName,Is.EqualTo("Report1"));
}
[SetUp] [SetUp]
public void LoadFromStream() public void LoadFromStream()
{ {
System.Reflection.Assembly asm = Assembly.GetExecutingAssembly(); System.Reflection.Assembly asm = Assembly.GetExecutingAssembly();
stream = asm.GetManifestResourceStream(TestHelper.PlainReportFileName); var stream = asm.GetManifestResourceStream(TestHelper.PlainReportFileName);
var reportingFactory = new ReportingFactory();
reportCreator = reportingFactory.ReportCreator(stream);
} }
} }
} }

Loading…
Cancel
Save