PageRenderTime 57ms CodeModel.GetById 27ms RepoModel.GetById 0ms app.codeStats 0ms

/Plugins/GizmoBeach.Components/ServiceLayer/ServiceClassesAndCommonBaseClassForDbContextServiceLayerObjects.cs

http://github.com/kahanu/CondorXE
C# | 357 lines | 305 code | 39 blank | 13 comment | 4 complexity | 44b4b8a7e41ecfe8fa44e59101fdf021 MD5 | raw file
  1. using System;
  2. using System.Linq;
  3. using Condor.Core;
  4. using Condor.Core.Interfaces;
  5. using MyMeta;
  6. namespace GizmoBeach.Components.ServiceLayer
  7. {
  8. public class ServiceClassesAndCommonBaseClassForDbContextServiceLayerObjects : RenderBase, IServiceObjects
  9. {
  10. #region ctors
  11. private readonly RequestContext _context;
  12. public ServiceClassesAndCommonBaseClassForDbContextServiceLayerObjects(RequestContext context)
  13. : base(context.Zeus.Output)
  14. {
  15. this._context = context;
  16. }
  17. #endregion
  18. #region IRenderObject Members
  19. public void Render()
  20. {
  21. _context.Dialog.InitDialog(_context.Database.Tables.Count);
  22. _context.FileList.Add("");
  23. _context.FileList.Add("Generated ServiceClassesForDbContext Service Layer interfaces: ");
  24. RenderServiceCRUDInterface();
  25. foreach (string tableName in _script.Tables)
  26. {
  27. _context.Dialog.Display("Adding I" + tableName + "Service Interface");
  28. ITable table = _context.Database.Tables[tableName];
  29. RenderInterface(table);
  30. }
  31. _context.Dialog.InitDialog(_context.Database.Tables.Count);
  32. _context.FileList.Add("");
  33. _context.FileList.Add("Generated ServiceClassesForDbContext Service Layer Base class. ");
  34. RenderServiceBaseClass();
  35. //foreach (string tableName in _script.Tables)
  36. //{
  37. // _context.Dialog.Display("Adding " + tableName + "ServiceBase class");
  38. // ITable table = _context.Database.Tables[tableName];
  39. // RenderServiceBaseClass(table);
  40. //}
  41. _context.Dialog.InitDialog(_context.Database.Tables.Count);
  42. _context.FileList.Add("");
  43. _context.FileList.Add("Generated ServiceClassesForDbContext Service Layer classes: ");
  44. foreach (string tableName in _script.Tables)
  45. {
  46. _context.Dialog.Display("Adding " + tableName + "Service class");
  47. ITable table = _context.Database.Tables[tableName];
  48. RenderConcreteClass(table);
  49. }
  50. }
  51. #endregion
  52. #region Private Methods
  53. private void RenderServiceCRUDInterface()
  54. {
  55. _hdrUtil.WriteClassHeader(_output);
  56. _output.autoTabLn("using System;");
  57. _output.autoTabLn("using System.Collections.Generic;");
  58. _output.autoTabLn("using System.Linq;");
  59. _output.autoTabLn("using System.Linq.Expressions;");
  60. _output.autoTabLn("");
  61. _output.autoTabLn("namespace " + _script.Settings.ServiceLayer.ServiceNamespace + ".Generated");
  62. _output.autoTabLn("{");
  63. _output.tabLevel++;
  64. _output.autoTabLn("public interface IService<TEntity>");
  65. _output.autoTabLn("{");
  66. _output.tabLevel++;
  67. _output.autoTabLn("IEnumerable<TEntity> Get(");
  68. _output.tabLevel++;
  69. _output.autoTabLn("Expression<Func<TEntity, bool>> filter = null,");
  70. _output.autoTabLn("Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null,");
  71. _output.autoTabLn("string includeProperties = \"\");");
  72. _output.tabLevel--;
  73. _output.autoTabLn("");
  74. _output.autoTabLn("TEntity GetById(object id);");
  75. _output.autoTabLn("void Insert(TEntity entity);");
  76. _output.autoTabLn("void Delete(object id);");
  77. _output.autoTabLn("void Delete(TEntity entityToDelete);");
  78. _output.autoTabLn("void Update(TEntity entityToUpdate);");
  79. _output.tabLevel--;
  80. _output.autoTabLn("}");
  81. _output.tabLevel--;
  82. _output.autoTabLn("}");
  83. _context.FileList.Add(" IService.cs");
  84. SaveOutput(CreateFullPath(_script.Settings.ServiceLayer.ServiceNamespace + "\\Generated", "IService.cs"), SaveActions.Overwrite);
  85. }
  86. private void RenderInterface(ITable table)
  87. {
  88. _hdrUtil.WriteClassHeader(_output);
  89. _output.autoTabLn("using System;");
  90. _output.autoTabLn("using System.Linq;");
  91. _output.autoTabLn("using " + _script.Settings.BusinessObjects.BusinessObjectsNamespace + ";");
  92. _output.autoTabLn("using " + _script.Settings.ServiceLayer.ServiceNamespace + ".Generated;");
  93. _output.autoTabLn("");
  94. _output.autoTabLn("namespace " + _script.Settings.ServiceLayer.ServiceNamespace + ".Interfaces");
  95. _output.autoTabLn("{");
  96. _output.tabLevel++;
  97. _output.autoTabLn("public interface I" + StringFormatter.CleanUpClassName(table.Name) + "Service : IService<" + StringFormatter.CleanUpClassName(table.Name) + ">");
  98. _output.autoTabLn("{");
  99. // Updated 7/15/2014 - set a custom member for SiteSettings - used by King Wilder
  100. if (table.Name == "SiteSetting")
  101. {
  102. _output.tabLevel++;
  103. _output.autoTabLn("SiteSetting GetByKey(string key);");
  104. _output.tabLevel--;
  105. }
  106. _output.autoTabLn("}");
  107. _output.tabLevel--;
  108. _output.autoTabLn("}");
  109. _context.FileList.Add(" I" + StringFormatter.CleanUpClassName(table.Name) + "Service.cs");
  110. SaveOutput(CreateFullPath(_script.Settings.ServiceLayer.ServiceNamespace + "\\Interfaces", "I" + StringFormatter.CleanUpClassName(table.Name) + "Service.cs"), SaveActions.DontOverwrite);
  111. }
  112. /// <summary>
  113. /// New! Added 12/30/2013
  114. /// Streamlined the CRUD operations into a single base class instead of a base class
  115. /// for each entity.
  116. /// </summary>
  117. private void RenderServiceBaseClass()
  118. {
  119. _hdrUtil.WriteClassHeader(_output);
  120. _output.autoTabLn("using System;");
  121. _output.autoTabLn("using System.Collections.Generic;");
  122. _output.autoTabLn("using System.Linq;");
  123. _output.autoTabLn("using " + _script.Settings.DataOptions.DataObjectsNamespace + ".Generated;");
  124. _output.autoTabLn("");
  125. _output.autoTabLn("namespace " + _script.Settings.ServiceLayer.ServiceNamespace + ".Generated");
  126. _output.autoTabLn("{");
  127. _output.tabLevel++;
  128. _output.autoTabLn("/// <summary>");
  129. _output.autoTabLn("/// The common base class for CRUD operations.");
  130. _output.autoTabLn("/// </summary>");
  131. _output.autoTabLn("/// <typeparam name=\"T\">the business object</typeparam>");
  132. _output.autoTabLn("/// <typeparam name=\"TInterface\">the data objects repository interface</typeparam>");
  133. _output.autoTabLn("public class ServiceBase<T, TInterface> : IService<T> where TInterface : IRepository<T>");
  134. _output.autoTabLn("{");
  135. _output.tabLevel++;
  136. _output.autoTabLn("#region Constructors");
  137. _output.autoTabLn("protected readonly TInterface _dao;");
  138. _output.autoTabLn("");
  139. _output.autoTabLn("public ServiceBase(TInterface dao)");
  140. _output.autoTabLn("{");
  141. _output.tabLevel++;
  142. _output.autoTabLn("this._dao = dao;");
  143. _output.tabLevel--;
  144. _output.autoTabLn("} ");
  145. _output.autoTabLn("#endregion");
  146. _output.autoTabLn("");
  147. _output.autoTabLn("#region CRUD Operations");
  148. _output.autoTabLn("public IEnumerable<T> Get(System.Linq.Expressions.Expression<Func<T, bool>> filter = null, Func<IQueryable<T>, IOrderedQueryable<T>> orderBy = null, string includeProperties = \"\")");
  149. _output.autoTabLn("{");
  150. _output.tabLevel++;
  151. _output.autoTabLn("return _dao.Get(filter, orderBy, includeProperties);");
  152. _output.tabLevel--;
  153. _output.autoTabLn("}");
  154. _output.autoTabLn("");
  155. _output.autoTabLn("public T GetById(object id)");
  156. _output.autoTabLn("{");
  157. _output.tabLevel++;
  158. _output.autoTabLn("return _dao.GetById(id);");
  159. _output.tabLevel--;
  160. _output.autoTabLn("}");
  161. _output.autoTabLn("");
  162. _output.autoTabLn("public void Insert(T entity)");
  163. _output.autoTabLn("{");
  164. _output.tabLevel++;
  165. _output.autoTabLn("_dao.Insert(entity);");
  166. _output.tabLevel--;
  167. _output.autoTabLn("}");
  168. _output.autoTabLn("");
  169. _output.autoTabLn("public void Delete(object id)");
  170. _output.autoTabLn("{");
  171. _output.tabLevel++;
  172. _output.autoTabLn("T entity = _dao.GetById(id);");
  173. _output.autoTabLn("_dao.Delete(entity);");
  174. _output.tabLevel--;
  175. _output.autoTabLn("}");
  176. _output.autoTabLn("");
  177. _output.autoTabLn("public void Delete(T entityToDelete)");
  178. _output.autoTabLn("{");
  179. _output.tabLevel++;
  180. _output.autoTabLn("_dao.Delete(entityToDelete);");
  181. _output.tabLevel--;
  182. _output.autoTabLn("}");
  183. _output.autoTabLn("");
  184. _output.autoTabLn("public void Update(T entityToUpdate)");
  185. _output.autoTabLn("{");
  186. _output.tabLevel++;
  187. _output.autoTabLn("_dao.Update(entityToUpdate);");
  188. _output.tabLevel--;
  189. _output.autoTabLn("}");
  190. _output.autoTabLn("#endregion");
  191. _output.tabLevel--;
  192. _output.autoTabLn("}");
  193. _output.tabLevel--;
  194. _output.autoTabLn("}");
  195. _context.FileList.Add(" ServiceBase.cs");
  196. SaveOutput(CreateFullPath(_script.Settings.ServiceLayer.ServiceNamespace + "\\Generated", "ServiceBase.cs"), SaveActions.Overwrite);
  197. }
  198. private void RenderServiceBaseClass(ITable table)
  199. {
  200. _hdrUtil.WriteClassHeader(_output);
  201. _output.autoTabLn("using System;");
  202. _output.autoTabLn("using System.Collections.Generic;");
  203. _output.autoTabLn("using System.Linq;");
  204. _output.autoTabLn("using " + _script.Settings.BusinessObjects.BusinessObjectsNamespace + ";");
  205. _output.autoTabLn("using " + _script.Settings.DataOptions.DataObjectsNamespace + ".Interfaces;");
  206. _output.autoTabLn("");
  207. _output.autoTabLn("namespace " + _script.Settings.ServiceLayer.ServiceNamespace +".Generated");
  208. _output.autoTabLn("{");
  209. _output.tabLevel++;
  210. _output.autoTabLn("public class " + StringFormatter.CleanUpClassName(table.Name) + "ServiceBase : IService<" + _context.Utility.BuildModelClassWithNameSpace(table.Name) + ">");
  211. _output.autoTabLn("{");
  212. _output.tabLevel++;
  213. _output.autoTabLn("#region Constructors");
  214. _output.autoTabLn("protected readonly I" + StringFormatter.CleanUpClassName(table.Name) + _script.Settings.DataOptions.ClassSuffix.Name + " _" + StringFormatter.CamelCasing(StringFormatter.CleanUpClassName(table.Name)) + _script.Settings.DataOptions.ClassSuffix.Name + ";");
  215. _output.autoTabLn("");
  216. _output.autoTabLn("public " + StringFormatter.CleanUpClassName(table.Name) + "ServiceBase(I" + StringFormatter.CleanUpClassName(table.Name) + _script.Settings.DataOptions.ClassSuffix.Name + " " + StringFormatter.CamelCasing(StringFormatter.CleanUpClassName(table.Name)) + _script.Settings.DataOptions.ClassSuffix.Name + ")");
  217. _output.autoTabLn("{");
  218. _output.tabLevel++;
  219. _output.autoTabLn("this._" + StringFormatter.CamelCasing(StringFormatter.CleanUpClassName(table.Name)) + _script.Settings.DataOptions.ClassSuffix.Name + " = " + StringFormatter.CamelCasing(StringFormatter.CleanUpClassName(table.Name)) + _script.Settings.DataOptions.ClassSuffix.Name + ";");
  220. _output.tabLevel--;
  221. _output.autoTabLn("} ");
  222. _output.autoTabLn("#endregion");
  223. _output.autoTabLn("");
  224. _output.autoTabLn("#region CRUD Methods");
  225. _output.autoTabLn("public IEnumerable<" + StringFormatter.CleanUpClassName(table.Name) + "> Get(System.Linq.Expressions.Expression<Func<" + StringFormatter.CleanUpClassName(table.Name) + ", bool>> filter = null, Func<IQueryable<" + StringFormatter.CleanUpClassName(table.Name) + ">, IOrderedQueryable<" + StringFormatter.CleanUpClassName(table.Name) + ">> orderBy = null, string includeProperties = \"\")");
  226. _output.autoTabLn("{");
  227. _output.tabLevel++;
  228. _output.autoTabLn("return _" + StringFormatter.CamelCasing(StringFormatter.CleanUpClassName(table.Name)) + _script.Settings.DataOptions.ClassSuffix.Name + ".Get(filter, orderBy, includeProperties);");
  229. _output.tabLevel--;
  230. _output.autoTabLn("}");
  231. _output.autoTabLn("");
  232. _output.autoTabLn("public " + StringFormatter.CleanUpClassName(table.Name) + " GetById(object id)");
  233. _output.autoTabLn("{");
  234. _output.tabLevel++;
  235. _output.autoTabLn("return _" + StringFormatter.CamelCasing(StringFormatter.CleanUpClassName(table.Name)) + _script.Settings.DataOptions.ClassSuffix.Name + ".GetById(id);");
  236. _output.tabLevel--;
  237. _output.autoTabLn("}");
  238. _output.autoTabLn("");
  239. _output.autoTabLn("public void Insert(" + StringFormatter.CleanUpClassName(table.Name) + " entity)");
  240. _output.autoTabLn("{");
  241. _output.tabLevel++;
  242. _output.autoTabLn("_" + StringFormatter.CamelCasing(StringFormatter.CleanUpClassName(table.Name)) + _script.Settings.DataOptions.ClassSuffix.Name + ".Insert(entity);");
  243. _output.tabLevel--;
  244. _output.autoTabLn("}");
  245. _output.autoTabLn("");
  246. _output.autoTabLn("public void Delete(object id)");
  247. _output.autoTabLn("{");
  248. _output.tabLevel++;
  249. _output.autoTabLn(StringFormatter.CleanUpClassName(table.Name) + " entity = _" + StringFormatter.CamelCasing(StringFormatter.CleanUpClassName(table.Name)) + _script.Settings.DataOptions.ClassSuffix.Name + ".GetById(id);");
  250. _output.autoTabLn("_" + StringFormatter.CamelCasing(StringFormatter.CleanUpClassName(table.Name)) + _script.Settings.DataOptions.ClassSuffix.Name + ".Delete(entity);");
  251. _output.tabLevel--;
  252. _output.autoTabLn("}");
  253. _output.autoTabLn("");
  254. _output.autoTabLn("public void Delete(" + StringFormatter.CleanUpClassName(table.Name) + " entityToDelete)");
  255. _output.autoTabLn("{");
  256. _output.tabLevel++;
  257. _output.autoTabLn("_" + StringFormatter.CamelCasing(StringFormatter.CleanUpClassName(table.Name)) + _script.Settings.DataOptions.ClassSuffix.Name + ".Delete(entityToDelete);");
  258. _output.tabLevel--;
  259. _output.autoTabLn("}");
  260. _output.autoTabLn("");
  261. _output.autoTabLn("public void Update(" + StringFormatter.CleanUpClassName(table.Name) + " entityToUpdate)");
  262. _output.autoTabLn("{");
  263. _output.tabLevel++;
  264. _output.autoTabLn("_" + StringFormatter.CamelCasing(StringFormatter.CleanUpClassName(table.Name)) + _script.Settings.DataOptions.ClassSuffix.Name + ".Update(entityToUpdate);");
  265. _output.tabLevel--;
  266. _output.autoTabLn("} ");
  267. _output.autoTabLn("#endregion");
  268. _output.tabLevel--;
  269. _output.autoTabLn("}");
  270. _output.tabLevel--;
  271. _output.autoTabLn("");
  272. _output.autoTabLn("}");
  273. _context.FileList.Add(" " + StringFormatter.CleanUpClassName(table.Name) + "ServiceBase.cs");
  274. SaveOutput(CreateFullPath(_script.Settings.ServiceLayer.ServiceNamespace + "\\Generated", StringFormatter.CleanUpClassName(table.Name) + "ServiceBase.cs"), SaveActions.Overwrite);
  275. }
  276. private void RenderConcreteClass(ITable table)
  277. {
  278. _hdrUtil.WriteClassHeader(_output);
  279. _output.autoTabLn("using System;");
  280. _output.autoTabLn("using System.Linq;");
  281. _output.autoTabLn("using " + _script.Settings.BusinessObjects.BusinessObjectsNamespace + ";");
  282. _output.autoTabLn("using " + _script.Settings.DataOptions.DataObjectsNamespace + ".Interfaces;");
  283. _output.autoTabLn("using " + _script.Settings.ServiceLayer.ServiceNamespace + ".Generated;");
  284. _output.autoTabLn("using " + _script.Settings.ServiceLayer.ServiceNamespace + ".Interfaces;");
  285. _output.autoTabLn("");
  286. _output.autoTabLn("namespace " + _script.Settings.ServiceLayer.ServiceNamespace);
  287. _output.autoTabLn("{");
  288. _output.tabLevel++;
  289. _output.autoTabLn("public class " + StringFormatter.CleanUpClassName(table.Name) + "Service : ServiceBase<" + StringFormatter.CleanUpClassName(table.Name) + ", I" + StringFormatter.CleanUpClassName(table.Name) + "Dao>, I" + StringFormatter.CleanUpClassName(table.Name) + "Service");
  290. _output.autoTabLn("{");
  291. _output.tabLevel++;
  292. _output.autoTabLn("public " + StringFormatter.CleanUpClassName(table.Name) + "Service(I" + StringFormatter.CleanUpClassName(table.Name) + _script.Settings.DataOptions.ClassSuffix.Name + " " + StringFormatter.CamelCasing(StringFormatter.CleanUpClassName(table.Name)) + _script.Settings.DataOptions.ClassSuffix.Name + ")");
  293. _output.tabLevel++;
  294. _output.autoTabLn(": base(" + StringFormatter.CamelCasing(StringFormatter.CleanUpClassName(table.Name)) + _script.Settings.DataOptions.ClassSuffix.Name + ")");
  295. _output.tabLevel--;
  296. _output.autoTabLn("{");
  297. _output.autoTabLn("");
  298. _output.autoTabLn("}");
  299. // Updated 7/15/2014 - by King Wilder - write custom code for SiteSetting - used by King Wilder
  300. if (table.Name == "SiteSetting")
  301. {
  302. _output.autoTabLn("public SiteSetting GetByKey(string key)");
  303. _output.autoTabLn("{");
  304. _output.tabLevel++;
  305. _output.autoTabLn("return _dao.Get(s => s.Name == key).SingleOrDefault();");
  306. _output.tabLevel--;
  307. _output.autoTabLn("}");
  308. }
  309. _output.tabLevel--;
  310. _output.autoTabLn("}");
  311. _output.tabLevel--;
  312. _output.autoTabLn("}");
  313. _context.FileList.Add(" " + StringFormatter.CleanUpClassName(table.Name) + "Service.cs");
  314. SaveOutput(CreateFullPath(_script.Settings.ServiceLayer.ServiceNamespace, StringFormatter.CleanUpClassName(table.Name) + "Service.cs"), SaveActions.DontOverwrite);
  315. }
  316. #endregion
  317. }
  318. }