Commit 64b5867884ee17abc5d7a33ba9adb1779a1a094b

Authored by Schwirg László
1 parent ef01ad2f

- egy-két felesleges lokális változó deklaráció törlése

Vrh.OneReport/Enums.cs
@@ -20,11 +20,6 @@ namespace Vrh.OneReport @@ -20,11 +20,6 @@ namespace Vrh.OneReport
20 /// <summary> 20 /// <summary>
21 /// IENumerable adattibpust visszaadó plugin 21 /// IENumerable adattibpust visszaadó plugin
22 /// </summary> 22 /// </summary>
23 - Plugin,  
24 -  
25 - /// <summary>  
26 - /// IENumerable adattibpust visszaadó plugin  
27 - /// </summary>  
28 DataPlugin, 23 DataPlugin,
29 24
30 /// <summary> 25 /// <summary>
Vrh.OneReport/ReportService.cs
@@ -764,30 +764,16 @@ namespace Vrh.OneReport @@ -764,30 +764,16 @@ namespace Vrh.OneReport
764 if (parameters != null && !parameters.AllKeys.Contains("SQLTEXT")) { parameters.Add("SQLTEXT", dataset.Command);} 764 if (parameters != null && !parameters.AllKeys.Contains("SQLTEXT")) { parameters.Add("SQLTEXT", dataset.Command);}
765 break; 765 break;
766 case DatasetTypes.SQLTextPlugin: 766 case DatasetTypes.SQLTextPlugin:
767 - if (dataset.Plugin != null)  
768 - {  
769 - dataset.Command = dataset.Plugin.GetSqlText(dataset.PluginViewName, dataset.ConnectionString, dataset.PluginAssemblyXml, dataset.DatasetXml, parameters);  
770 - }  
771 - else if (dataset.GetMethod != null)  
772 - {  
773 - dataset.Command = (string)dataset.GetMethod.Invoke(dataset.Plugin, new object[] { dataset.PluginViewName, dataset.ConnectionString, dataset.PluginAssemblyXml, dataset.DatasetXml, parameters });  
774 - } 767 + if (dataset.Plugin == null || dataset.GetMethod == null) { throw new Exception((dataset.Plugin == null?"Plugin object is null! ":"") + (dataset.GetMethod == null ? "Method object is null!" : "")); }
  768 + dataset.Command = (string)dataset.GetMethod.Invoke(dataset.Plugin, new object[] { dataset.PluginViewName, dataset.ConnectionString, dataset.PluginAssemblyXml, dataset.DatasetXml, parameters });
775 if (parameters == null) { } 769 if (parameters == null) { }
776 else if (parameters.AllKeys.Contains("SQLTEXT")) { parameters["SQLTEXT"]=dataset.Command; } 770 else if (parameters.AllKeys.Contains("SQLTEXT")) { parameters["SQLTEXT"]=dataset.Command; }
777 else { parameters.Add("SQLTEXT", dataset.Command); } 771 else { parameters.Add("SQLTEXT", dataset.Command); }
778 newReportDataSource = new ReportDataSource(dataset.Name, LoadDataTable(dataset.Type, dataset.ConnectionString, dataset.Command)); 772 newReportDataSource = new ReportDataSource(dataset.Name, LoadDataTable(dataset.Type, dataset.ConnectionString, dataset.Command));
779 break; 773 break;
780 case DatasetTypes.DataPlugin: 774 case DatasetTypes.DataPlugin:
781 - IEnumerable<object> resultdata = null;  
782 - if (dataset.Plugin != null)  
783 - {  
784 - resultdata = (IEnumerable<object>)dataset.Plugin.GetData(dataset.PluginViewName, dataset.ConnectionString, dataset.PluginAssemblyXml, dataset.DatasetXml,parameters);  
785 - }  
786 - else if (dataset.GetMethod != null)  
787 - {  
788 - resultdata = (IEnumerable<object>)dataset.GetMethod.Invoke(dataset.Plugin, new object[] { dataset.PluginViewName, dataset.ConnectionString, dataset.PluginAssemblyXml, dataset.DatasetXml,parameters });  
789 - }  
790 - var returndataList = resultdata.ToList(); 775 + if (dataset.Plugin == null || dataset.GetMethod == null) { throw new Exception((dataset.Plugin == null ? "Plugin object is null! " : "") + (dataset.GetMethod == null ? "Method object is null!" : "")); }
  776 + var returndataList = ((IEnumerable<object>)dataset.GetMethod.Invoke(dataset.Plugin, new object[] { dataset.PluginViewName, dataset.ConnectionString, dataset.PluginAssemblyXml, dataset.DatasetXml, parameters })); //.ToList();
