Advertisement
Guest User

Untitled

a guest
Jul 21st, 2019
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.86 KB | None | 0 0
  1. import re
  2. from os import path
  3.  
  4.  
  5. class DaoEnvironment:
  6. def __init__(self, rep_path, rep_package, int_path, int_package, impl_path, impl_package):
  7. self.rep_path = rep_path
  8. self.rep_package = rep_package
  9. self.int_path = int_path
  10. self.int_package = int_package
  11. self.impl_path = impl_path
  12. self.impl_package = impl_package
  13.  
  14. def generate_rep(self, model_name, model_import, id_class, id_import, paging):
  15. rep_file_path = self.rep_path + path.sep + model_name + "Repository" + ".java"
  16. if not path.exists(rep_file_path):
  17. with open(rep_file_path, "wt") as output:
  18. print("package {0};".format(self.rep_package), file=output)
  19. print("", file=output)
  20. print("import {0};".format(model_import), file=output)
  21. if paging:
  22. print("import org.springframework.data.repository.PagingAndSortingRepository;", file=output)
  23. else:
  24. print("import org.springframework.data.repository.CrudRepository;", file=output)
  25. print("import org.springframework.stereotype.Repository;", file=output)
  26. if id_import is not None:
  27. print("import {0};".format(id_import), file=output)
  28. print("", file=output)
  29. print("@Repository", file=output)
  30. if paging:
  31. print("public interface {0}Repository extends PagingAndSortingRepository<{0}, {1}>"
  32. .format(model_name, id_class), "{", file=output)
  33. else:
  34. print("public interface {0}Repository extends CrudRepository<{0}, {1}>"
  35. .format(model_name, id_class), "{", file=output)
  36. print("", file=output)
  37. print("}", file=output)
  38. print("Generated repository file for", model_name)
  39.  
  40. def generate_int(self, model_name, model_import):
  41. int_file_path = self.int_path + path.sep + model_name + "Service" + ".java"
  42. if not path.exists(int_file_path):
  43. with open(int_file_path, "wt") as output:
  44. print("package {0};".format(self.int_package), file=output)
  45. print("", file=output)
  46. print("import {0};".format(model_import), file=output)
  47. print("", file=output)
  48. print("public interface {0}Service".format(model_name), "{", file=output)
  49. print("", file=output)
  50. print("}", file=output)
  51. print("Generated interface file for", model_name)
  52.  
  53. def generate_impl(self, model_name, model_import, log_generation):
  54. impl_file_path = self.impl_path + path.sep + model_name + "Service" + ".java"
  55. if not path.exists(impl_file_path):
  56. with open(impl_file_path, "wt") as output:
  57. print("package {0};".format(self.impl_package), file=output)
  58. print("", file=output)
  59. print("import {0};".format(model_import), file=output)
  60. print("import {0}.{1}Repository;".format(self.rep_package, model_name), file=output)
  61. if log_generation:
  62. print("import org.slf4j.Logger;", file=output)
  63. print("import org.slf4j.LoggerFactory;", file=output)
  64. print("import org.springframework.beans.factory.annotation.Autowired;", file=output)
  65. print("import org.springframework.stereotype.Service;", file=output)
  66. print("", file=output)
  67. print("@Service", file=output)
  68. print("public class {0}Service implements {1}.{0}Service".format(model_name, self.int_package), "{",
  69. file=output)
  70. if log_generation:
  71. print("\tprivate static final Logger log = LoggerFactory.getLogger({0}Service.class);".format(
  72. model_name), file=output)
  73. print("\tprivate {0}Repository repository;".format(model_name), file=output)
  74. print("", file=output)
  75. print("\t@Autowired", file=output)
  76. print("\tpublic {0}Service({0}Repository repository)".format(model_name), "{", file=output)
  77. print("\t\tthis.repository = repository;", file=output)
  78. print("\t}", file=output)
  79. print("}", file=output)
  80. print("Generated impl file for", model_name)
  81.  
  82. def generate(self, model_path: str, log_generation, paging):
  83. match = re.search(r"\\([a-zA-Z0-9]+)\.", model_path)
  84. if not match:
  85. raise ValueError
  86. model_name = match.groups()[-1]
  87. print(model_name)
  88. imports = dict()
  89. id_field = False
  90. model_import = None
  91. id_class = None
  92. id_import = None
  93. with open(model_path, "rt") as inp:
  94. for line in inp:
  95. if line.startswith("package"):
  96. model_import = line.strip()[8:-1] + '.' + model_name
  97. elif line.startswith("import") and not line.startswith("import static"):
  98. match = re.search(r"\.?([a-zA-Z0-9]+);", line)
  99. if match:
  100. class_name = match.groups()[-1]
  101. imports[class_name] = line.strip()[7:-1]
  102. elif "@Id" in line:
  103. id_field = True
  104. elif id_field and ";" in line:
  105. match = re.search(r"([A-Za-z0-9]+) ([A-Za-z0-9]+);", line)
  106. if match:
  107. id_class = match.groups()[0]
  108. if id_class in imports:
  109. id_import = imports[id_class]
  110. break
  111. if model_import is None or id_class is None:
  112. raise ValueError
  113. model_import = model_import.strip()
  114. id_class = id_class.strip()
  115. if id_import is not None:
  116. id_import = id_import.strip()
  117. print(id_class, id_import, model_import)
  118. self.generate_rep(model_name, model_import, id_class, id_import, paging)
  119. self.generate_int(model_name, model_import)
  120. self.generate_impl(model_name, model_import, log_generation)
  121.  
  122.  
  123. if __name__ == '__main__':
  124. in_rep_path = input("rep_path>")
  125. in_rep_package = input("rep_package>")
  126. in_int_path = input("int_path>")
  127. in_int_package = input("int_package>")
  128. in_impl_path = input("impl_path>")
  129. in_impl_package = input("impl_package>")
  130. dao = DaoEnvironment(in_rep_path, in_rep_package, in_int_path, in_int_package, in_impl_path, in_impl_package)
  131. in_log = input("add log? (y/n)>").strip().lower() == "y"
  132. in_paging = input("paging? (y/n)>").strip().lower() == "y"
  133. print("type 'e' for exit")
  134. in_path = ''
  135. while in_path != 'e':
  136. try:
  137. in_path = input().strip()
  138. if in_path == 'e':
  139. break
  140. dao.generate(in_path, in_log, in_paging)
  141. except BaseException:
  142. pass
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement