Browse Source

PullModel from StoredProcedure

reports
Peter Forstmeier 12 years ago
parent
commit
8a08d3ee0d
  1. 1
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportDesignerView.cs
  2. 13
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/Generators/GeneratePullDataReport.cs
  3. 27
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/ReportStructure.cs
  4. 88
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/WizardPanels/PullModelPanel.cs
  5. 29
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/WizardPanels/ResultPanel.cs
  6. 3
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj
  7. 76
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/DataAccess/SqlDataAccess.cs
  8. 14
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/DataManager.cs
  9. 27
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Factories/ConnectionObjectFactory.cs
  10. 13
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Factories/DataManagerFactory.cs
  11. 8
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Factories/SectionFactory.cs
  12. 1
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Interfaces/IDataAccessStrategy.cs
  13. 1
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/ReportEngine.cs

1
src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportDesignerView.cs

@ -19,7 +19,6 @@ using ICSharpCode.Reports.Addin.SecondaryViews; @@ -19,7 +19,6 @@ using ICSharpCode.Reports.Addin.SecondaryViews;
using ICSharpCode.Reports.Core;
using ICSharpCode.Reports.Core.Exporter;
using ICSharpCode.Reports.Core.Exporter.ExportRenderer;
using ICSharpCode.Reports.Core.Factories;
using ICSharpCode.Reports.Core.Globals;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Gui;

13
src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/Generators/GeneratePullDataReport.cs

@ -32,13 +32,12 @@ namespace ICSharpCode.Reports.Addin.ReportWizard @@ -32,13 +32,12 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
base.ReportModel.ReportSettings.ReportType = GlobalEnums.ReportType.DataReport;
base.ReportModel.ReportSettings.DataModel = GlobalEnums.PushPullModel.PullData;
base.GenerateReport();
// GlobalEnums.ReportLayout reportLayout = (GlobalEnums.ReportLayout)base.Properties.Get("ReportLayout");
// AbstractLayout layout = LayoutFactory.CreateGenerator(reportLayout,base.ReportModel,base.ReportItemCollection);
// layout.CreateReportHeader();
// layout.CreatePageHeader();
// layout.CreateDataSection(base.ReportModel.DetailSection);
// layout.CreatePageFooter();
GlobalEnums.ReportLayout reportLayout = ReportStructure.ReportLayout;
AbstractLayout layout = LayoutFactory.CreateGenerator(reportLayout,base.ReportModel,base.ReportItemCollection);
layout.CreateReportHeader();
layout.CreatePageHeader();
layout.CreateDataSection(base.ReportModel.DetailSection);
layout.CreatePageFooter();
base.WriteToXml();
}
}

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

@ -25,11 +25,10 @@ namespace ICSharpCode.Reports.Addin.ReportWizard @@ -25,11 +25,10 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
private ReportItemCollection reportItemCollection;
private AvailableFieldsCollection availableFieldsCollection;
private ParameterCollection queryParameters;
public ReportStructure()
{
SqlQueryParameters = new SqlParameterCollection();
}
public ReportModel CreateAndFillReportModel ()
@ -102,15 +101,15 @@ namespace ICSharpCode.Reports.Addin.ReportWizard @@ -102,15 +101,15 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
public IDatabaseObjectBase IDatabaseObjectBase {get;set;}
public ParameterCollection SqlQueryParameters {
get {
if (this.queryParameters == null) {
this.queryParameters = new ParameterCollection();
}
return queryParameters;
}
}
// public ParameterCollection SqlQueryParameters {
// get {
// if (this.queryParameters == null) {
// this.queryParameters = new ParameterCollection();
// }
// return queryParameters;
// }
// }
public SqlParameterCollection SqlQueryParameters {get;set;}
#endregion
@ -166,9 +165,9 @@ namespace ICSharpCode.Reports.Addin.ReportWizard @@ -166,9 +165,9 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
this.availableFieldsCollection.Clear();
this.availableFieldsCollection = null;
}
if (this.queryParameters != null) {
this.queryParameters.Clear();
this.queryParameters = null;
if (this.SqlQueryParameters != null) {
this.SqlQueryParameters.Clear();
this.SqlQueryParameters = null;
}
}

