Browse Source

Change GroupedRowConverter.cs from DataNavigator.SwitchGroup to base.DataNavigator.GetChildNavigator()

some small cleanup
pull/1/head
peterforstmeier 15 years ago
parent
commit
979315eb2a
  1. 22
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/PrintHelper.cs
  2. 27
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/StandardPrinter.cs
  3. 24
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ChildNavigator.cs
  4. 9
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/DataNavigator.cs
  5. 2
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/BaseConverter.cs
  6. 75
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs
  7. 12
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Printing/AbstractRenderer.cs
  8. 34
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/DataManager/GroupTableFixture.cs

22
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/PrintHelper.cs

@ -168,28 +168,6 @@ namespace ICSharpCode.Reports.Core.BaseClasses.Printing @@ -168,28 +168,6 @@ namespace ICSharpCode.Reports.Core.BaseClasses.Printing
#endregion
public static IExpressionEvaluatorFacade CreateEvaluator (ISinglePage singlePage,IDataNavigator dataNavigator)
{
if (singlePage == null) {
throw new ArgumentNullException("singlePage");
}
if (dataNavigator == null) {
throw new ArgumentNullException("dataNavigator");
}
IExpressionEvaluatorFacade evaluatorFacade = new ExpressionEvaluatorFacade();
evaluatorFacade.SinglePage = singlePage;
evaluatorFacade.SinglePage.IDataNavigator = dataNavigator;
return evaluatorFacade;
}
public static IExpressionEvaluatorFacade SetupEvaluator ()
{
return new ExpressionEvaluatorFacade();
}
public static Point ConvertRectangleToCurentPosition (Rectangle r)
{
return new Point(r.Left,r.Bottom);

27
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/StandardPrinter.cs

@ -232,16 +232,39 @@ namespace ICSharpCode.Reports.Core.BaseClasses.Printing @@ -232,16 +232,39 @@ namespace ICSharpCode.Reports.Core.BaseClasses.Printing
#region Evaluate
public static IExpressionEvaluatorFacade SetupEvaluator ()
{
return new ExpressionEvaluatorFacade();
}
public static IExpressionEvaluatorFacade CreateEvaluator (ISinglePage singlePage,IDataNavigator dataNavigator)
{
if (singlePage == null) {
throw new ArgumentNullException("singlePage");
}
if (dataNavigator == null) {
throw new ArgumentNullException("dataNavigator");
}
IExpressionEvaluatorFacade evaluatorFacade = new ExpressionEvaluatorFacade();
evaluatorFacade.SinglePage = singlePage;
evaluatorFacade.SinglePage.IDataNavigator = dataNavigator;
return evaluatorFacade;
}
public static void EvaluateRow(IExpressionEvaluatorFacade evaluator,ExporterCollection row)
{
Console.WriteLine("evaluate row with row:{0} ",evaluator.SinglePage.IDataNavigator.CurrentRow);
// Console.WriteLine("evaluate row with row:{0} ",evaluator.SinglePage.IDataNavigator.CurrentRow);
foreach (BaseExportColumn element in row) {
ExportText textItem = element as ExportText;
if (textItem != null) {
string s = evaluator.Evaluate(textItem.Text);
Console.WriteLine("\teval {0} - {1} ",textItem.Text,s);
// Console.WriteLine("\teval {0} - {1} ",textItem.Text,s);
// textItem.Text = evaluator.Evaluate(textItem.Text);
textItem.Text = s;
}

24
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ChildNavigator.cs

@ -7,6 +7,7 @@ @@ -7,6 +7,7 @@
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Linq;
namespace ICSharpCode.Reports.Core
{
@ -15,22 +16,22 @@ namespace ICSharpCode.Reports.Core @@ -15,22 +16,22 @@ namespace ICSharpCode.Reports.Core
/// </summary>
public class ChildNavigator:IDataNavigator
{
IndexList indexList;
IDataViewStrategy dataStore;
private System.Collections.Generic.List<BaseComparer>.Enumerator ce;
private IndexList indexList;
private IDataViewStrategy dataStore;
private System.Collections.Generic.List<BaseComparer>.Enumerator ce;
public ChildNavigator(IDataViewStrategy dataStore,IndexList indexList)
{
if (dataStore == null) {
if (dataStore == null) {
throw new ArgumentNullException("dataStore");
}
}
this.dataStore = dataStore;
this.indexList = indexList;
ce = this.indexList.GetEnumerator();
ce.MoveNext();
}
public bool HasMoreData {
get {
throw new NotImplementedException();
@ -91,7 +92,16 @@ namespace ICSharpCode.Reports.Core @@ -91,7 +92,16 @@ namespace ICSharpCode.Reports.Core
public void Fill(ReportItemCollection collection)
{
throw new NotImplementedException();
TableStrategy tableStrategy = dataStore as TableStrategy;
foreach (var item in collection) {
IDataItem dataItem = item as IDataItem;
if (dataItem != null) {
CurrentItemsCollection currentItemsCollection = tableStrategy.FillDataRow(ce.Current.ListIndex);
CurrentItem s = currentItemsCollection.FirstOrDefault(x => x.ColumnName == dataItem.ColumnName);
dataItem.DBValue = s.Value.ToString();
}
}
}
public bool MoveNext()

9
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/DataNavigator.cs

@ -17,7 +17,11 @@ namespace ICSharpCode.Reports.Core @@ -17,7 +17,11 @@ namespace ICSharpCode.Reports.Core
/// </summary>
public class DataNavigator :IDataNavigator
{
private IDataViewStrategy store;
private IndexList childList;
private System.Collections.Generic.List<BaseComparer>.Enumerator ce;
public DataNavigator(IDataViewStrategy store){
this.store = store;
@ -41,6 +45,8 @@ namespace ICSharpCode.Reports.Core @@ -41,6 +45,8 @@ namespace ICSharpCode.Reports.Core
}
*/
#region IDataNavigator implementation
public void Fill (ReportItemCollection collection) {
@ -117,9 +123,6 @@ namespace ICSharpCode.Reports.Core @@ -117,9 +123,6 @@ namespace ICSharpCode.Reports.Core
}
IndexList childList;
private System.Collections.Generic.List<BaseComparer>.Enumerator ce;
public void SwitchGroup()
{
this.childList = BuildChildList();

2
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/BaseConverter.cs

@ -53,7 +53,7 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -53,7 +53,7 @@ namespace ICSharpCode.Reports.Core.Exporter
this.dataNavigator = dataNavigator;
this.sectionBounds = this.singlePage.SectionBounds;
this.layouter = layouter;
this.evaluator = PrintHelper.CreateEvaluator(this.singlePage,this.dataNavigator);
this.evaluator = StandardPrinter.CreateEvaluator(this.singlePage,this.dataNavigator);
}

75
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Converters/GroupedRowConverter.cs

@ -70,6 +70,73 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -70,6 +70,73 @@ namespace ICSharpCode.Reports.Core.Exporter
Rectangle pageBreakRect = Rectangle.Empty;
do {
PrintHelper.AdjustSectionLocation (section);
section.Size = this.SectionBounds.DetailSectionRectangle.Size;
base.SaveSize(section.Items[0].Size);
// did we have GroupedItems at all
if (section.Items.IsGrouped) {
// Convert Grouping Header
currentPosition = ConvertGroupHeader(exporterCollection,section,simpleContainer,defaultLeftPos,currentPosition);
// GetType child navigator
IDataNavigator childNavigator = base.DataNavigator.GetChildNavigator();
Console.WriteLine("child has {0} items",childNavigator.Count);
//Convert children
if (childNavigator != null) {
StandardPrinter.AdjustBackColor(simpleContainer,GlobalValues.DefaultBackColor);
//base.DataNavigator.SwitchGroup();
do {
childNavigator.Fill(simpleContainer.Items);
currentPosition = ConvertGroupChilds (exporterCollection,section,simpleContainer,defaultLeftPos,currentPosition);
pageBreakRect = PrintHelper.CalculatePageBreakRectangle((BaseReportItem)section.Items[1],currentPosition);
if (PrintHelper.IsPageFull(pageBreakRect,base.SectionBounds )) {
base.BuildNewPage(exporterCollection,section);
currentPosition = CalculateStartPosition ();
}
}
while ( childNavigator.MoveNext());
}
}
else
{
// No Grouping at all
currentPosition = ConvertStandardRow (exporterCollection,section,simpleContainer,defaultLeftPos,currentPosition);
}
pageBreakRect = PrintHelper.CalculatePageBreakRectangle((BaseReportItem)section.Items[0],currentPosition);
if (PrintHelper.IsPageFull(pageBreakRect,base.SectionBounds)) {
base.BuildNewPage(exporterCollection,section);
currentPosition = CalculateStartPosition();
}
ShouldDrawBorder (section,exporterCollection);
}
while (base.DataNavigator.MoveNext());
SectionBounds.ReportFooterRectangle = new Rectangle(SectionBounds.ReportFooterRectangle.Left,
section.Location.Y + section.Size.Height,
SectionBounds.ReportFooterRectangle.Width,
SectionBounds.ReportFooterRectangle.Height);
return exporterCollection;
}
private ExporterCollection old_ConvertDataRow (ISimpleContainer simpleContainer)
{
ExporterCollection exporterCollection = new ExporterCollection();
Point currentPosition = new Point(base.SectionBounds.DetailStart.X,base.SectionBounds.DetailStart.Y);
BaseSection section = parent as BaseSection;
int defaultLeftPos = parent.Location.X;
Rectangle pageBreakRect = Rectangle.Empty;
do {
PrintHelper.AdjustSectionLocation (section);
@ -126,12 +193,6 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -126,12 +193,6 @@ namespace ICSharpCode.Reports.Core.Exporter
}
// private Point PerformPageBreak (ExporterCollection exporterCollection,BaseSection section)
// {
// BuildNewPage(exporterCollection,section);
// return CalculateStartPosition();
// }
//
private Point CalculateStartPosition()
{
return new Point(base.SectionBounds.PageHeaderRectangle.X,base.SectionBounds.PageHeaderRectangle.Y);
@ -176,7 +237,7 @@ namespace ICSharpCode.Reports.Core.Exporter @@ -176,7 +237,7 @@ namespace ICSharpCode.Reports.Core.Exporter
private Point ConvertGroupChilds(ExporterCollection mylist, BaseSection section, ISimpleContainer simpleContainer, int defaultLeftPos, Point currentPosition)
{
base.DataNavigator.FillChild(simpleContainer.Items);
//base.DataNavigator.FillChild(simpleContainer.Items);
PrepareContainerForConverting(section,simpleContainer);
Point curPos = BaseConverter.BaseConvert(mylist,simpleContainer,defaultLeftPos,currentPosition);
AfterConverting (section,mylist);

12
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Printing/AbstractRenderer.cs

@ -89,7 +89,7 @@ namespace ICSharpCode.Reports.Core @@ -89,7 +89,7 @@ namespace ICSharpCode.Reports.Core
this.reportDocument.RenderPageEnd += new EventHandler<ReportPageEventArgs> (PrintPageFooter);
this.reportDocument.RenderReportEnd += new EventHandler<ReportPageEventArgs> (PrintReportFooter);
this.Evaluator = PrintHelper.SetupEvaluator();
this.Evaluator = StandardPrinter.SetupEvaluator();
}
@ -262,6 +262,7 @@ namespace ICSharpCode.Reports.Core @@ -262,6 +262,7 @@ namespace ICSharpCode.Reports.Core
internal virtual void ReportQueryPage (object sender,QueryPageSettingsEventArgs qpea)
{
qpea.PageSettings.Margins = new Margins(reportSettings.LeftMargin,reportSettings.RightMargin,reportSettings.TopMargin,reportSettings.BottomMargin);
bool firstPage;
if (this.currentPageNumber == 0) {
@ -270,10 +271,11 @@ namespace ICSharpCode.Reports.Core @@ -270,10 +271,11 @@ namespace ICSharpCode.Reports.Core
firstPage = false;
}
this.currentPageNumber ++;
ISinglePage sp = new SinglePage(new SectionBounds (reportSettings,firstPage),0);
PrintHelper.InitPage(sp,this.reportSettings);
sp.PageNumber = this.currentPageNumber;
reportDocument.SinglePage = sp;
ISinglePage singlePage = new SinglePage(new SectionBounds (reportSettings,firstPage),0);
PrintHelper.InitPage(singlePage,this.reportSettings);
singlePage.PageNumber = this.currentPageNumber;
reportDocument.SinglePage = singlePage;
}

34
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/DataManager/GroupTableFixture.cs

@ -170,30 +170,56 @@ namespace ICSharpCode.Reports.Core.Test.DataManager @@ -170,30 +170,56 @@ namespace ICSharpCode.Reports.Core.Test.DataManager
#region Try make recursive with ChildNavigator
/*
public void Can_FillChild()
{
var dataNav = PrepareStringGrouping();
while (dataNav.MoveNext()) {
if (dataNav.HasChildren) {
Assert.That(dataNav.HasChildren,Is.True);
DataRow r = dataNav.Current as DataRow;
string v2 = r["last"].ToString() + " GroupVal :" + r[3].ToString();
Console.WriteLine(v2);
FillChildList(dataNav);
}
}
}
*/
[Test]
public void Can_Get_ChildNavigator ()
{
Console.WriteLine("Start Recusive Version");
var dataNav = PrepareStringGrouping();
while (dataNav.MoveNext()) {
if (dataNav.HasChildren) {
DataRow r = dataNav.Current as DataRow;
IDataNavigator child = dataNav.GetChildNavigator();
string v2 = r["last"].ToString() + " GroupVal :" + r[3].ToString() ;
Console.WriteLine(v2);
Assert.That (child,Is.Not.Null);
reccall(child);
}
}
Console.WriteLine("End Recusive Version");
}
[Test]
public void RecursiveCall_Childs ()
{
var dataNav = PrepareStringGrouping();
dataNav.MoveNext();
Console.WriteLine("--------------start rec ------------");
reccall (dataNav);
var dataNav = PrepareStringGrouping();
dataNav.MoveNext();
Console.WriteLine("--------------start rec ------------");
reccall (dataNav);
Console.WriteLine("--------------end rec ------------");
}
private void reccall (IDataNavigator startNavigator)
{
do

Loading…
Cancel
Save