Browse Source

CQA OverviewReport.srd is running, this report can be used as an example to handle SectionEvents, useful to work with ReportItems at run time.

reports
Peter Forstmeier 12 years ago
parent
commit
b3946f3862
  1. 6
      SharpDevelop.Tests.sln
  2. 1
      src/AddIns/Analysis/CodeQuality/Gui/MainView.xaml.cs
  3. 14
      src/AddIns/Analysis/CodeQuality/Reporting/DependencyReport.cs
  4. 67
      src/AddIns/Analysis/CodeQuality/Reporting/OverviewReport.cs
  5. 2
      src/AddIns/Analysis/CodeQuality/Reporting/Overviewreport.srd
  6. 1
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/ICSharpCode.Reporting.csproj
  7. 6
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Globals/GlobalEnums.cs
  8. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IReportContainer.cs
  9. 14
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs
  10. 3
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/FormPageBuilder.cs
  11. 53
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ReportSectionNames.cs
  12. 24
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ReportingFactory.cs
  13. 1
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Xml/MycroParser.cs
  14. 10
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/BaseConvertFixture.cs
  15. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/PageLayoutFixture.cs
  16. 3
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Reportingfactory/PushModelFixture.cs

6
SharpDevelop.Tests.sln

@ -1,7 +1,9 @@ @@ -1,7 +1,9 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2012
# SharpDevelop 5.0
VisualStudioVersion = 12.0.20827.3
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Main", "Main", "{256F5C28-532C-44C0-8AB8-D8EC5E492E01}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.BuildWorker35", "src\Main\ICSharpCode.SharpDevelop.BuildWorker35\ICSharpCode.SharpDevelop.BuildWorker35.csproj", "{B5F54272-49F0-40DB-845A-8D837875D3BA}"

1
src/AddIns/Analysis/CodeQuality/Gui/MainView.xaml.cs

