Browse Source

Simple FieldReference is working

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/reports@5913 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
pull/1/head
Peter Forstmeier 16 years ago
parent
commit
5d2f1e446b
  1. 10
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/SimpleExpressionEvaluator/Compilation/Functions/AggregateFunctions/AggregateFunction.cs
  2. 38
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/SimpleExpressionEvaluator/Compilation/Functions/ReportingService/FieldReference.cs
  3. 2
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/old_Exporter/BasePager.cs
  4. 34
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/old_Exporter/Converters/BaseConverter.cs
  5. 7
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/old_Exporter/Converters/RowConverter.cs
  6. 8
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/old_Exporter/Converters/TableConverter.cs
  7. 43
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/ReportingLanguage/IntegrationTests/ConcatFieldsFixture.cs

10
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/SimpleExpressionEvaluator/Compilation/Functions/AggregateFunctions/AggregateFunction.cs

@ -1,11 +1,13 @@ @@ -1,11 +1,13 @@
using ICSharpCode.Reports.Core;
using System;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using SimpleExpressionEvaluator.Evaluation;
using System.Globalization;
using ICSharpCode.Reports.Core;
using ICSharpCode.Reports.Core.Interfaces;
using SimpleExpressionEvaluator.Evaluation;
namespace SimpleExpressionEvaluator.Compilation.Functions.AggregateFunctions
{
[NodeType(ExpressionNodeType.Function)]
@ -170,7 +172,7 @@ namespace SimpleExpressionEvaluator.Compilation.Functions.AggregateFunctions @@ -170,7 +172,7 @@ namespace SimpleExpressionEvaluator.Compilation.Functions.AggregateFunctions
private IDataNavigator NavigatorFromContext (IExpressionContext context)
{
SinglePage p = context.ContextObject as SinglePage;
ISinglePage p = context.ContextObject as ISinglePage;
if (p != null) {
return p.IDataNavigator;
}

38
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Expressions/SimpleExpressionEvaluator/Compilation/Functions/ReportingService/FieldReference.cs

@ -7,11 +7,15 @@ @@ -7,11 +7,15 @@
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using ICSharpCode.Reports.Core;
using ICSharpCode.Reports.Core.Interfaces;
using SimpleExpressionEvaluator.Compilation.Functions.AggregateFunctions;
using SimpleExpressionEvaluator.Utilities;
namespace SimpleExpressionEvaluator.Compilation.Functions.ReportingService
{
[Tokens("Fields","fields")]
public class FieldReference:Function<string>
public class FieldReference:AggregateFunction<string>
{
public FieldReference ()
{
@ -21,14 +25,36 @@ namespace SimpleExpressionEvaluator.Compilation.Functions.ReportingService @@ -21,14 +25,36 @@ namespace SimpleExpressionEvaluator.Compilation.Functions.ReportingService
get { return 1; }
}
public override Type ReturnType {
get { return base.ReturnType; }
}
protected override string EvaluateFunction(params object[] args)
public override string Evaluate(SimpleExpressionEvaluator.Evaluation.IExpressionContext context)
{
return Environment.UserName;
ISinglePage p = context.ContextObject as SinglePage;
Variable v = Arguments[0] as Variable;
if (p.IDataNavigator.CurrentRow > -1) {
AvailableFieldsCollection avc = p.IDataNavigator.AvailableFields;
AbstractColumn item = avc.Find(v.VariableName.ToString());
CurrentItemsCollection cic = p.IDataNavigator.GetDataRow();
CurrentItem c = cic.Find(v.VariableName);
return c.Value.ToString();
}
return v.VariableName ;
}
protected override void AggregateValue(object value, AggregationState aggregationState, params object[] args)
{
// var sum = aggregationState.GetValue<string>("value");
// var nextVal = TypeNormalizer.EnsureType<string>(value);
//
// aggregationState["value"] = sum + nextVal;
}
protected override string ExtractAggregateValue(AggregationState aggregationState)
{
return aggregationState.GetValue<string>("value");
}
}
}

2
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/old_Exporter/BasePager.cs

@ -221,6 +221,7 @@ namespace ICSharpCode.Reports.Core.old_Exporter @@ -221,6 +221,7 @@ namespace ICSharpCode.Reports.Core.old_Exporter
private void EvaluateRecursive (IExpressionEvaluatorFacade evaluatorFassade,ExporterCollection items)
{
foreach (BaseExportColumn be in items) {
IExportContainer ec = be as IExportContainer;
if (ec != null)
@ -234,6 +235,7 @@ namespace ICSharpCode.Reports.Core.old_Exporter @@ -234,6 +235,7 @@ namespace ICSharpCode.Reports.Core.old_Exporter
et.Text = evaluatorFassade.Evaluate(et.Text);
}
}
}

34
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/old_Exporter/Converters/BaseConverter.cs

@ -10,6 +10,7 @@ using System; @@ -10,6 +10,7 @@ using System;
using System.Drawing;
using ICSharpCode.Reports.Core.Events;
using ICSharpCode.Reports.Core.Interfaces;
using ICSharpCode.Reports.Expressions.ReportingLanguage;
namespace ICSharpCode.Reports.Core.old_Exporter
{
@ -28,6 +29,7 @@ namespace ICSharpCode.Reports.Core.old_Exporter @@ -28,6 +29,7 @@ namespace ICSharpCode.Reports.Core.old_Exporter
private IExportItemsConverter exportItemsConverter;
private ILayouter layouter;
private Size saveSize;
IExpressionEvaluatorFacade evaluator;
public event EventHandler <NewPageEventArgs> PageFull;
public event EventHandler<SectionRenderEventArgs> SectionRendering;
@ -53,9 +55,17 @@ namespace ICSharpCode.Reports.Core.old_Exporter @@ -53,9 +55,17 @@ namespace ICSharpCode.Reports.Core.old_Exporter
this.sectionBounds = this.singlePage.SectionBounds;
this.exportItemsConverter = exportItemsConverter;
this.layouter = layouter;
this.evaluator = SetupEvaluator ();
}
private IExpressionEvaluatorFacade SetupEvaluator ()
{
IExpressionEvaluatorFacade evaluatorFacade = new ExpressionEvaluatorFacade();
evaluatorFacade.SinglePage = this.singlePage;
evaluatorFacade.SinglePage.IDataNavigator = this.dataNavigator;
return evaluatorFacade;
}
protected void FirePageFull (ExporterCollection items)
{
EventHelper.Raise<NewPageEventArgs>(PageFull,this,new NewPageEventArgs(items));
@ -148,13 +158,33 @@ namespace ICSharpCode.Reports.Core.old_Exporter @@ -148,13 +158,33 @@ namespace ICSharpCode.Reports.Core.old_Exporter
}
protected void FillAndLayoutRow (ISimpleContainer row)
protected void FillRow (ISimpleContainer row)
{
DataNavigator.Fill(row.Items);
}
protected void LayoutRow (ISimpleContainer row)
{
PrintHelper.SetLayoutForRow(Graphics,Layouter,row);
}
protected void EvaluateRow(ExporterCollection row)
{
foreach (BaseExportColumn element in row) {
ExportText textItem = element as ExportText;
if (textItem != null) {
Console.WriteLine (textItem.Text);
textItem.Text = evaluator.Evaluate(textItem.Text);
}
}
}
protected Point BaseConvert(ExporterCollection myList,ISimpleContainer container,int leftPos,Point curPos)
{
container.Location = new Point (leftPos,container.Location.Y);

7
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/old_Exporter/Converters/RowConverter.cs

@ -71,10 +71,15 @@ namespace ICSharpCode.Reports.Core.old_Exporter @@ -71,10 +71,15 @@ namespace ICSharpCode.Reports.Core.old_Exporter
section.Size = this.SectionBounds.DetailSectionRectangle.Size;
base.SaveSize(section.Items[0].Size);
base.FillAndLayoutRow(simpleContainer);
base.FillRow(simpleContainer);
base.LayoutRow(simpleContainer);
base.FireSectionRendering(section);
currentPosition = base.BaseConvert(mylist,simpleContainer,defaultLeftPos,currentPosition);
EvaluateRow(mylist);
section.Items[0].Size = base.RestoreSize;
section.SectionOffset += section.Size.Height + 2 * base.SinglePage.SectionBounds.Gap;

8
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/old_Exporter/Converters/TableConverter.cs

@ -76,7 +76,10 @@ namespace ICSharpCode.Reports.Core.old_Exporter @@ -76,7 +76,10 @@ namespace ICSharpCode.Reports.Core.old_Exporter
//
BaseSection section = this.baseTable.Parent as BaseSection;
section.Location = new Point(section.Location.X,section.SectionOffset );
base.FillAndLayoutRow(simpleContainer);
base.FillRow(simpleContainer);
base.LayoutRow(simpleContainer);
if (PrintHelper.IsPageFull(new Rectangle(new Point (simpleContainer.Location.X,currentPosition.Y),simpleContainer.Size),base.SectionBounds)) {
base.FirePageFull(mylist);
@ -88,6 +91,9 @@ namespace ICSharpCode.Reports.Core.old_Exporter @@ -88,6 +91,9 @@ namespace ICSharpCode.Reports.Core.old_Exporter
}
currentPosition = base.BaseConvert(mylist,simpleContainer,defaultLeftPos,currentPosition);
EvaluateRow(mylist);
simpleContainer.Size = base.RestoreSize;
}
while (base.DataNavigator.MoveNext());

43
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/ReportingLanguage/IntegrationTests/ConcatFieldsFixture.cs

@ -32,20 +32,41 @@ namespace ICSharpCode.Reports.Core.Test.ReportingLanguage.IntegrationTests @@ -32,20 +32,41 @@ namespace ICSharpCode.Reports.Core.Test.ReportingLanguage.IntegrationTests
}
[Test]
[IgnoreAttribute]
public void Can_Compile_Simple_FieldReference()
public void Return_FieldName_If_DataNavigator_Invalid()
{
const string expression = "=Fields!Field1";
Assert.That(this.evaluator.Evaluate(expression), Is.EqualTo("Field1"));
const string expression = "=Fields!Name";
this.singlePage.IDataNavigator.Reset();
Assert.That(this.evaluator.Evaluate(expression), Is.EqualTo("Name"));
}
[Test]
[IgnoreAttribute]
public void Can_Compile_Missspelled_Simple_FieldReference()
public void Can_Compile_Misspelled_Simple_FieldReference()
{
const string expression = "=fields!Name";
Assert.That(this.evaluator.Evaluate(expression), Is.EqualTo("Name"));
}
[Test]
public void Evaluate_If_DataNavigator_Is_Invalid()
{
const string expression = "=Fields!Name";
this.singlePage.IDataNavigator.MoveNext();
DataRow row = testTable.Rows[0];
string testVal = row["Name"].ToString();
Assert.That(this.evaluator.Evaluate(expression), Is.EqualTo(testVal));
}
[Test]
[Ignore]
public void Unkown_ColumnName ()
{
const string expression = "=fields!Field1";
Assert.That(this.evaluator.Evaluate(expression), Is.EqualTo("Field1"));
const string expression = "=Fields!Unknown";
Assert.That(this.evaluator.Evaluate(expression), Is.EqualTo("Name"));
}
@ -54,7 +75,6 @@ namespace ICSharpCode.Reports.Core.Test.ReportingLanguage.IntegrationTests @@ -54,7 +75,6 @@ namespace ICSharpCode.Reports.Core.Test.ReportingLanguage.IntegrationTests
public void ExtractFieldbyName ()
{
const string expression = "=Fields!Name";
// Console.WriteLine("{0} - {1}",expression,evaluator.Evaluate(expression));
Assert.That(this.evaluator.Evaluate(expression),
Is.EqualTo(this.testTable.Rows.Count.ToString()));
}
@ -69,11 +89,6 @@ namespace ICSharpCode.Reports.Core.Test.ReportingLanguage.IntegrationTests @@ -69,11 +89,6 @@ namespace ICSharpCode.Reports.Core.Test.ReportingLanguage.IntegrationTests
AggregateFuctionHelper ah = new AggregateFuctionHelper();
this.testTable = ah.AggregateTable;
// foreach (DataRow r in this.testTable.Rows)
// {
//// this.intResult = this.intResult + Convert.ToInt16(r["IntValue"]);
//// this.doubleResult = this.doubleResult + Convert.ToDouble(r["Amount"]);
// }
this.dataManager = ICSharpCode.Reports.Core.DataManager.CreateInstance(this.testTable, new ReportSettings());
this.singlePage.IDataNavigator = this.dataManager.GetNavigator;

Loading…
Cancel
Save