791 newReportDataSource = new ReportDataSource(dataset.Name, returndataList); 777 newReportDataSource = new ReportDataSource(dataset.Name, returndataList);
792 break; 778 break;
793 default: break;//ide nem jöhet, mert már korábban kibukna 779 default: break;//ide nem jöhet, mert már korábban kibukna
@@ -837,9 +823,7 @@ namespace Vrh.OneReport @@ -837,9 +823,7 @@ namespace Vrh.OneReport
837 ReportService.ExportSQLText(dataset.ConnectionString, dataset.Command, dataset.ExportFile, this.Report.Timeout.SqlQuery, allformat: this.Report.Formats.AllFormats); 823 ReportService.ExportSQLText(dataset.ConnectionString, dataset.Command, dataset.ExportFile, this.Report.Timeout.SqlQuery, allformat: this.Report.Formats.AllFormats);
838 break; 824 break;
839 case DatasetTypes.DataPlugin: 825 case DatasetTypes.DataPlugin:
840 - IEnumerable<object> resultdata = (IEnumerable<object>)(dataset.Plugin != null  
841 - ? dataset.Plugin.GetData(dataset.PluginViewName, dataset.ConnectionString, dataset.PluginAssemblyXml, dataset.DatasetXml, this.Report.Parameters)  
842 - : dataset.GetMethod.Invoke(dataset.Plugin, new object[] { dataset.PluginViewName, dataset.ConnectionString, dataset.PluginAssemblyXml, dataset.DatasetXml, this.Report.Parameters })); 826 + var resultdata = (IEnumerable<object>)dataset.GetMethod.Invoke(dataset.Plugin, new object[] { dataset.PluginViewName, dataset.ConnectionString, dataset.PluginAssemblyXml, dataset.DatasetXml, this.Report.Parameters });
843 //TODO: ezt meg kell csinálni!!!! 827 //TODO: ezt meg kell csinálni!!!!
844 ReportService.ExportSQLData(dataset.ConnectionString, resultdata, dataset.ExportFile, this.Report.Timeout.SqlQuery, allformat: this.Report.Formats.AllFormats); 828 ReportService.ExportSQLData(dataset.ConnectionString, resultdata, dataset.ExportFile, this.Report.Timeout.SqlQuery, allformat: this.Report.Formats.AllFormats);
845 break; 829 break;
Vrh.OneReport/XmlProcessing/Dataset.cs
@@ -107,9 +107,14 @@ namespace Vrh.OneReport @@ -107,9 +107,14 @@ namespace Vrh.OneReport
107 public XElement DatasetXml { get; set; } 107 public XElement DatasetXml { get; set; }
108 108
109 /// <summary> 109 /// <summary>
  110 + /// DatasetTypes: SQL, Plugin, DataPlugin, SQLTextPlugin,
  111 + /// </summary>
  112 + public DatasetTypes DatasetType { get; set; }
  113 +
  114 + /// <summary>
110 /// A riport adatait előállító plugin kerül ide bele 115 /// A riport adatait előállító plugin kerül ide bele
111 /// </summary> 116 /// </summary>
112 - public IOneReport Plugin { get; set; } 117 + public object Plugin { get; set; }
113 118
114 /// <summary> 119 /// <summary>
115 /// A plugin-ban levő meghívandó metódus leírója 120 /// A plugin-ban levő meghívandó metódus leírója
@@ -125,23 +130,22 @@ namespace Vrh.OneReport @@ -125,23 +130,22 @@ namespace Vrh.OneReport
125 /// <param name="reportid">A riport id-ja; exception üzenetben kerül CSAK felhasználásra</param> 130 /// <param name="reportid">A riport id-ja; exception üzenetben kerül CSAK felhasználásra</param>
126 /// <param name="datasetxelement">A "Dataset" elem.</param> 131 /// <param name="datasetxelement">A "Dataset" elem.</param>
127 /// /// <param name="datasourcelist">Alapértelmezett adatok a plugin típusú működéshez</param> 132 /// /// <param name="datasourcelist">Alapértelmezett adatok a plugin típusú működéshez</param>
128 - /// <param name="defaultconnectionstring">az alapértelmezett kapcsolat leíró arra az esetre, ha a datasetxml-ben nincs megadva</param>  
129 - public Dataset(string reportid,XElement datasetxelement,List<PluginDescriptor> datasourcelist,string defaultconnectionstring) 133 + /// <param name="defaultconnectionstringstorename">az alapértelmezett kapcsolat leíró arra az esetre, ha a datasetxml-ben nincs megadva</param>
  134 + public Dataset(string reportid,XElement datasetxelement,List<PluginDescriptor> datasourcelist,string defaultconnectionstringstorename)
