PageRenderTime 68ms CodeModel.GetById 39ms RepoModel.GetById 0ms app.codeStats 0ms

/Plugins/GizmoBeach.Components/ServiceLayer/ServiceClassesForDbContextServiceLayerObjects.cs

http://github.com/kahanu/CondorXE
C# | 240 lines | 213 code | 27 blank | 0 comment | 0 complexity | 2fa2e6e37db8af4ec3f9a17536343302 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 ServiceClassesForDbContextServiceLayerObjects : RenderBase, IServiceObjects
  9. {
  10. #region ctors
  11. private readonly RequestContext _context;
  12. public ServiceClassesForDbContextServiceLayerObjects(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 classes: ");
  34. foreach (string tableName in _script.Tables)
  35. {
  36. _context.Dialog.Display("Adding " + tableName + "ServiceBase class");
  37. ITable table = _context.Database.Tables[tableName];
  38. RenderServiceBaseClass(table);
  39. }
  40. _context.Dialog.InitDialog(_context.Database.Tables.Count);
  41. _context.FileList.Add("");
  42. _context.FileList.Add("Generated ServiceClassesForDbContext Service Layer classes: ");
  43. foreach (string tableName in _script.Tables)
  44. {
  45. _context.Dialog.Display("Adding " + tableName + "Service class");
  46. ITable table = _context.Database.Tables[tableName];
  47. RenderConcreteClass(table);
  48. }
  49. }
  50. #endregion
  51. #region Private Methods
  52. private void RenderServiceCRUDInterface()
  53. {
  54. _hdrUtil.WriteClassHeader(_output);
  55. _output.autoTabLn("using System;");
  56. _output.autoTabLn("using System.Collections.Generic;");
  57. _output.autoTabLn("using System.Linq;");
  58. _output.autoTabLn("using System.Linq.Expressions;");
  59. _output.autoTabLn("");
  60. _output.autoTabLn("namespace " + _script.Settings.ServiceLayer.ServiceNamespace + ".Generated");
  61. _output.autoTabLn("{");
  62. _output.tabLevel++;
  63. _output.autoTabLn("public interface IService<TEntity>");
  64. _output.autoTabLn("{");
  65. _output.tabLevel++;
  66. _output.autoTabLn("IEnumerable<TEntity> Get(");
  67. _output.tabLevel++;
  68. _output.autoTabLn("Expression<Func<TEntity, bool>> filter = null,");
  69. _output.autoTabLn("Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null,");
  70. _output.autoTabLn("string includeProperties = \"\");");
  71. _output.tabLevel--;
  72. _output.autoTabLn("");
  73. _output.autoTabLn("TEntity GetById(object id);");
  74. _output.autoTabLn("void Insert(TEntity entity);");
  75. _output.autoTabLn("void Delete(object id);");
  76. _output.autoTabLn("void Delete(TEntity entityToDelete);");
  77. _output.autoTabLn("void Update(TEntity entityToUpdate);");
  78. _output.tabLevel--;
  79. _output.autoTabLn("}");
  80. _output.tabLevel--;
  81. _output.autoTabLn("}");
  82. _context.FileList.Add(" IService.cs");
  83. SaveOutput(CreateFullPath(_script.Settings.ServiceLayer.ServiceNamespace + "\\Generated", "IService.cs"), SaveActions.Overwrite);
  84. }
  85. private void RenderInterface(ITable table)
  86. {
  87. _hdrUtil.WriteClassHeader(_output);
  88. _output.autoTabLn("using System;");
  89. _output.autoTabLn("using System.Linq;");
  90. _output.autoTabLn("using " + _script.Settings.BusinessObjects.BusinessObjectsNamespace + ";");
  91. _output.autoTabLn("using " + _script.Settings.ServiceLayer.ServiceNamespace + ".Generated;");
  92. _output.autoTabLn("");
  93. _output.autoTabLn("namespace " + _script.Settings.ServiceLayer.ServiceNamespace + ".Interfaces");
  94. _output.autoTabLn("{");
  95. _output.tabLevel++;
  96. _output.autoTabLn("public interface I" + StringFormatter.CleanUpClassName(table.Name) + "Service : IService<" + StringFormatter.CleanUpClassName(table.Name) + ">");
  97. _output.autoTabLn("{");
  98. _output.autoTabLn("}");
  99. _output.tabLevel--;
  100. _output.autoTabLn("}");
  101. _context.FileList.Add(" I" + StringFormatter.CleanUpClassName(table.Name) + "Service.cs");
  102. SaveOutput(CreateFullPath(_script.Settings.ServiceLayer.ServiceNamespace + "\\Interfaces", "I" + StringFormatter.CleanUpClassName(table.Name) + "Service.cs"), SaveActions.DontOverwrite);
  103. }
  104. private void RenderServiceBaseClass(ITable table)
  105. {
  106. _hdrUtil.WriteClassHeader(_output);
  107. _output.autoTabLn("using System;");
  108. _output.autoTabLn("using System.Collections.Generic;");
  109. _output.autoTabLn("using System.Linq;");
  110. _output.autoTabLn("using " + _script.Settings.BusinessObjects.BusinessObjectsNamespace + ";");
  111. _output.autoTabLn("using " + _script.Settings.DataOptions.DataObjectsNamespace + ".Interfaces;");
  112. _output.autoTabLn("");
  113. _output.autoTabLn("namespace " + _script.Settings.ServiceLayer.ServiceNamespace +".Generated");
  114. _output.autoTabLn("{");
  115. _output.tabLevel++;
  116. _output.autoTabLn("public class " + StringFormatter.CleanUpClassName(table.Name) + "ServiceBase : IService<" + _context.Utility.BuildModelClassWithNameSpace(table.Name) + ">");
  117. _output.autoTabLn("{");
  118. _output.tabLevel++;
  119. _output.autoTabLn("#region Constructors");
  120. _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 + ";");
  121. _output.autoTabLn("");
  122. _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 + ")");
  123. _output.autoTabLn("{");
  124. _output.tabLevel++;
  125. _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 + ";");
  126. _output.tabLevel--;
  127. _output.autoTabLn("} ");
  128. _output.autoTabLn("#endregion");
  129. _output.autoTabLn("");
  130. _output.autoTabLn("#region CRUD Methods");
  131. _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 = \"\")");
  132. _output.autoTabLn("{");
  133. _output.tabLevel++;
  134. _output.autoTabLn("return _" + StringFormatter.CamelCasing(StringFormatter.CleanUpClassName(table.Name)) + _script.Settings.DataOptions.ClassSuffix.Name + ".Get(filter, orderBy, includeProperties);");
  135. _output.tabLevel--;
  136. _output.autoTabLn("}");
  137. _output.autoTabLn("");
  138. _output.autoTabLn("public " + StringFormatter.CleanUpClassName(table.Name) + " GetById(object id)");
  139. _output.autoTabLn("{");
  140. _output.tabLevel++;
  141. _output.autoTabLn("return _" + StringFormatter.CamelCasing(StringFormatter.CleanUpClassName(table.Name)) + _script.Settings.DataOptions.ClassSuffix.Name + ".GetById(id);");
  142. _output.tabLevel--;
  143. _output.autoTabLn("}");
  144. _output.autoTabLn("");
  145. _output.autoTabLn("public void Insert(" + StringFormatter.CleanUpClassName(table.Name) + " entity)");
  146. _output.autoTabLn("{");
  147. _output.tabLevel++;
  148. _output.autoTabLn("_" + StringFormatter.CamelCasing(StringFormatter.CleanUpClassName(table.Name)) + _script.Settings.DataOptions.ClassSuffix.Name + ".Insert(entity);");
  149. _output.tabLevel--;
  150. _output.autoTabLn("}");
  151. _output.autoTabLn("");
  152. _output.autoTabLn("public void Delete(object id)");
  153. _output.autoTabLn("{");
  154. _output.tabLevel++;
  155. _output.autoTabLn(StringFormatter.CleanUpClassName(table.Name) + " entity = _" + StringFormatter.CamelCasing(StringFormatter.CleanUpClassName(table.Name)) + _script.Settings.DataOptions.ClassSuffix.Name + ".GetById(id);");
  156. _output.autoTabLn("_" + StringFormatter.CamelCasing(StringFormatter.CleanUpClassName(table.Name)) + _script.Settings.DataOptions.ClassSuffix.Name + ".Delete(entity);");
  157. _output.tabLevel--;
  158. _output.autoTabLn("}");
  159. _output.autoTabLn("");
  160. _output.autoTabLn("public void Delete(" + StringFormatter.CleanUpClassName(table.Name) + " entityToDelete)");
  161. _output.autoTabLn("{");
  162. _output.tabLevel++;
  163. _output.autoTabLn("_" + StringFormatter.CamelCasing(StringFormatter.CleanUpClassName(table.Name)) + _script.Settings.DataOptions.ClassSuffix.Name + ".Delete(entityToDelete);");
  164. _output.tabLevel--;
  165. _output.autoTabLn("}");
  166. _output.autoTabLn("");
  167. _output.autoTabLn("public void Update(" + StringFormatter.CleanUpClassName(table.Name) + " entityToUpdate)");
  168. _output.autoTabLn("{");
  169. _output.tabLevel++;
  170. _output.autoTabLn("_" + StringFormatter.CamelCasing(StringFormatter.CleanUpClassName(table.Name)) + _script.Settings.DataOptions.ClassSuffix.Name + ".Update(entityToUpdate);");
  171. _output.tabLevel--;
  172. _output.autoTabLn("} ");
  173. _output.autoTabLn("#endregion");
  174. _output.tabLevel--;
  175. _output.autoTabLn("}");
  176. _output.tabLevel--;
  177. _output.autoTabLn("");
  178. _output.autoTabLn("}");
  179. _context.FileList.Add(" " + StringFormatter.CleanUpClassName(table.Name) + "ServiceBase.cs");
  180. SaveOutput(CreateFullPath(_script.Settings.ServiceLayer.ServiceNamespace + "\\Generated", StringFormatter.CleanUpClassName(table.Name) + "ServiceBase.cs"), SaveActions.Overwrite);
  181. }
  182. private void RenderConcreteClass(ITable table)
  183. {
  184. _hdrUtil.WriteClassHeader(_output);
  185. _output.autoTabLn("using System;");
  186. _output.autoTabLn("using System.Linq;");
  187. _output.autoTabLn("using " + _script.Settings.DataOptions.DataObjectsNamespace + ".Interfaces;");
  188. _output.autoTabLn("using " + _script.Settings.ServiceLayer.ServiceNamespace + ".Generated;");
  189. _output.autoTabLn("using " + _script.Settings.ServiceLayer.ServiceNamespace + ".Interfaces;");
  190. _output.autoTabLn("");
  191. _output.autoTabLn("namespace " + _script.Settings.ServiceLayer.ServiceNamespace);
  192. _output.autoTabLn("{");
  193. _output.tabLevel++;
  194. _output.autoTabLn("public class " + StringFormatter.CleanUpClassName(table.Name) + "Service : " + StringFormatter.CleanUpClassName(table.Name) + "ServiceBase, I" + StringFormatter.CleanUpClassName(table.Name) + "Service");
  195. _output.autoTabLn("{");
  196. _output.tabLevel++;
  197. _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 + ")");
  198. _output.tabLevel++;
  199. _output.autoTabLn(": base(" + StringFormatter.CamelCasing(StringFormatter.CleanUpClassName(table.Name)) + _script.Settings.DataOptions.ClassSuffix.Name + ")");
  200. _output.tabLevel--;
  201. _output.autoTabLn("{");
  202. _output.autoTabLn("");
  203. _output.autoTabLn("}");
  204. _output.tabLevel--;
  205. _output.autoTabLn("}");
  206. _output.tabLevel--;
  207. _output.autoTabLn("}");
  208. _context.FileList.Add(" " + StringFormatter.CleanUpClassName(table.Name) + "Service.cs");
  209. SaveOutput(CreateFullPath(_script.Settings.ServiceLayer.ServiceNamespace, StringFormatter.CleanUpClassName(table.Name) + "Service.cs"), SaveActions.DontOverwrite);
  210. }
  211. #endregion
  212. }
  213. }