Browse Source

Expression Evaluation from 'Text' to 'Expression' Property in Text and DataItem

pull/15/head^2
peterforstmeier 14 years ago
parent
commit
ec021357b2
  1. 3
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseTextItem.cs
  2. 6
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/ReportStructure.cs
  3. 3
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/GroupColumn.cs
  4. 7
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/BaseListStrategy.cs
  5. 3
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/CollectionStrategy.cs
  6. 94
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/TableStrategy.cs
  7. 1
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/DataManager/TableStragy/GroupTableFixture.cs

3
src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseTextItem.cs

@ -133,10 +133,7 @@ namespace ICSharpCode.Reports.Addin @@ -133,10 +133,7 @@ namespace ICSharpCode.Reports.Addin
[Browsable(true),
Category("Databinding"),
Description("Datatype of the underlying Column")]
[DefaultValue("System.String")]
[TypeConverter(typeof(DataTypeStringConverter))]
public string DataType {get;set;}

6
src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/ReportStructure.cs

@ -60,12 +60,14 @@ namespace ICSharpCode.Reports.Addin.ReportWizard @@ -60,12 +60,14 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
return model;
}
private void CreateGrouping(ReportSettings settings)
{
if (!String.IsNullOrEmpty(this.Grouping))
{
//string s = "=[" + this.Grouping + "]";
GroupColumn g = new GroupColumn(this.Grouping,1,System.ComponentModel.ListSortDirection.Ascending);
string s = "=[" + this.Grouping + "]";
//GroupColumn g = new GroupColumn(this.Grouping,1,System.ComponentModel.ListSortDirection.Ascending);
GroupColumn g = new GroupColumn(s,1,System.ComponentModel.ListSortDirection.Ascending);
settings.GroupColumnsCollection.Add(g);
}
}

3
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/GroupColumn.cs

@ -36,7 +36,6 @@ namespace ICSharpCode.Reports.Core @@ -36,7 +36,6 @@ namespace ICSharpCode.Reports.Core
return groupLevel;
}
}
public string GroupExpression {get;set;}
}
}

7
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/BaseListStrategy.cs