130 { 135 {
131 if (datasetxelement != null) 136 if (datasetxelement != null)
132 { 137 {
133 this.Name = GetValue(AttributeNames.NAME, datasetxelement, "", true, true); 138 this.Name = GetValue(AttributeNames.NAME, datasetxelement, "", true, true);
134 - var plugintype = GetEnumValue(datasetxelement.Attribute(AttributeNames.TYPE), DatasetTypes.DataPlugin);  
135 - IOneReport plugin; MethodInfo sqlgetmethod;  
136 - switch (plugintype) 139 + this.DatasetType = GetEnumValue(datasetxelement.Attribute(AttributeNames.TYPE), DatasetTypes.DataPlugin);
  140 + switch (this.DatasetType)
137 { 141 {
138 default: throw new ApplicationException($"Unknown Dataset type! Type:{this.Type}. Report Id:{reportid}."); 142 default: throw new ApplicationException($"Unknown Dataset type! Type:{this.Type}. Report Id:{reportid}.");
139 case DatasetTypes.SQL: 143 case DatasetTypes.SQL:
140 { 144 {
141 this.Type = DatasetTypes.SQL; 145 this.Type = DatasetTypes.SQL;
142 var connectionstringstorename = GetValue(AttributeNames.CONNECTIONSTRING, datasetxelement, (string)null); 146 var connectionstringstorename = GetValue(AttributeNames.CONNECTIONSTRING, datasetxelement, (string)null);
143 - if (string.IsNullOrWhiteSpace(connectionstringstorename)) { connectionstringstorename = defaultconnectionstring;}  
144 - this.ConnectionString = ConnectionStringStore.Get(connectionstringstorename); 147 + if (string.IsNullOrWhiteSpace(connectionstringstorename)) { connectionstringstorename = defaultconnectionstringstorename;}
  148 + this.ConnectionString = ConnectionStringStore.GetSQL(connectionstringstorename);
145 this.Command = GetValue(datasetxelement, "", true, true); 149 this.Command = GetValue(datasetxelement, "", true, true);
146 break; 150 break;
147 } 151 }
@@ -160,8 +164,7 @@ namespace Vrh.OneReport @@ -160,8 +164,7 @@ namespace Vrh.OneReport
160 this.PluginMethodName = plugindescriptor.PluginMethodName; 164 this.PluginMethodName = plugindescriptor.PluginMethodName;
161 this.PluginViewName = GetValue(AttributeNames.PLUGINVIEWNAME, datasetxelement, (string)null); 165 this.PluginViewName = GetValue(AttributeNames.PLUGINVIEWNAME, datasetxelement, (string)null);
162 if (string.IsNullOrWhiteSpace(this.PluginViewName)) { this.PluginViewName = this.Name; } 166 if (string.IsNullOrWhiteSpace(this.PluginViewName)) { this.PluginViewName = this.Name; }
163 - LoadPlugin(this.PluginAssemblyPath, this.PluginTypeFullName, this.PluginMethodName, out plugin, out sqlgetmethod);  
164 - this.Plugin = plugin; 167 + this.Plugin = GetPlugin(this.DatasetType, this.PluginAssemblyPath, this.PluginTypeFullName, this.PluginMethodName, new object[] { this.ConnectionString }, out MethodInfo sqlgetmethod);
165 this.GetMethod = sqlgetmethod; 168 this.GetMethod = sqlgetmethod;
166 this.DatasetXml = datasetxelement; 169 this.DatasetXml = datasetxelement;
167 break; 170 break;
@@ -169,39 +172,65 @@ namespace Vrh.OneReport @@ -169,39 +172,65 @@ namespace Vrh.OneReport
169 } 172 }
170 } 173 }
171 } 174 }
172 - private void LoadPlugin(string assemblypath, string plugintypename, string pluginmethodname, out IOneReport plugin, out MethodInfo getsqlmethod) 175 + private object GetPlugin(DatasetTypes datasettype, string assemblypath, string plugintypename, string pluginmethodname, object[] plugintypeconstructorparameters, out MethodInfo getmethod)
173 { 176 {
174 try 177 try
175 { 178 {
176 - plugin = null;  
177 - getsqlmethod = null; 179 + object plugin = null;
  180 + getmethod = null;
178 //Assembly asm = Assembly.LoadFile(assemblypath); 181 //Assembly asm = Assembly.LoadFile(assemblypath);
179 Assembly asm = Assembly.LoadFrom(assemblypath); 182 Assembly asm = Assembly.LoadFrom(assemblypath);
180 - if (!string.IsNullOrWhiteSpace(plugintypename))  
181 - {  
182 - System.Type type = asm.GetExportedTypes().FirstOrDefault(x => x.FullName == plugintypename && x.IsAssignableFrom(x));  
183 - if (type == null) { throw new ApplicationException(""); }  
184 - if (string.IsNullOrWhiteSpace(pluginmethodname)) { pluginmethodname = nameof(IOneReport.GetSqlText); }  
185 - getsqlmethod = type.GetMethod(pluginmethodname);  
186 - if (getsqlmethod == null) { throw new ApplicationException(""); }  
187 - plugin = null;  
188 - }  
189 - else  
190 - {  
191 - plugintypename = typeof(IOneReport).FullName;  
192 - pluginmethodname = nameof(IOneReport.GetSqlText);  
193 - System.Type type = asm.GetExportedTypes().FirstOrDefault(x => typeof(IOneReport).IsAssignableFrom(x));  
194 - if (type == null) { throw new ApplicationException(""); }  
195 - getsqlmethod = null;  
196 - plugin = (IOneReport)Activator.CreateInstance(type);  
197 - } 183 + if (string.IsNullOrWhiteSpace(plugintypename)) plugintypename = typeof(IOneReport).FullName;
  184 + if (string.IsNullOrWhiteSpace(pluginmethodname)) pluginmethodname = datasettype == DatasetTypes.DataPlugin ? nameof(IOneReport.GetData) : datasettype == DatasetTypes.SQLTextPlugin ? nameof(IOneReport.GetSqlText) : null;
  185 +
  186 + var ptype = asm.GetExportedTypes().FirstOrDefault(x => x.FullName == plugintypename && x.IsAssignableFrom(x));
  187 + if (ptype == null) { throw new ApplicationException("Type not found!"); }
  188 + plugin = Activator.CreateInstance(ptype, plugintypeconstructorparameters);
  189 + if (plugin == null) { throw new ApplicationException("Type constructor failed!"); }
  190 + getmethod = ptype.GetMethod(pluginmethodname);
  191 + if (getmethod == null) { throw new ApplicationException("Method not found!"); }
  192 + return plugin;
198 } 193 }
199 catch (Exception ex) 194 catch (Exception ex)
200 { 195 {
201 if (string.IsNullOrWhiteSpace(pluginmethodname)) { pluginmethodname = nameof(IOneReport.GetSqlText); } 196 if (string.IsNullOrWhiteSpace(pluginmethodname)) { pluginmethodname = nameof(IOneReport.GetSqlText); }
202 - throw new ApplicationException($"The implementation of the referred interface or method in the assembly, or the assembly (DLL) itself was not found! Assembly='{this.PluginAssemblyPath}', type='{plugintypename}',method='{pluginmethodname}'", ex); 197 + throw new ApplicationException($"ERROR Not found!!! the implementation of the referred interface or method in the assembly! Assembly='{this.PluginAssemblyPath}', type='{plugintypename}',method='{pluginmethodname}'", ex);
  198 + return null;
203 } 199 }
204 } 200 }
  201 + //private void LoadPluginBAK(string assemblypath, string plugintypename, string pluginmethodname, out IOneReport plugin, out MethodInfo getsqlmethod)
  202 + //{
  203 + // try
  204 + // {
  205 + // plugin = null;
  206 + // getsqlmethod = null;
  207 + // //Assembly asm = Assembly.LoadFile(assemblypath);
  208 + // Assembly asm = Assembly.LoadFrom(assemblypath);
  209 + // if (!string.IsNullOrWhiteSpace(plugintypename))
  210 + // {
  211 + // System.Type type = asm.GetExportedTypes().FirstOrDefault(x => x.FullName == plugintypename && x.IsAssignableFrom(x));
  212 + // if (type == null) { throw new ApplicationException(""); }
  213 + // plugin = (IOneReport)Activator.CreateInstance(type);
  214 + // if (string.IsNullOrWhiteSpace(pluginmethodname)) { pluginmethodname = nameof(IOneReport.GetSqlText); }
  215 + // getsqlmethod = type.GetMethod(pluginmethodname);
  216 + // if (getsqlmethod == null) { throw new ApplicationException(""); }
  217 + // }
  218 + // else
  219 + // {
  220 + // plugintypename = typeof(IOneReport).FullName;
  221 + // pluginmethodname = nameof(IOneReport.GetSqlText);
  222 + // System.Type type = asm.GetExportedTypes().FirstOrDefault(x => typeof(IOneReport).IsAssignableFrom(x));
  223 + // if (type == null) { throw new ApplicationException(""); }
  224 + // getsqlmethod = null;
  225 + // plugin = (IOneReport)Activator.CreateInstance(type);
  226 + // }
  227 + // }
  228 + // catch (Exception ex)
  229 + // {
  230 + // if (string.IsNullOrWhiteSpace(pluginmethodname)) { pluginmethodname = nameof(IOneReport.GetSqlText); }
  231 + // throw new ApplicationException($"The implementation of the referred interface or method in the assembly, or the assembly (DLL) itself was not found! Assembly='{this.PluginAssemblyPath}', type='{plugintypename}',method='{pluginmethodname}'", ex);
  232 + // }
  233 + //}
205 #endregion Constructor 234 #endregion Constructor
206 } 235 }
207 } 236 }