88
src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/WizardPanels/PullModelPanel.cs

@ -207,58 +207,52 @@ namespace ICSharpCode.Reports.Addin.ReportWizard @@ -207,58 +207,52 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
}
private void databasesTree_SelectedItemChanged(object sender, System.Windows.RoutedPropertyChangedEventArgs<object> e)
{
if (e.NewValue is IDatabaseObjectBase)
{
IDatabase parentDatabase = e.NewValue as IDatabase;
private void databasesTree_SelectedItemChanged(object sender, System.Windows.RoutedPropertyChangedEventArgs<object> e)
{
if (e.NewValue is IDatabaseObjectBase)
{
IDatabase parentDatabase = e.NewValue as IDatabase;
if (parentDatabase == null)
{
IDatabaseObjectBase currentDatabaseObject = e.NewValue as IDatabaseObjectBase;
while (parentDatabase == null)
{
if (currentDatabaseObject.Parent == null)
break;
else if (currentDatabaseObject.Parent is IDatabase)
{
parentDatabase = currentDatabaseObject.Parent as IDatabase;
break;
}
else
currentDatabaseObject = currentDatabaseObject.Parent;
}
}
if (parentDatabase == null)
{
IDatabaseObjectBase currentDatabaseObject = e.NewValue as IDatabaseObjectBase;
while (parentDatabase == null)
{
if (currentDatabaseObject.Parent == null)
break;
else if (currentDatabaseObject.Parent is IDatabase)
{
parentDatabase = currentDatabaseObject.Parent as IDatabase;
break;
}
else
currentDatabaseObject = currentDatabaseObject.Parent;
}
}
if (parentDatabase != null)
this.currentNode = parentDatabase;
if (parentDatabase != null)
this.currentNode = parentDatabase;
if (this.currentNode is IDatabase)
{
if (parentDatabase != null)
{
// this.connectionString = + parentDatabase.ConnectionString;
// this.connectionString = "Driver={SQLServer};" + "Provider=SQLOLEDB;" + parentDatabase.ConnectionString;
//var cs = new SqlConnection();
//cs.
this.connectionString = "Provider=SQLOLEDB;" + parentDatabase.ConnectionString;
// this.connectionString = parentDatabase.ConnectionString;
this.txtSqlString.Enabled = true;
if (this.currentNode is IDatabase)
{
if (parentDatabase != null)
{
this.connectionString = parentDatabase.ConnectionString;
this.txtSqlString.Enabled = true;
if (this.firstDrag)
this.txtSqlString.Text = string.Empty;
firstDrag = false;
}
}
else
{
this.EnableNext = false;
}
}
}
if (this.firstDrag)
this.txtSqlString.Text = string.Empty;
firstDrag = false;
}
}
else
{
this.EnableNext = false;
}
}
}
// check witch type of node we dragg
private static NodeType CheckCurrentNode (IDatabaseObjectBase node) {

29
src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/WizardPanels/ResultPanel.cs

@ -37,7 +37,6 @@ namespace ICSharpCode.Reports.Addin.ReportWizard @@ -37,7 +37,6 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
private System.Windows.Forms.TextBox txtSqlString;
private ReportStructure reportStructure;
private ReportModel model;
private ConnectionObject connectionObject;
private DataSet resultDataSet;
@ -67,15 +66,14 @@ namespace ICSharpCode.Reports.Addin.ReportWizard @@ -67,15 +66,14 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
this.txtSqlString.Text = model.ReportSettings.CommandText;
this.connectionObject = CreateConnection ();
var dataAccess = new SqlDataAccessStrategy(model.ReportSettings,connectionObject);
var dataAccess = new SqlDataAccessStrategy(model.ReportSettings);
switch (model.ReportSettings.CommandType) {
case CommandType.Text:
dataSet = DatasetFromSqlText(dataAccess);
dataSet = DataSetFromSqlText(dataAccess);
break;
case CommandType.StoredProcedure:
dataSet = DatasetFromStoredProcedure(dataAccess);
dataSet = DataSetFromStoredProcedure(dataAccess);
break;
case CommandType.TableDirect:
MessageService.ShowError("TableDirect is not suppurted at the moment");
@ -87,17 +85,6 @@ namespace ICSharpCode.Reports.Addin.ReportWizard @@ -87,17 +85,6 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
}
ConnectionObject CreateConnection()
{
var conobj = ConnectionObject.CreateInstance(this.model.ReportSettings.ConnectionString,
System.Data.Common.DbProviderFactories.GetFactory("System.Data.OleDb"));
conobj.QueryString = model.ReportSettings.CommandText;
return conobj;
}
string CreateTableName(ReportStructure reportStructure)
{
ITable t = reportStructure.IDatabaseObjectBase as ITable;
@ -114,7 +101,7 @@ namespace ICSharpCode.Reports.Addin.ReportWizard @@ -114,7 +101,7 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
}
private DataSet DatasetFromSqlText(IDataAccessStrategy dataAccess)
private DataSet DataSetFromSqlText(IDataAccessStrategy dataAccess)
{
var dataSet = dataAccess.ReadData();
dataSet.Tables[0].TableName = CreateTableName (reportStructure);
@ -122,7 +109,7 @@ namespace ICSharpCode.Reports.Addin.ReportWizard @@ -122,7 +109,7 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
}
private DataSet DatasetFromStoredProcedure(IDataAccessStrategy dataAccess)
private DataSet DataSetFromStoredProcedure(IDataAccessStrategy dataAccess)
{
DataSet dataSet = ResultPanel.CreateDataSet();
@ -131,7 +118,7 @@ namespace ICSharpCode.Reports.Addin.ReportWizard @@ -131,7 +118,7 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
if (paramCollection.Count > 0) {
FillParameters(paramCollection);
reportStructure.SqlQueryParameters.AddRange(paramCollection);
reportStructure.SqlQueryParameters.AddRange(model.ReportSettings.SqlParameters);
}
dataSet = dataAccess.ReadData();
dataSet.Tables[0].TableName = procedure.Name;
@ -140,7 +127,7 @@ namespace ICSharpCode.Reports.Addin.ReportWizard @@ -140,7 +127,7 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
void FillParameters(ParameterCollection paramCollection)
void FillParameters(ParameterCollection paramCollection)
{
foreach (var param in paramCollection) {
SqlParameter s = new SqlParameter()

3
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj

@ -280,8 +280,7 @@ @@ -280,8 +280,7 @@
<Compile Include="Project\Expressions\SimpleExpressionEvaluator\Utilities\ReflectionExtensions.cs" />
<Compile Include="Project\Expressions\SimpleExpressionEvaluator\Utilities\TypeNormalizer.cs" />
<Compile Include="Project\Expressions\UnknownFunctionException.cs" />
<Compile Include="Project\Factories\ConnectionObjectFactory.cs" />
<Compile Include="Project\Factories\DataManagerFacrory.cs" />
<Compile Include="Project\Factories\DataManagerFactory.cs" />
<Compile Include="Project\Factories\DisplayNameAttribute.cs" />
<Compile Include="Project\Factories\RendererFactory.cs" />
<Compile Include="Project\Factories\SectionFactory.cs" />

76
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/DataAccess/SqlDataAccess.cs

@ -3,9 +3,9 @@ @@ -3,9 +3,9 @@
using System;
using System.Data;
using System.Data.SqlClient;
using System.Globalization;
using ICSharpCode.Reports.Core.Factories;
using ICSharpCode.Reports.Core.Project.Interfaces;
namespace ICSharpCode.Reports.Core.DataAccess
@ -17,85 +17,43 @@ namespace ICSharpCode.Reports.Core.DataAccess @@ -17,85 +17,43 @@ namespace ICSharpCode.Reports.Core.DataAccess
public class SqlDataAccessStrategy:IDataAccessStrategy
{
private ConnectionObject connectionObject;
private ReportSettings reportSettings;
public SqlDataAccessStrategy(ReportSettings reportSettings,ConnectionObject connectionObject)
public SqlDataAccessStrategy(ReportSettings reportSettings)
{
if (reportSettings == null) {
throw new ArgumentNullException("reportSettings");
}
this.reportSettings = reportSettings;
if (connectionObject == null) {
this.connectionObject = ConnectionObjectFactory.BuildConnectionObject(reportSettings);
} else {
this.connectionObject = connectionObject;
}
}
public bool OpenConnection ()
{
CheckConnection();
return true;
}
private void CheckConnection()
{
if (this.connectionObject.Connection.State == ConnectionState.Open) {
this.connectionObject.Connection.Close();
}
this.connectionObject.Connection.Open();
}
public DataSet ReadData()
public DataSet ReadData ()
{
try {
if (this.connectionObject.Connection.State == ConnectionState.Closed) {
this.connectionObject.Connection.Open();
}
IDbCommand command = this.connectionObject.Connection.CreateCommand();
using (SqlConnection connection = new SqlConnection(this.reportSettings.ConnectionString)){
connection.Open();
if (String.IsNullOrEmpty(this.connectionObject.QueryString)) {
using (SqlCommand command = connection.CreateCommand()) {
command.CommandText = reportSettings.CommandText;
} else {
command.CommandText = this.connectionObject.QueryString;
}
command.CommandType = reportSettings.CommandType;
// We have to check if there are parameters for this Query, if so
// add them to the command
BuildQueryParameters(command,reportSettings.SqlParameters);
IDbDataAdapter adapter = connectionObject.CreateDataAdapter(command);
DataSet ds = new DataSet();
ds.Locale = CultureInfo.CurrentCulture;
adapter.Fill (ds);
return ds;
} finally {
if (this.connectionObject.Connection.State == ConnectionState.Open) {
this.connectionObject.Connection.Close();
command.CommandType = reportSettings.CommandType;
BuildQueryParameters(command,reportSettings.SqlParameters);
using (SqlDataAdapter adapter = new SqlDataAdapter(command)){
DataSet ds = new DataSet();
ds.Locale = CultureInfo.CurrentCulture;
adapter.Fill (ds);
return ds;
}
}
}
}
private static void BuildQueryParameters (IDbCommand cmd,
SqlParameterCollection parameterCollection)
{
private static void BuildQueryParameters (IDbCommand cmd,SqlParameterCollection parameterCollection){
if (parameterCollection != null && parameterCollection.Count > 0) {
IDbDataParameter cmdPar = null;
foreach (SqlParameter par in parameterCollection) {
cmdPar = cmd.CreateParameter();
var cmdPar = cmd.CreateParameter();
cmdPar.ParameterName = par.ParameterName;
Console.WriteLine("");
Console.WriteLine("BuildQueryParameters {0} - {1}",par.ParameterName,par.ParameterValue);
if (par.DataType != System.Data.DbType.Binary) {
cmdPar.DbType = par.DataType;
cmdPar.Value = par.ParameterValue;

14
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/DataManager.cs

@ -34,7 +34,7 @@ namespace ICSharpCode.Reports.Core @@ -34,7 +34,7 @@ namespace ICSharpCode.Reports.Core
private string dataMember;
private IDataViewStrategy dataViewStrategy;
private IDataNavigator dataNavigator;
private IDataAccessStrategy dataAccess;
// private IDataAccessStrategy dataAccess;
#region Constructor - DataAccess
@ -55,15 +55,11 @@ namespace ICSharpCode.Reports.Core @@ -55,15 +55,11 @@ namespace ICSharpCode.Reports.Core
private DataManager (ReportSettings reportSettings,IDataAccessStrategy dataAccess)
{
this.dataAccess = dataAccess;
DataSet dataSet = dataAccess.ReadData();
this.Init(reportSettings,dataSet.Tables[0]);
this.dataViewStrategy = new TableStrategy((DataTable)this.dataSource,
reportSettings);
if (this.dataAccess.OpenConnection()) {
DataSet t = this.dataAccess.ReadData();
this.Init(reportSettings,t.Tables[0]);
this.dataViewStrategy = new TableStrategy((DataTable)this.dataSource,
reportSettings);
}
}
#endregion

27
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Factories/ConnectionObjectFactory.cs

@ -1,27 +0,0 @@ @@ -1,27 +0,0 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Data.Common;
namespace ICSharpCode.Reports.Core.Factories
{
/// <summary>
/// This Class is a FactoryClass for <see cref="ConnectionObject"></see>
/// </summary>
public sealed class ConnectionObjectFactory
{
private ConnectionObjectFactory()
{
}
public static ConnectionObject BuildConnectionObject (ReportSettings reportSettings)
{
if (reportSettings == null) {
throw new ArgumentNullException("reportSettings");
}
return ConnectionObject.CreateInstance(reportSettings.ConnectionString,
DbProviderFactories.GetFactory("System.Data.OleDb"));
}
}
}

13
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Factories/DataManagerFacrory.cs → src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Factories/DataManagerFactory.cs

@ -30,12 +30,13 @@ namespace ICSharpCode.Reports.Core @@ -30,12 +30,13 @@ namespace ICSharpCode.Reports.Core
connectionObject = reportParameters.ConnectionObject;
}
if (connectionObject != null) {
accesStrategy = new SqlDataAccessStrategy(reportModel.ReportSettings,connectionObject);
} else {
accesStrategy = new SqlDataAccessStrategy(reportModel.ReportSettings,null);
}
// if (connectionObject != null) {
// accesStrategy = new SqlDataAccessStrategy(reportModel.ReportSettings,connectionObject);
// } else {
// accesStrategy = new SqlDataAccessStrategy(reportModel.ReportSettings,null);
//
// }
accesStrategy = new SqlDataAccessStrategy(reportModel.ReportSettings);
dataManager = DataManager.CreateInstance(reportModel.ReportSettings,accesStrategy);
if (dataManager == null) {
throw new MissingDataManagerException();

8
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Factories/SectionFactory.cs

@ -19,13 +19,13 @@ namespace ICSharpCode.Reports.Core @@ -19,13 +19,13 @@ namespace ICSharpCode.Reports.Core
{
}
public static BaseSection Create(string name) {
if (String.IsNullOrEmpty(name)) {
public static BaseSection Create(string sectionName) {
if (String.IsNullOrEmpty(sectionName)) {
String str = String.Format(System.Globalization.CultureInfo.CurrentCulture,
"<{0}>",name);
"<{0}>",sectionName);
throw new UnknownItemException(str);
}
return new BaseSection(name);
return new BaseSection(sectionName);
}
}

1
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Interfaces/IDataAccessStrategy.cs

@ -11,7 +11,6 @@ namespace ICSharpCode.Reports.Core.Project.Interfaces @@ -11,7 +11,6 @@ namespace ICSharpCode.Reports.Core.Project.Interfaces
/// </summary>
public interface IDataAccessStrategy
{
bool OpenConnection ();
DataSet ReadData();
}
}

1
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/ReportEngine.cs

@ -10,7 +10,6 @@ using System.Windows.Forms; @@ -10,7 +10,6 @@ using System.Windows.Forms;
using System.Xml;
using ICSharpCode.Reports.Core.BaseClasses;
using ICSharpCode.Reports.Core.Exporter;
using ICSharpCode.Reports.Core.Factories;
using ICSharpCode.Reports.Core.Globals;
using ICSharpCode.Reports.Core.Interfaces;

Loading…
Cancel
Save