Browse Source

DataNavigator

pull/15/head^2
Peter Forstmeier 15 years ago
parent
commit
df9fa173b0
  1. 56
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ChildNavigator.cs
  2. 31
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/CollectionStrategy.cs
  3. 25
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/ListStrategy/TableStrategy.cs
  4. 18
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/DataManager/ListStrategy/GroupListFixture.cs

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

@ -67,69 +67,15 @@ namespace ICSharpCode.Reports.Core @@ -67,69 +67,15 @@ namespace ICSharpCode.Reports.Core
return dataStore.AvailableFields;
}
}
/*
public void Fill(ReportItemCollection collection)
{
TableStrategy tableStrategy = store as TableStrategy;
foreach (var item in collection) {
IDataItem dataItem = item as IDataItem;
if (dataItem != null) {
CurrentItemsCollection currentItemsCollection = tableStrategy.FillDataRow(this.indexList[CurrentRow].ListIndex);
CurrentItem s = currentItemsCollection.FirstOrDefault(x => x.ColumnName == dataItem.ColumnName);
dataItem.DBValue = s.Value.ToString();
}
}
}
*/
public void Fill(ReportItemCollection collection)
{
var position = this.indexList[this.indexList.CurrentPosition].ListIndex;
var current = dataStore.CurrentFromPosition(position);
//var current = dataStore.FillDataRow(position);
dataStore.Fill(position,collection);
/*
foreach (IDataItem item in collection)
{
FillInternal(current, item);
}
*/
}
private void FillInternal(object fillFrom,IDataItem item)
{
if (item is BaseDataItem)
{
var retVal = CollectionStrategy.FollowPropertyPath(fillFrom,item.ColumnName);
if (retVal != null) {
item.DBValue = retVal.ToString();
} else {
item.DBValue = String.Empty;
}
}
else
{
/*
//image processing from IList
BaseImageItem baseImageItem = item as BaseImageItem;
if (baseImageItem != null) {
PropertyDescriptor p = this.listProperties.Find(baseImageItem.ColumnName, true);
if (p != null) {
baseImageItem.Image = p.GetValue(this.Current) as System.Drawing.Image;
}
return;
}
*/
}
}
public bool MoveNext()
{
this.indexList.CurrentPosition ++;

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

@ -198,17 +198,22 @@ namespace ICSharpCode.Reports.Core { @@ -198,17 +198,22 @@ namespace ICSharpCode.Reports.Core {
#endregion
public override void Fill(int position,ReportItemCollection collection)
{
// base.Fill(collection);
var current = this.CurrentFromPosition(position);
foreach (IDataItem item in collection)
{
FillInternal(current, item);
}
}
public override void Fill(IDataItem item)
private void FillInternal(object fillFrom,IDataItem item)
{
if (item is BaseDataItem)
{
var retVal = FollowPropertyPath(Current,item.ColumnName);
var retVal = FollowPropertyPath(fillFrom,item.ColumnName);
if (retVal != null) {
item.DBValue = retVal.ToString();
} else {
@ -218,7 +223,6 @@ namespace ICSharpCode.Reports.Core { @@ -218,7 +223,6 @@ namespace ICSharpCode.Reports.Core {
else
{
//image processing from IList
BaseImageItem baseImageItem = item as BaseImageItem;
@ -229,15 +233,22 @@ namespace ICSharpCode.Reports.Core { @@ -229,15 +233,22 @@ namespace ICSharpCode.Reports.Core {
}
return;
}
}
}
public override void Fill(IDataItem item)
{
FillInternal(Current,item);
}
#region PropertyPath from StackOverflow
//http://stackoverflow.com/questions/366332/best-way-to-get-sub-properties-using-getproperty
public static object FollowPropertyPath(object value, string path)
private static object FollowPropertyPath(object value, string path)
{
Type currentType = value.GetType();
foreach (string propertyName in path.Split('.'))
@ -276,9 +287,9 @@ namespace ICSharpCode.Reports.Core { @@ -276,9 +287,9 @@ namespace ICSharpCode.Reports.Core {
public override CurrentItemsCollection FillDataRow(int pos)
{
var item = CurrentFromPosition(pos);
CurrentItemsCollection ci = new CurrentItemsCollection();
if (item != null)
var current = CurrentFromPosition(pos);
if (current != null)
{
CurrentItem c = null;
foreach (PropertyDescriptor pd in this.listProperties)
@ -286,7 +297,9 @@ namespace ICSharpCode.Reports.Core { @@ -286,7 +297,9 @@ namespace ICSharpCode.Reports.Core {
c = new CurrentItem();
c.ColumnName = pd.Name;
c.DataType = pd.PropertyType;
var s = pd.GetValue(item);
//var s = pd.GetValue(current);
var s = FollowPropertyPath(current,pd.Name);
if (s != null)
{
c.Value = s.ToString();

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

@ -57,32 +57,7 @@ namespace ICSharpCode.Reports.Core @@ -57,32 +57,7 @@ namespace ICSharpCode.Reports.Core
DataRow row = this.Current as DataRow;
if (row != null)
{
this.FillInternal (row,item);
/*
BaseImageItem bi = item as BaseImageItem;
if (bi != null)
{
using (System.IO.MemoryStream memStream = new System.IO.MemoryStream()){
Byte[] val = row[bi.ColumnName] as Byte[];
if (val != null) {
if ((val[78] == 66) && (val[79] == 77)){
memStream.Write(val, 78, val.Length - 78);
} else {
memStream.Write(val, 0, val.Length);
}
System.Drawing.Image image = System.Drawing.Image.FromStream(memStream);
bi.Image = image;
}
}
} else
{
if (item != null) {
item.DBValue = row[item.ColumnName].ToString();
return;
}
}
*/
}
}

18
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/DataManager/ListStrategy/GroupListFixture.cs

@ -89,7 +89,6 @@ namespace ICSharpCode.Reports.Core.Test.DataManager.ListStrategy @@ -89,7 +89,6 @@ namespace ICSharpCode.Reports.Core.Test.DataManager.ListStrategy
do
{
Assert.That(dataNavigator.HasChildren,Is.True);
// we know that current is a 'contributor'
childNavigator.Fill(searchCol);
var a = (BaseDataItem)searchCol[0];
Console.WriteLine ("\t{0}",a.DBValue);
@ -137,7 +136,6 @@ namespace ICSharpCode.Reports.Core.Test.DataManager.ListStrategy @@ -137,7 +136,6 @@ namespace ICSharpCode.Reports.Core.Test.DataManager.ListStrategy
dataNavigator.Reset();
dataNavigator.MoveNext();
do
{
dataNavigator.Fill(searchCol);
@ -150,16 +148,12 @@ namespace ICSharpCode.Reports.Core.Test.DataManager.ListStrategy @@ -150,16 +148,12 @@ namespace ICSharpCode.Reports.Core.Test.DataManager.ListStrategy
var childNavigator = dataNavigator.GetChildNavigator;
do
{
//
childNavigator.Fill(searchCol);
var a = (BaseDataItem)searchCol[0];
var b = (BaseDataItem)searchCol[1];
var c = (BaseDataItem)searchCol[2];
Console.WriteLine ("\t{0} - {1} - {2}",a.DBValue,b.DBValue,c.DBValue);
// Contributor c = dataNavigator.Current as Contributor;
// string v2 = c.Last + " GroupVal :" + c.GroupItem;
// Console.WriteLine(v2);
var a = (BaseDataItem)searchCol[0];
var b = (BaseDataItem)searchCol[1];
var c = (BaseDataItem)searchCol[2];
Console.WriteLine ("\t{0} - {1} - {2}",a.DBValue,b.DBValue,c.DBValue);
}
while (childNavigator.MoveNext());
}
@ -182,7 +176,6 @@ namespace ICSharpCode.Reports.Core.Test.DataManager.ListStrategy @@ -182,7 +176,6 @@ namespace ICSharpCode.Reports.Core.Test.DataManager.ListStrategy
var childNavigator = dataNavigator.GetChildNavigator;
do
{
Assert.That(dataNavigator.HasChildren,Is.True);
// we know that current is a 'contributor'
Contributor c = dataNavigator.Current as Contributor;
@ -196,6 +189,7 @@ namespace ICSharpCode.Reports.Core.Test.DataManager.ListStrategy @@ -196,6 +189,7 @@ namespace ICSharpCode.Reports.Core.Test.DataManager.ListStrategy
}
#endregion
private ContributorCollection ModifyCollection ()
{
var newcol = this.contributorCollection;

Loading…
Cancel
Save