@ -97,7 +97,6 @@ namespace ICSharpCode.CodeQuality.Gui @@ -97,7 +97,6 @@ namespace ICSharpCode.CodeQuality.Gui
void DependecyReport_Click(object sender, RoutedEventArgs e)
{
var dependencyReport = new DependencyReport(fileNames);
var reportCreator = dependencyReport.Run(list);
var previewViewModel = new PreviewViewModel(dependencyReport.ReportSettings,reportCreator.Pages);

14
src/AddIns/Analysis/CodeQuality/Reporting/DependencyReport.cs

@ -32,7 +32,7 @@ namespace ICSharpCode.CodeQuality.Reporting @@ -32,7 +32,7 @@ namespace ICSharpCode.CodeQuality.Reporting
/// </summary>
public class DependencyReport:BaseReport
{
private const string overviewReport = "DependencyReport.srd";
const string overviewReport = "DependencyReport.srd";
public DependencyReport(List<string> fileNames):base(fileNames)
{
@ -41,10 +41,8 @@ namespace ICSharpCode.CodeQuality.Reporting @@ -41,10 +41,8 @@ namespace ICSharpCode.CodeQuality.Reporting
public IReportCreator Run(ReadOnlyCollection<AssemblyNode> list)
{
var newList = MakeList (list);
Assembly asm = Assembly.GetExecutingAssembly();
System.IO.Stream stream = asm.GetManifestResourceStream("ICSharpCode.CodeQuality.Reporting.DependencyReport.srd");
var asm = Assembly.GetExecutingAssembly();
var stream = asm.GetManifestResourceStream("ICSharpCode.CodeQuality.Reporting.DependencyReport.srd");
var reportingFactory = new ReportingFactory();
var reportCreator = reportingFactory.ReportCreator (stream,newList);
ReportSettings = reportingFactory.ReportModel.ReportSettings;
@ -53,14 +51,12 @@ namespace ICSharpCode.CodeQuality.Reporting @@ -53,14 +51,12 @@ namespace ICSharpCode.CodeQuality.Reporting
}
private List <DependencyViewModel> MakeList (ReadOnlyCollection<AssemblyNode> list)
List <DependencyViewModel> MakeList (ReadOnlyCollection<AssemblyNode> list)
{
var newList = new List<DependencyViewModel>();
foreach (var baseNode in list) {
foreach (var element in list) {
if (baseNode.Name != element.Name) {
var referenceCount = baseNode.GetUses(element);
if (referenceCount > 0) {
newList.Add(new DependencyViewModel()
@ -78,7 +74,7 @@ namespace ICSharpCode.CodeQuality.Reporting @@ -78,7 +74,7 @@ namespace ICSharpCode.CodeQuality.Reporting
}
internal class DependencyViewModel:ReportViewModel
class DependencyViewModel:ReportViewModel
{
public DependencyViewModel()
{

67
src/AddIns/Analysis/CodeQuality/Reporting/OverviewReport.cs

@ -19,12 +19,14 @@ @@ -19,12 +19,14 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
using System.Linq;
using System.Reflection;
using ICSharpCode.NRefactory.Utils;
using ICSharpCode.Reporting;
using ICSharpCode.Reporting.Interfaces;
using ICSharpCode.Reporting.Items;
using ICSharpCode.CodeQuality.Engine.Dom;
namespace ICSharpCode.CodeQuality.Reporting
@ -35,6 +37,7 @@ namespace ICSharpCode.CodeQuality.Reporting @@ -35,6 +37,7 @@ namespace ICSharpCode.CodeQuality.Reporting
public class OverviewReport:BaseReport
{
private const string overviewReport = "OverviewReport.srd";
ReadOnlyCollection<AssemblyNode> list;
public OverviewReport(List<string> fileNames):base(fileNames)
{
@ -42,43 +45,69 @@ namespace ICSharpCode.CodeQuality.Reporting @@ -42,43 +45,69 @@ namespace ICSharpCode.CodeQuality.Reporting
public IReportCreator Run(ReadOnlyCollection<AssemblyNode> list)
{
this.list = list;
var asm = Assembly.GetExecutingAssembly();
var stream = asm.GetManifestResourceStream("ICSharpCode.CodeQuality.Reporting.Overviewreport.srd");
var newList = from c in list
select new OverviewViewModel { Node = c};
var viewModelList = CreateViewModel(list);
var reportingFactory = new ReportingFactory();
var reportCreator = reportingFactory.ReportCreator (stream,newList);
var reportCreator = reportingFactory.ReportCreator (stream,viewModelList);
ReportSettings = reportingFactory.ReportModel.ReportSettings;
var reportParameters = new ParameterCollection();
reportParameters.Add(new BasicParameter ("param1",base.FileNames[0]));
reportParameters.Add(new BasicParameter ("param2",list.Count.ToString()));
ReportSettings.ParameterCollection.AddRange(reportParameters);
// var reportParameters = new ParameterCollection();
// reportParameters.Add(new BasicParameter ("param1",base.FileNames[0]));
// reportParameters.Add(new BasicParameter ("param2",list.Count.ToString()));
//
// ReportSettings.ParameterCollection.AddRange(reportParameters);
reportCreator.SectionRendering += HandleSectionEvents;
reportCreator.BuildExportList();
return reportCreator;
/*
var model = ReportEngine.LoadReportModel(stream);
ReportSettings = model.ReportSettings;
}
static IEnumerable<OverviewViewModel> CreateViewModel(ReadOnlyCollection<AssemblyNode> list)
{
var newList = from c in list
select new OverviewViewModel {
Node = c
};
return newList;
}
void HandleSectionEvents(object sender, SectionEventArgs e)
{
var sectionName = e.Section.Name;
if (sectionName == ReportSectionNames.ReportHeader) {
var param1 = (BaseTextItem)e.Section.Items.FirstOrDefault(n => n.Name == "Param1");
FileInfo fi =new FileInfo(FileNames[0]);
// var s = fi..Directory + fi.Name;
param1.Text = fi.Name;
var param2 = (BaseTextItem)e.Section.Items.FirstOrDefault(n => n.Name == "Param2");
param2.Text = list.Count.ToString();
}
else if (sectionName == ReportSectionNames.ReportPageHeader) {
Console.WriteLine("PushPrinting :" +ReportSectionNames .ReportPageHeader);
}
IReportCreator creator = ReportEngine.CreatePageBuilder(model,r.ToList(),p);
creator.BuildExportList();
return creator;
*/
return null;
else if (sectionName == ReportSectionNames.ReportDetail){
// Console.WriteLine("PushPrinting :" + ReportSectionNames.ReportDetail);
}
else if (sectionName == ReportSectionNames.ReportPageFooter){
// Console.WriteLine("PushPrinting :" + ReportSectionNames.ReportPageFooter);
}
else if (sectionName == ReportSectionNames.ReportFooter){
// Console.WriteLine("PushPrinting :" + ReportSectionNames.ReportFooter);
}
}
}
internal class OverviewViewModel:ReportViewModel
class OverviewViewModel:ReportViewModel
{
public OverviewViewModel ()
{

2
src/AddIns/Analysis/CodeQuality/Reporting/Overviewreport.srd

@ -96,7 +96,7 @@ @@ -96,7 +96,7 @@
<DrawBorder>False</DrawBorder>
<FrameColor>Black</FrameColor>
<ForeColor>ControlText</ForeColor>
<Name>BaseTextItem2147483639</Name>
<Name>Param2</Name>
</BaseTextItem>
<BaseTextItem>
<Location>27, 118</Location>

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

@ -172,6 +172,7 @@ @@ -172,6 +172,7 @@
<Compile Include="Src\Pdf\PdfHelper.cs" />
<Compile Include="Src\Pdf\PdfVisitor.cs" />
<Compile Include="Src\ReportingFactory.cs" />
<Compile Include="Src\ReportSectionNames.cs" />
<Compile Include="Src\Wpf\PreviewViewModel.cs" />
<Compile Include="Src\Wpf\Visitor\CanvasExtension.cs" />
<Compile Include="Src\Wpf\Visitor\CanvasHelper.cs" />

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

@ -25,9 +25,9 @@ namespace ICSharpCode.Reporting.Globals @@ -25,9 +25,9 @@ namespace ICSharpCode.Reporting.Globals
/// </summary>
public sealed class GlobalEnums
{
private GlobalEnums() {
GlobalEnums() {
}
/*
public enum ReportSection {
ReportHeader,
ReportPageHeader,
@ -35,7 +35,7 @@ namespace ICSharpCode.Reporting.Globals @@ -35,7 +35,7 @@ namespace ICSharpCode.Reporting.Globals
ReportPageFooter,
ReportFooter
}
*/
///<summary>Technics to get the data
/// Push : report get's a ready filld dataset or something tah implements IList
/// Pull : report has to fill data by themself

2
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IReportContainer.cs

@ -18,8 +18,6 @@ @@ -18,8 +18,6 @@
using System;
using System.Collections.Generic;
using ICSharpCode.Reporting.Interfaces.Export;
using ICSharpCode.Reporting.Items;
namespace ICSharpCode.Reporting.Interfaces
{

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

@ -40,7 +40,7 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -40,7 +40,7 @@ namespace ICSharpCode.Reporting.PageBuilder
public class BasePageBuilder:IReportCreator
{
public event EventHandler<SectionEventArgs> SectionRendering;
public event EventHandler<SectionEventArgs> SectionRendering;
public BasePageBuilder(IReportModel reportModel){
if (reportModel == null) {
@ -55,20 +55,14 @@ public event EventHandler<SectionEventArgs> SectionRendering; @@ -55,20 +55,14 @@ public event EventHandler<SectionEventArgs> SectionRendering;
void BuildReportHeader(){
if (Pages.Count == 0) {
var sea = new SectionEventArgs(ReportModel.ReportHeader);
Raise<SectionEventArgs> (SectionRendering,this,sea);
var header = CreateSection(sea.Section,CurrentLocation);
var header = CreateSection(ReportModel.ReportHeader,CurrentLocation);
var r = new Rectangle(header.Location.X, header.Location.Y, header.Size.Width, header.Size.Height);
CurrentLocation = new Point (ReportModel.ReportSettings.LeftMargin,r.Bottom + 1);
AddSectionToPage(header);
Raise<SectionEventArgs> (SectionRendering,this,new SectionEventArgs(ReportModel.ReportHeader));
}
}
protected static void Raise <T>(EventHandler<T> handler, object sender, T e)
static void Raise <T>(EventHandler<T> handler, object sender, T e)
where T: EventArgs{
// Copy to a temporary variable to be thread-safe.
EventHandler<T> temp = handler;
@ -129,6 +123,8 @@ public event EventHandler<SectionEventArgs> SectionRendering; @@ -129,6 +123,8 @@ public event EventHandler<SectionEventArgs> SectionRendering;
#endregion
protected IExportContainer CreateSection(IReportContainer container,Point location){
var sea = new SectionEventArgs(container);
Raise<SectionEventArgs> (SectionRendering,this,sea);
var containerConverter = new ContainerConverter(location);
var convertedContainer = containerConverter.ConvertToExportContainer(container);

3
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/FormPageBuilder.cs

@ -38,7 +38,8 @@ namespace ICSharpCode.Reporting.PageBuilder @@ -38,7 +38,8 @@ namespace ICSharpCode.Reporting.PageBuilder
SetupExpressionRunner(ReportModel.ReportSettings,null);
base.BuildExportList();
BuildDetail();
base.AddPage(CurrentPage);
BuildReportFooter();
AddPage(CurrentPage);
UpdatePageInfo();
// RunDebugVisitor();
ExpressionRunner.Run();

53
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/ReportSectionNames.cs

@ -0,0 +1,53 @@ @@ -0,0 +1,53 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 08.02.2014
* Time: 18:30
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
namespace ICSharpCode.Reporting
{
/// <summary>
/// Description of ReportSectionNames.
/// </summary>
///
public enum ReportSection {
ReportHeader,
ReportPageHeader,
ReportDetail,
ReportPageFooter,
ReportFooter
}
public static class ReportSectionNames
{
public static string ReportHeader
{
get{ return ReportSection.ReportHeader.ToString();}
}
public static string ReportPageHeader
{
get{ return ReportSection.ReportPageHeader.ToString();}
}
public static string ReportDetail
{
get { return ReportSection.ReportDetail.ToString();}
}
public static string ReportPageFooter
{
get { return ReportSection.ReportPageFooter.ToString();}
}
public static string ReportFooter
{
get{ return ReportSection.ReportFooter.ToString();}
}
}
}

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

@ -31,29 +31,16 @@ namespace ICSharpCode.Reporting @@ -31,29 +31,16 @@ namespace ICSharpCode.Reporting
/// <summary>
/// Description of Reporting.
/// </summary>
public class ReportingFactory
{
void Method(object s,EventArgs e)
{
Console.WriteLine("Got Event {0}",s.ToString());
}
public IReportCreator ReportCreator (Stream stream,IEnumerable list)
{
ReportModel = LoadReportModel (stream);
var builder = new DataPageBuilder(ReportModel,list );
return builder;
}
[Obsolete("Use public IReportCreator ReportCreator (Stream stream,IEnumerable list")]
public IReportCreator ReportCreator (Stream stream,Type listType,IEnumerable list)
{
ReportModel = LoadReportModel (stream);
IReportCreator builder = null;
builder = new DataPageBuilder(ReportModel,list );
return builder;
}
@ -62,7 +49,6 @@ namespace ICSharpCode.Reporting @@ -62,7 +49,6 @@ namespace ICSharpCode.Reporting
{
ReportModel = LoadReportModel (stream);
var builder = new FormPageBuilder(ReportModel);
builder.SectionRendering += (sender, e) => Method(sender, e);
return builder;
}
@ -82,18 +68,16 @@ namespace ICSharpCode.Reporting @@ -82,18 +68,16 @@ namespace ICSharpCode.Reporting
return ReportModel;
}
static ReportModel LoadModel(XmlDocument doc)
{
var loader = new ModelLoader();
object root = loader.Load(doc.DocumentElement);
var model = root as ReportModel;
if (model == null) {
// throw new IllegalFileFormatException("ReportModel");
}
return model;
}
public ReportModel ReportModel {get;private set;}
}
}

1
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Xml/MycroParser.cs

@ -221,7 +221,6 @@ namespace ICSharpCode.Reporting.Xml @@ -221,7 +221,6 @@ namespace ICSharpCode.Reporting.Xml
static void SetPropertyToString(object obj, PropertyInfo pi, string value)
{
Console.WriteLine("MP - SetPropertyToString {0} - {1}",pi.Name,value.ToString());
// it's string, so use a type converter.
TypeConverter tc=TypeDescriptor.GetConverter(pi.PropertyType);
try

10
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/BaseConvertFixture.cs

@ -58,13 +58,15 @@ namespace ICSharpCode.Reporting.Test.PageBuilder @@ -58,13 +58,15 @@ namespace ICSharpCode.Reporting.Test.PageBuilder
[Test]
public void testeventt() {
public void SectionRenderingCalledFromEachSection() {
int i = 0;
reportCreator.SectionRendering += (sender, e) => {
Console.WriteLine("Hi with from {0} with {1}",e.ToString(),e.Section.Name);
((BaseTextItem)e.Section.Items[0]).Text = "hallo";
// Console.WriteLine("Hi with from {0} with {1}",e.ToString(),e.Section.Name);
i ++;
};
reportCreator.BuildExportList();
var p = reportCreator.Pages[0];
// Assert.That(i,Is.EqualTo(p.ExportedItems.Count -1));
}
[SetUp]

2
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/PageBuilder/PageLayoutFixture.cs

@ -57,8 +57,6 @@ namespace ICSharpCode.Reporting.Test.PageBuilder @@ -57,8 +57,6 @@ namespace ICSharpCode.Reporting.Test.PageBuilder
reportCreator.BuildExportList();
foreach (var item in reportCreator.Pages[0].ExportedItems) {
var p2 = new Point(item.Location.X,item.Location.Y);
Console.WriteLine("{0} - {1} - {2}- <{3}>",p2,item.Size.Height,item.Name,item.DisplayRectangle);
if (item.Name != "ReportFooter") {
Assert.That(p2.Y,Is.GreaterThan(referencePoint.Y),item.Name);
var t = referenceRect.IntersectsWith(item.DisplayRectangle);

3
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Test/ICSharpCode.Reporting.Test/src/Reportingfactory/PushModelFixture.cs

@ -128,9 +128,6 @@ namespace ICSharpCode.Reporting.Test.Reportingfactory @@ -128,9 +128,6 @@ namespace ICSharpCode.Reporting.Test.Reportingfactory
reportCreator.BuildExportList();
var exporteditems = reportCreator.Pages[0].ExportedItems;
for (int i = 1; i < exporteditems.Count -1; i++) {
Console.WriteLine(" {0} - {1} - {2}",exporteditems[i-1].DisplayRectangle.Bottom,exporteditems[i].Location.Y,exporteditems[i].Name);
// Assert.That(exporteditems[i].Location.Y,Is.GreaterThan(exporteditems[i-1].DisplayRectangle.Bottom));
Assert.That(exporteditems[i].Location.Y,Is.EqualTo(exporteditems[i-1].DisplayRectangle.Bottom +1));
}
}

Loading…
Cancel
Save