@ -93,11 +93,7 @@ namespace ICSharpCode.Reports.Core { @@ -93,11 +93,7 @@ namespace ICSharpCode.Reports.Core {
childList = new IndexList();
GroupComparer gc = CreateGroupHeader(element);
gc.IndexList = childList;
// CreateGroupedChildren(childList,element);
}
// else {
// CreateGroupedChildren(childList,element);
// }
CreateGroupedChildren(childList,element);
compVal = groupValue;
}
@ -111,9 +107,6 @@ namespace ICSharpCode.Reports.Core { @@ -111,9 +107,6 @@ namespace ICSharpCode.Reports.Core {
GroupColumn gc = element.ColumnCollection[0] as GroupColumn;
if (gc != null) {
val = element.ObjectArray[0].ToString();
var ex = gc.GroupExpression;
// Console.WriteLine("{0} - {1}",val,ex);
var sss = ((ExpressionEvaluatorFacade)ExpressionEvaluator).Evaluate(ex,val);
}
return val;
}

3
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/CollectionStrategy.cs

@ -277,7 +277,7 @@ namespace ICSharpCode.Reports.Core { @@ -277,7 +277,7 @@ namespace ICSharpCode.Reports.Core {
}
#region test
public override object CurrentFromPosition (int pos)
{
@ -340,7 +340,6 @@ namespace ICSharpCode.Reports.Core { @@ -340,7 +340,6 @@ namespace ICSharpCode.Reports.Core {
return ci;
}
#endregion
#region IDisposable

94
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/TableStrategy.cs

@ -13,7 +13,8 @@ namespace ICSharpCode.Reports.Core @@ -13,7 +13,8 @@ namespace ICSharpCode.Reports.Core
/// <summary>
/// Description of TableStrategy.
/// </summary>
internal class TableStrategy: BaseListStrategy,IEnumerable<BaseComparer>
internal class TableStrategy: BaseListStrategy
{
private DataTable table;
@ -85,32 +86,24 @@ namespace ICSharpCode.Reports.Core @@ -85,32 +86,24 @@ namespace ICSharpCode.Reports.Core
{
var dataItem = item as BaseDataItem;
if (dataItem != null) {
dataItem.DBValue = ExtractValue(row,dataItem).ToString();
dataItem.DBValue = ExtractDBValue(row,dataItem).ToString();
}
return;
}
}
}
object ExtractValue(DataRow row,BaseDataItem item)
object ExtractDBValue(DataRow row,BaseDataItem item)
{
string expression = String.Empty;
if ((! String.IsNullOrEmpty(item.Expression)) && (item.Expression.StartsWith("="))) {
expression = item.Expression;
} else
if ((!String.IsNullOrEmpty(item.Expression)) && (item.Expression.StartsWith("="))) {
return ExtractFromExpression(item.Expression, row);
}
else
{
string colName = string.Empty;
if (!item.ColumnName.StartsWith ("=Fields")) {
expression = "=Fields!" + item.ColumnName;
} else {
expression = item.ColumnName;
}
return DBValueFromRow(row, item.ColumnName);
}
return ((ExpressionEvaluatorFacade)base.ExpressionEvaluator).Evaluate(expression,row);
}
public override CurrentItemsCollection FillDataRow(int pos)
@ -142,6 +135,8 @@ namespace ICSharpCode.Reports.Core @@ -142,6 +135,8 @@ namespace ICSharpCode.Reports.Core
}
return ci;
}
public override bool MoveNext()
{
return base.MoveNext();
@ -154,7 +149,6 @@ namespace ICSharpCode.Reports.Core @@ -154,7 +149,6 @@ namespace ICSharpCode.Reports.Core
}
public override void Sort()
{
base.Sort();
@ -191,7 +185,7 @@ namespace ICSharpCode.Reports.Core @@ -191,7 +185,7 @@ namespace ICSharpCode.Reports.Core
for (int criteriaIndex = 0; criteriaIndex < col.Count; criteriaIndex++)
{
object value = ExtractColumnValue(rowItem,col,criteriaIndex);
if (value != null && value != DBNull.Value)
{
values[criteriaIndex] = value;
@ -215,25 +209,48 @@ namespace ICSharpCode.Reports.Core @@ -215,25 +209,48 @@ namespace ICSharpCode.Reports.Core
}
object ExtractColumnValue(DataRow row,ColumnCollection col, int criteriaIndex)
{
AbstractColumn c = (AbstractColumn)col[criteriaIndex];
object val = null;
int pos = c.ColumnName.IndexOf("!");
val = DBValueFromRow(row,c.ColumnName);
// if (!(val is IComparable)){
// throw new InvalidOperationException(val.ToString());
// }
return val;
}
if (pos > 0)
{
val = ((ExpressionEvaluatorFacade)ExpressionEvaluator).Evaluate(c.ColumnName,row);
string CleanupColumnName(string colName)
{
if (colName.StartsWith("=[")) {
return colName.Substring(2, colName.Length - 3);
}
else
return colName;
}
object DBValueFromRow(DataRow row, string colName)
{
int pos = colName.IndexOf("!");
if (pos > 0)
{
val = row[c.ColumnName];
}
if (!(val is IComparable)){
throw new InvalidOperationException(val.ToString());
return ExtractFromExpression(colName,row);
} else {
var expression = CleanupColumnName(colName);
return row[expression];
}
return val;
}
object ExtractFromExpression(string expression, DataRow row)
{
var v = ((ExpressionEvaluatorFacade)base.ExpressionEvaluator).Evaluate(expression, row);
return v;
}
@ -248,30 +265,11 @@ namespace ICSharpCode.Reports.Core @@ -248,30 +265,11 @@ namespace ICSharpCode.Reports.Core
}
#region Test
public override object CurrentFromPosition (int pos)
{
return this.table.Rows[pos];
}
#endregion
#region IEnumerable<BaseComparer>
IEnumerator IEnumerable.GetEnumerator()
{
return((IEnumerable<BaseComparer>)this).GetEnumerator();
}
IEnumerator<BaseComparer> IEnumerable<BaseComparer>.GetEnumerator()
{
IEnumerable<BaseComparer> e = (IEnumerable<BaseComparer>)base.IndexList;
return e.GetEnumerator();
}
#endregion
#region Propertys

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

@ -169,7 +169,6 @@ namespace ICSharpCode.Reports.Core.Test.DataManager.TableStrategy @@ -169,7 +169,6 @@ namespace ICSharpCode.Reports.Core.Test.DataManager.TableStrategy
private IDataNavigator PrepareStringGrouping ()
{
GroupColumn gc = new GroupColumn("GroupItem",1,ListSortDirection.Ascending);
gc.GroupExpression = "=Substring('GroupItem',0,5)";
ReportSettings rs = new ReportSettings();
rs.GroupColumnsCollection.Add(gc);
IDataManager dm = ICSharpCode.Reports.Core.DataManager.CreateInstance(this.table,rs);

Loading…
Cancel
Save