@cerema/cadriciel 1.1.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (419) hide show
  1. package/aaaa/.cadriciel/.uuid +1 -0
  2. package/aaaa/.cadriciel/bin/db-update.js +337 -0
  3. package/aaaa/.cadriciel/bin/gen/api/api.js +484 -0
  4. package/aaaa/.cadriciel/bin/gen/component/component.js +36 -0
  5. package/aaaa/.cadriciel/bin/gen/page/page.js +163 -0
  6. package/aaaa/.cadriciel/bin/gen/project/project.js +172 -0
  7. package/aaaa/.cadriciel/bin/gen/query/query.js +92 -0
  8. package/aaaa/.cadriciel/bin/gen/service/service.js +18 -0
  9. package/aaaa/.cadriciel/bin/gen.js +19 -0
  10. package/aaaa/.cadriciel/bin/lib/convert.js +94 -0
  11. package/aaaa/.cadriciel/bin/lib/global.js +140 -0
  12. package/aaaa/.cadriciel/bin/lib/templates.js +48 -0
  13. package/aaaa/.cadriciel/bin/lib/utils.js +76 -0
  14. package/aaaa/.cadriciel/bin/logs.js +34 -0
  15. package/aaaa/.cadriciel/bin/reset.js +45 -0
  16. package/aaaa/.cadriciel/bin/restart.js +30 -0
  17. package/aaaa/.cadriciel/bin/start.js +194 -0
  18. package/aaaa/.cadriciel/bin/stop.js +32 -0
  19. package/aaaa/.cadriciel/bin/templates/components/{{name}}.component.html +1 -0
  20. package/aaaa/.cadriciel/bin/templates/components/{{name}}.component.scss +0 -0
  21. package/aaaa/.cadriciel/bin/templates/components/{{name}}.component.ts +15 -0
  22. package/aaaa/.cadriciel/bin/templates/java/config.java +59 -0
  23. package/aaaa/.cadriciel/bin/templates/routing.module.ts +30 -0
  24. package/aaaa/.cadriciel/bin/templates/{{name}}.component.html +1 -0
  25. package/aaaa/.cadriciel/bin/templates/{{name}}.component.scss +0 -0
  26. package/aaaa/.cadriciel/bin/templates/{{name}}.component.ts +16 -0
  27. package/aaaa/.cadriciel/bin/templates/{{name}}.service.ts +20 -0
  28. package/aaaa/.cadriciel/routes/root.json +1 -0
  29. package/aaaa/.gitlab-ci.yml +65 -0
  30. package/aaaa/.project +1 -0
  31. package/aaaa/.vscode/settings.json +3 -0
  32. package/aaaa/angular.json +165 -0
  33. package/aaaa/api/aaaa-data/Readme.md +27 -0
  34. package/aaaa/api/aaaa-data/pom.xml +46 -0
  35. package/aaaa/api/aaaa-data/src/main/resources/db/dev/Readme.md +5 -0
  36. package/aaaa/api/aaaa-data/src/main/resources/db/dev/V2022.06.02.1513__dev-data.sql +7 -0
  37. package/aaaa/api/aaaa-data/src/main/resources/db/migration/Readme.md +38 -0
  38. package/aaaa/api/aaaa-data/src/main/resources/db/migration/V2021.10.14.0819__Init.sql +23 -0
  39. package/aaaa/api/aaaa-data/src/main/resources/flyway.properties +4 -0
  40. package/aaaa/api/aaaa-metier/pom.xml +134 -0
  41. package/aaaa/api/aaaa-metier/src/main/java/fr/cerema/dsi/aaaa/services/CustomUserDetailsService.java +12 -0
  42. package/aaaa/api/aaaa-metier/src/main/java/fr/cerema/dsi/aaaa/services/ProfilService.java +24 -0
  43. package/aaaa/api/aaaa-metier/src/main/java/fr/cerema/dsi/aaaa/services/UserService.java +36 -0
  44. package/aaaa/api/aaaa-metier/src/main/java/fr/cerema/dsi/aaaa/services/impl/CustomUserDetailsServiceImpl.java +79 -0
  45. package/aaaa/api/aaaa-metier/src/main/java/fr/cerema/dsi/aaaa/services/impl/ProfilServiceImpl.java +27 -0
  46. package/aaaa/api/aaaa-metier/src/main/java/fr/cerema/dsi/aaaa/services/impl/UserServiceImpl.java +75 -0
  47. package/aaaa/api/aaaa-metier/src/main/java/fr/cerema/dsi/commons/security/UserSecurityServiceUtil.java +30 -0
  48. package/aaaa/api/aaaa-metier/src/main/java/fr/cerema/dsi/commons/services/GenericService.java +30 -0
  49. package/aaaa/api/aaaa-metier/src/main/java/fr/cerema/dsi/commons/services/GenericServiceImpl.java +62 -0
  50. package/aaaa/api/aaaa-metier/src/test/java/fr/cerema/dsi/aaaa/services/UserServiceImplTest.java +60 -0
  51. package/aaaa/api/aaaa-persistance/pom.xml +72 -0
  52. package/aaaa/api/aaaa-persistance/src/main/java/fr/cerema/dsi/aaaa/repositories/ProfilRepository.java +18 -0
  53. package/aaaa/api/aaaa-persistance/src/main/java/fr/cerema/dsi/aaaa/repositories/UserRepository.java +28 -0
  54. package/aaaa/api/aaaa-persistance/src/main/java/fr/cerema/dsi/commons/repositories/AbstractDao.java +118 -0
  55. package/aaaa/api/aaaa-persistance/src/main/java/fr/cerema/dsi/commons/repositories/GenericRepository.java +101 -0
  56. package/aaaa/api/aaaa-persistance/src/main/java/fr/cerema/dsi/commons/repositories/IAbstractDao.java +66 -0
  57. package/aaaa/api/aaaa-presentation/Readme.md +98 -0
  58. package/aaaa/api/aaaa-presentation/pom.xml +385 -0
  59. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/aaaa/App.java +20 -0
  60. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/aaaa/config/AspectJConfiguration.java +58 -0
  61. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/aaaa/config/AuthenticationTokenFilter.java +134 -0
  62. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/aaaa/config/SecurityConfiguration.java +71 -0
  63. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/aaaa/config/StaticResourcesWebConfiguration.java +41 -0
  64. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/aaaa/config/WebConfiguration.java +59 -0
  65. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/aaaa/controllers/AccountController.java +59 -0
  66. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/aaaa/controllers/ApiOpenController.java +63 -0
  67. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/aaaa/controllers/UserController.java +63 -0
  68. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/aaaa/dto/GenericDTO.java +20 -0
  69. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/aaaa/dto/ProfilDTO.java +26 -0
  70. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/aaaa/dto/UserDTO.java +57 -0
  71. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/aaaa/dto/UserWithCurrentAuthorityDTO.java +31 -0
  72. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/aaaa/mapper/UserMapper.java +30 -0
  73. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/commons/beans/errors/ApiSubError.java +5 -0
  74. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/commons/beans/errors/ApiValidationSubError.java +13 -0
  75. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/commons/beans/errors/JsonApiError.java +308 -0
  76. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/commons/controllers/AbstractErrorHandler.java +67 -0
  77. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/commons/controllers/ClientForwardController.java +19 -0
  78. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/commons/controllers/CustomErrorController.java +57 -0
  79. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/commons/controllers/RestResponseEntityExceptionHandler.java +75 -0
  80. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/commons/security/auth/jwt/exceptions/InvalidTokenException.java +30 -0
  81. package/aaaa/api/aaaa-presentation/src/main/java/fr/cerema/dsi/commons/security/filters/AppCorsFilter.java +45 -0
  82. package/aaaa/api/aaaa-presentation/src/main/resources/META-INF/spring.factories +2 -0
  83. package/aaaa/api/aaaa-presentation/src/main/resources/banner.txt +3 -0
  84. package/aaaa/api/aaaa-presentation/src/main/resources/logback-spring-ci.xml +15 -0
  85. package/aaaa/api/aaaa-presentation/src/main/resources/logback-spring.xml +15 -0
  86. package/aaaa/api/aaaa-presentation/src/main/resources-filtered/application-ci.yml +59 -0
  87. package/aaaa/api/aaaa-presentation/src/main/resources-filtered/application-prod.yml +59 -0
  88. package/aaaa/api/aaaa-presentation/src/main/resources-filtered/application.yml +134 -0
  89. package/aaaa/api/aaaa-presentation/src/test/java/fr/cerema/dsi/aaaa/service/IntegrationTest.java +18 -0
  90. package/aaaa/api/aaaa-presentation/src/test/java/fr/cerema/dsi/aaaa/service/UserServiceImplIT.java +43 -0
  91. package/aaaa/api/aaaa-presentation/src/test/resources/application.yml +41 -0
  92. package/aaaa/api/aaaa-presentation/src/test/resources/db.migration/Readme.md +6 -0
  93. package/aaaa/api/aaaa-presentation/target/classes/META-INF/spring.factories +2 -0
  94. package/aaaa/api/aaaa-presentation/target/classes/application-ci.yml +59 -0
  95. package/aaaa/api/aaaa-presentation/target/classes/application-prod.yml +59 -0
  96. package/aaaa/api/aaaa-presentation/target/classes/application.yml +134 -0
  97. package/aaaa/api/aaaa-presentation/target/classes/banner.txt +3 -0
  98. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/aaaa/App.class +0 -0
  99. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/aaaa/config/AspectJConfiguration.class +0 -0
  100. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/aaaa/config/AuthenticationTokenFilter.class +0 -0
  101. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/aaaa/config/SecurityConfiguration.class +0 -0
  102. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/aaaa/config/StaticResourcesWebConfiguration.class +0 -0
  103. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/aaaa/config/WebConfiguration.class +0 -0
  104. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/aaaa/controllers/AccountController.class +0 -0
  105. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/aaaa/controllers/ApiOpenController.class +0 -0
  106. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/aaaa/controllers/UserController.class +0 -0
  107. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/aaaa/dto/GenericDTO.class +0 -0
  108. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/aaaa/dto/ProfilDTO.class +0 -0
  109. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/aaaa/dto/UserDTO.class +0 -0
  110. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/aaaa/dto/UserWithCurrentAuthorityDTO.class +0 -0
  111. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/aaaa/mapper/UserMapper.class +0 -0
  112. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/aaaa/mapper/UserMapperImpl.class +0 -0
  113. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/commons/beans/errors/ApiSubError.class +0 -0
  114. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/commons/beans/errors/ApiValidationSubError.class +0 -0
  115. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/commons/beans/errors/JsonApiError$ApiError.class +0 -0
  116. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/commons/beans/errors/JsonApiError.class +0 -0
  117. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/commons/controllers/AbstractErrorHandler.class +0 -0
  118. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/commons/controllers/ClientForwardController.class +0 -0
  119. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/commons/controllers/CustomErrorController.class +0 -0
  120. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/commons/controllers/RestResponseEntityExceptionHandler.class +0 -0
  121. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/commons/security/auth/jwt/exceptions/InvalidTokenException.class +0 -0
  122. package/aaaa/api/aaaa-presentation/target/classes/fr/cerema/dsi/commons/security/filters/AppCorsFilter.class +0 -0
  123. package/aaaa/api/aaaa-presentation/target/classes/logback-spring-ci.xml +15 -0
  124. package/aaaa/api/aaaa-presentation/target/classes/logback-spring.xml +15 -0
  125. package/aaaa/api/aaaa-presentation/target/generated-sources/annotations/fr/cerema/dsi/aaaa/mapper/UserMapperImpl.java +136 -0
  126. package/aaaa/api/aaaa-presentation/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +25 -0
  127. package/aaaa/api/aaaa-presentation/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +23 -0
  128. package/aaaa/api/aaaa-transverse/pom.xml +25 -0
  129. package/aaaa/api/aaaa-transverse/src/main/java/fr/cerema/dsi/aaaa/entities/Profil.java +53 -0
  130. package/aaaa/api/aaaa-transverse/src/main/java/fr/cerema/dsi/aaaa/entities/User.java +79 -0
  131. package/aaaa/api/aaaa-transverse/src/main/java/fr/cerema/dsi/aaaa/enums/Role.java +9 -0
  132. package/aaaa/api/aaaa-transverse/src/main/java/fr/cerema/dsi/aaaa/exceptions/JwtConfMalformedException.java +9 -0
  133. package/aaaa/api/aaaa-transverse/src/main/java/fr/cerema/dsi/aaaa/exceptions/security/AuthenticationServiceException.java +30 -0
  134. package/aaaa/api/aaaa-transverse/src/main/java/fr/cerema/dsi/aaaa/exceptions/security/NoRoleForUserServiceException.java +29 -0
  135. package/aaaa/api/aaaa-transverse/src/main/java/fr/cerema/dsi/aaaa/exceptions/security/UserNotFoundServiceException.java +29 -0
  136. package/aaaa/api/aaaa-transverse/src/main/java/fr/cerema/dsi/commons/entities/GenericEntity.java +43 -0
  137. package/aaaa/api/aaaa-transverse/src/main/java/fr/cerema/dsi/commons/exceptions/BadRequestException.java +43 -0
  138. package/aaaa/api/aaaa-transverse/src/main/java/fr/cerema/dsi/commons/exceptions/EntityNotFoundException.java +9 -0
  139. package/aaaa/api/aaaa-transverse/src/main/java/fr/cerema/dsi/commons/exceptions/GenericRepositoryException.java +29 -0
  140. package/aaaa/api/aaaa-transverse/src/main/java/fr/cerema/dsi/commons/exceptions/GenericServiceException.java +29 -0
  141. package/aaaa/api/aaaa-transverse/src/main/java/fr/cerema/dsi/commons/exceptions/UserNotFoundException.java +11 -0
  142. package/aaaa/api/aaaa-transverse/src/main/java/fr/cerema/dsi/commons/exceptions/UtilsException.java +13 -0
  143. package/aaaa/api/pom.xml +156 -0
  144. package/aaaa/client/app/components/.gitkeep +0 -0
  145. package/aaaa/client/app/interfaces/.gitkeep +0 -0
  146. package/aaaa/client/app/interfaces/dbschema.ts +171 -0
  147. package/aaaa/client/app/menu.json +41 -0
  148. package/aaaa/client/app/pages/pages-routing.module.ts +19 -0
  149. package/aaaa/client/app/pages/profils/profils.component.html +4 -0
  150. package/aaaa/client/app/pages/profils/profils.component.scss +0 -0
  151. package/aaaa/client/app/pages/profils/profils.component.ts +21 -0
  152. package/aaaa/client/app/pages/root/root.component.html +2 -0
  153. package/aaaa/client/app/pages/root/root.component.scss +24 -0
  154. package/aaaa/client/app/pages/root/root.component.ts +29 -0
  155. package/aaaa/client/app/services/demo.service.ts +21 -0
  156. package/aaaa/client/app/services/profils.service.ts +25 -0
  157. package/aaaa/client/app/services/test.service.ts +20 -0
  158. package/aaaa/client/app-routing.module.ts +50 -0
  159. package/aaaa/client/app.component.css +46 -0
  160. package/aaaa/client/app.component.html +1 -0
  161. package/aaaa/client/app.component.ts +62 -0
  162. package/aaaa/client/app.module.ts +99 -0
  163. package/aaaa/client/assets/favicon.ico +0 -0
  164. package/aaaa/client/assets/i18n/fr.json +33 -0
  165. package/aaaa/client/assets/images/dollar.svg +1 -0
  166. package/aaaa/client/assets/images/logo.png +0 -0
  167. package/aaaa/client/assets/images/logo_title.png +0 -0
  168. package/aaaa/client/assets/images/work-in-progress.svg +64 -0
  169. package/aaaa/client/assets/layout/fonts/lato-v17-latin-ext_latin-300.woff +0 -0
  170. package/aaaa/client/assets/layout/fonts/lato-v17-latin-ext_latin-300.woff2 +0 -0
  171. package/aaaa/client/assets/layout/fonts/lato-v17-latin-ext_latin-700.woff +0 -0
  172. package/aaaa/client/assets/layout/fonts/lato-v17-latin-ext_latin-700.woff2 +0 -0
  173. package/aaaa/client/assets/layout/fonts/lato-v17-latin-ext_latin-regular.woff +0 -0
  174. package/aaaa/client/assets/layout/fonts/lato-v17-latin-ext_latin-regular.woff2 +0 -0
  175. package/aaaa/client/assets/layout/images/LogoCerema.svg +226 -0
  176. package/aaaa/client/assets/layout/images/LogoCerema_horizontal.svg +167 -0
  177. package/aaaa/client/assets/layout/images/SpinnerCerema.svg +6 -0
  178. package/aaaa/client/assets/layout/images/authentication.svg +1 -0
  179. package/aaaa/client/assets/layout/images/mail.svg +1 -0
  180. package/aaaa/client/assets/layout/images/postgresql.svg +1 -0
  181. package/aaaa/client/assets/layout/images/user.png +0 -0
  182. package/aaaa/client/assets/layout/styles/layout/_breadcrumb.scss +18 -0
  183. package/aaaa/client/assets/layout/styles/layout/_config.scss +33 -0
  184. package/aaaa/client/assets/layout/styles/layout/_content.scss +20 -0
  185. package/aaaa/client/assets/layout/styles/layout/_fonts.scss +29 -0
  186. package/aaaa/client/assets/layout/styles/layout/_footer.scss +25 -0
  187. package/aaaa/client/assets/layout/styles/layout/_main.scss +29 -0
  188. package/aaaa/client/assets/layout/styles/layout/_responsive.scss +159 -0
  189. package/aaaa/client/assets/layout/styles/layout/_sidebar.scss +2 -0
  190. package/aaaa/client/assets/layout/styles/layout/_topbar.scss +250 -0
  191. package/aaaa/client/assets/layout/styles/layout/_typography.scss +63 -0
  192. package/aaaa/client/assets/layout/styles/layout/_utils.scss +19 -0
  193. package/aaaa/client/assets/layout/styles/layout/layout.scss +15 -0
  194. package/aaaa/client/assets/layout/styles/layout/preloading.css +73 -0
  195. package/aaaa/client/assets/layout/styles/layout/preloading.scss +79 -0
  196. package/aaaa/client/assets/layout/styles/layout/sidebar/_sidebar_slim.scss +131 -0
  197. package/aaaa/client/assets/layout/styles/layout/sidebar/_sidebar_vertical.scss +132 -0
  198. package/aaaa/client/assets/layout/styles/layout/theme/_dark.scss +10 -0
  199. package/aaaa/client/assets/layout/styles/layout/theme/_light.scss +10 -0
  200. package/aaaa/client/assets/layout/styles/layout/theme/_primary.scss +10 -0
  201. package/aaaa/client/assets/layout/styles/layout/theme/_themes.scss +3 -0
  202. package/aaaa/client/assets/layout/styles/theme/designer/_colors.scss +17 -0
  203. package/aaaa/client/assets/layout/styles/theme/designer/_common.scss +68 -0
  204. package/aaaa/client/assets/layout/styles/theme/designer/_components.scss +102 -0
  205. package/aaaa/client/assets/layout/styles/theme/designer/_mixins.scss +203 -0
  206. package/aaaa/client/assets/layout/styles/theme/designer/components/button/_button.scss +560 -0
  207. package/aaaa/client/assets/layout/styles/theme/designer/components/button/_speeddial.scss +81 -0
  208. package/aaaa/client/assets/layout/styles/theme/designer/components/button/_splitbutton.scss +381 -0
  209. package/aaaa/client/assets/layout/styles/theme/designer/components/data/_carousel.scss +37 -0
  210. package/aaaa/client/assets/layout/styles/theme/designer/components/data/_datatable.scss +278 -0
  211. package/aaaa/client/assets/layout/styles/theme/designer/components/data/_dataview.scss +55 -0
  212. package/aaaa/client/assets/layout/styles/theme/designer/components/data/_filter.scss +138 -0
  213. package/aaaa/client/assets/layout/styles/theme/designer/components/data/_fullcalendar.scss +329 -0
  214. package/aaaa/client/assets/layout/styles/theme/designer/components/data/_orderlist.scss +103 -0
  215. package/aaaa/client/assets/layout/styles/theme/designer/components/data/_organizationchart.scss +50 -0
  216. package/aaaa/client/assets/layout/styles/theme/designer/components/data/_paginator.scss +92 -0
  217. package/aaaa/client/assets/layout/styles/theme/designer/components/data/_picklist.scss +103 -0
  218. package/aaaa/client/assets/layout/styles/theme/designer/components/data/_timeline.scss +38 -0
  219. package/aaaa/client/assets/layout/styles/theme/designer/components/data/_tree.scss +144 -0
  220. package/aaaa/client/assets/layout/styles/theme/designer/components/data/_treetable.scss +246 -0
  221. package/aaaa/client/assets/layout/styles/theme/designer/components/data/_virtualscroller.scss +28 -0
  222. package/aaaa/client/assets/layout/styles/theme/designer/components/file/_fileupload.scss +58 -0
  223. package/aaaa/client/assets/layout/styles/theme/designer/components/menu/_breadcrumb.scss +42 -0
  224. package/aaaa/client/assets/layout/styles/theme/designer/components/menu/_contextmenu.scss +56 -0
  225. package/aaaa/client/assets/layout/styles/theme/designer/components/menu/_dock.scss +86 -0
  226. package/aaaa/client/assets/layout/styles/theme/designer/components/menu/_megamenu.scss +106 -0
  227. package/aaaa/client/assets/layout/styles/theme/designer/components/menu/_menu.scss +45 -0
  228. package/aaaa/client/assets/layout/styles/theme/designer/components/menu/_menubar.scss +183 -0
  229. package/aaaa/client/assets/layout/styles/theme/designer/components/menu/_panelmenu.scss +140 -0
  230. package/aaaa/client/assets/layout/styles/theme/designer/components/menu/_slidemenu.scss +59 -0
  231. package/aaaa/client/assets/layout/styles/theme/designer/components/menu/_steps.scss +56 -0
  232. package/aaaa/client/assets/layout/styles/theme/designer/components/menu/_tabmenu.scss +69 -0
  233. package/aaaa/client/assets/layout/styles/theme/designer/components/menu/_tieredmenu.scss +60 -0
  234. package/aaaa/client/assets/layout/styles/theme/designer/components/messages/_inlinemessage.scss +64 -0
  235. package/aaaa/client/assets/layout/styles/theme/designer/components/messages/_message.scss +102 -0
  236. package/aaaa/client/assets/layout/styles/theme/designer/components/messages/_toast.scss +95 -0
  237. package/aaaa/client/assets/layout/styles/theme/designer/components/misc/_avatar.scss +30 -0
  238. package/aaaa/client/assets/layout/styles/theme/designer/components/misc/_badge.scss +48 -0
  239. package/aaaa/client/assets/layout/styles/theme/designer/components/misc/_blockui.scss +0 -0
  240. package/aaaa/client/assets/layout/styles/theme/designer/components/misc/_chip.scss +38 -0
  241. package/aaaa/client/assets/layout/styles/theme/designer/components/misc/_inplace.scss +17 -0
  242. package/aaaa/client/assets/layout/styles/theme/designer/components/misc/_progressbar.scss +17 -0
  243. package/aaaa/client/assets/layout/styles/theme/designer/components/misc/_scrolltop.scss +20 -0
  244. package/aaaa/client/assets/layout/styles/theme/designer/components/misc/_skeleton.scss +8 -0
  245. package/aaaa/client/assets/layout/styles/theme/designer/components/misc/_tag.scss +35 -0
  246. package/aaaa/client/assets/layout/styles/theme/designer/components/misc/_terminal.scss +11 -0
  247. package/aaaa/client/assets/layout/styles/theme/designer/components/multimedia/_galleria.scss +139 -0
  248. package/aaaa/client/assets/layout/styles/theme/designer/components/multimedia/_image.scss +44 -0
  249. package/aaaa/client/assets/layout/styles/theme/designer/components/overlay/_confirmpopup.scss +65 -0
  250. package/aaaa/client/assets/layout/styles/theme/designer/components/overlay/_dialog.scss +64 -0
  251. package/aaaa/client/assets/layout/styles/theme/designer/components/overlay/_overlaypanel.scss +62 -0
  252. package/aaaa/client/assets/layout/styles/theme/designer/components/overlay/_sidebar.scss +23 -0
  253. package/aaaa/client/assets/layout/styles/theme/designer/components/overlay/_tooltip.scss +33 -0
  254. package/aaaa/client/assets/layout/styles/theme/designer/components/panel/_accordion.scss +119 -0
  255. package/aaaa/client/assets/layout/styles/theme/designer/components/panel/_card.scss +30 -0
  256. package/aaaa/client/assets/layout/styles/theme/designer/components/panel/_divider.scss +31 -0
  257. package/aaaa/client/assets/layout/styles/theme/designer/components/panel/_fieldset.scss +47 -0
  258. package/aaaa/client/assets/layout/styles/theme/designer/components/panel/_panel.scss +58 -0
  259. package/aaaa/client/assets/layout/styles/theme/designer/components/panel/_scrollpanel.scss +6 -0
  260. package/aaaa/client/assets/layout/styles/theme/designer/components/panel/_splitter.scss +19 -0
  261. package/aaaa/client/assets/layout/styles/theme/designer/components/panel/_tabview.scss +78 -0
  262. package/aaaa/client/assets/layout/styles/theme/designer/components/panel/_toolbar.scss +10 -0
  263. package/aaaa/client/assets/layout/styles/theme/theme-dark/_extensions.scss +90 -0
  264. package/aaaa/client/assets/layout/styles/theme/theme-dark/_variables.scss +867 -0
  265. package/aaaa/client/assets/layout/styles/theme/theme-dark/blue/theme.css +7341 -0
  266. package/aaaa/client/assets/layout/styles/theme/theme-dark/blue/theme.scss +12 -0
  267. package/aaaa/client/assets/layout/styles/theme/theme-dark/cyan/theme.css +7341 -0
  268. package/aaaa/client/assets/layout/styles/theme/theme-dark/cyan/theme.scss +12 -0
  269. package/aaaa/client/assets/layout/styles/theme/theme-dark/deeppurple/theme.css +7341 -0
  270. package/aaaa/client/assets/layout/styles/theme/theme-dark/deeppurple/theme.scss +12 -0
  271. package/aaaa/client/assets/layout/styles/theme/theme-dark/green/theme.css +7341 -0
  272. package/aaaa/client/assets/layout/styles/theme/theme-dark/green/theme.scss +12 -0
  273. package/aaaa/client/assets/layout/styles/theme/theme-dark/indigo/theme.css +7341 -0
  274. package/aaaa/client/assets/layout/styles/theme/theme-dark/indigo/theme.scss +12 -0
  275. package/aaaa/client/assets/layout/styles/theme/theme-dark/lime/theme.css +7341 -0
  276. package/aaaa/client/assets/layout/styles/theme/theme-dark/lime/theme.scss +12 -0
  277. package/aaaa/client/assets/layout/styles/theme/theme-dark/orange/theme.css +7341 -0
  278. package/aaaa/client/assets/layout/styles/theme/theme-dark/orange/theme.scss +12 -0
  279. package/aaaa/client/assets/layout/styles/theme/theme-dark/pink/theme.css +7341 -0
  280. package/aaaa/client/assets/layout/styles/theme/theme-dark/pink/theme.scss +12 -0
  281. package/aaaa/client/assets/layout/styles/theme/theme-dark/purple/theme.css +7341 -0
  282. package/aaaa/client/assets/layout/styles/theme/theme-dark/purple/theme.scss +12 -0
  283. package/aaaa/client/assets/layout/styles/theme/theme-dark/yellow/theme.css +7341 -0
  284. package/aaaa/client/assets/layout/styles/theme/theme-dark/yellow/theme.scss +12 -0
  285. package/aaaa/client/assets/layout/styles/theme/theme-light/_extensions.scss +90 -0
  286. package/aaaa/client/assets/layout/styles/theme/theme-light/_variables.scss +870 -0
  287. package/aaaa/client/assets/layout/styles/theme/theme-light/blue/theme.css +7540 -0
  288. package/aaaa/client/assets/layout/styles/theme/theme-light/blue/theme.scss +12 -0
  289. package/aaaa/client/assets/layout/styles/theme/theme-light/cyan/theme.css +7341 -0
  290. package/aaaa/client/assets/layout/styles/theme/theme-light/cyan/theme.scss +12 -0
  291. package/aaaa/client/assets/layout/styles/theme/theme-light/deeppurple/theme.css +7341 -0
  292. package/aaaa/client/assets/layout/styles/theme/theme-light/deeppurple/theme.scss +12 -0
  293. package/aaaa/client/assets/layout/styles/theme/theme-light/green/theme.css +7341 -0
  294. package/aaaa/client/assets/layout/styles/theme/theme-light/green/theme.scss +12 -0
  295. package/aaaa/client/assets/layout/styles/theme/theme-light/indigo/theme.css +7341 -0
  296. package/aaaa/client/assets/layout/styles/theme/theme-light/indigo/theme.scss +12 -0
  297. package/aaaa/client/assets/layout/styles/theme/theme-light/lime/theme.css +7341 -0
  298. package/aaaa/client/assets/layout/styles/theme/theme-light/lime/theme.scss +12 -0
  299. package/aaaa/client/assets/layout/styles/theme/theme-light/orange/theme.css +7341 -0
  300. package/aaaa/client/assets/layout/styles/theme/theme-light/orange/theme.scss +12 -0
  301. package/aaaa/client/assets/layout/styles/theme/theme-light/pink/theme.css +7341 -0
  302. package/aaaa/client/assets/layout/styles/theme/theme-light/pink/theme.scss +12 -0
  303. package/aaaa/client/assets/layout/styles/theme/theme-light/purple/theme.css +7341 -0
  304. package/aaaa/client/assets/layout/styles/theme/theme-light/purple/theme.scss +12 -0
  305. package/aaaa/client/assets/layout/styles/theme/theme-light/yellow/theme.css +7341 -0
  306. package/aaaa/client/assets/layout/styles/theme/theme-light/yellow/theme.scss +12 -0
  307. package/aaaa/client/environments/environment.ts +9 -0
  308. package/aaaa/client/index.dev.html +33 -0
  309. package/aaaa/client/index.prod.html +33 -0
  310. package/aaaa/client/layout/api/menuchangeevent.ts +4 -0
  311. package/aaaa/client/layout/api/tabcloseevent.ts +6 -0
  312. package/aaaa/client/layout/app.breadcrumb.component.html +14 -0
  313. package/aaaa/client/layout/app.breadcrumb.component.ts +48 -0
  314. package/aaaa/client/layout/app.footer.component.html +20 -0
  315. package/aaaa/client/layout/app.footer.component.ts +23 -0
  316. package/aaaa/client/layout/app.menu.component.html +3 -0
  317. package/aaaa/client/layout/app.menu.service.ts +23 -0
  318. package/aaaa/client/layout/app.menuitem.component.ts +310 -0
  319. package/aaaa/client/layout/app.sidebar.component.html +5 -0
  320. package/aaaa/client/layout/app.sidebar.component.ts +13 -0
  321. package/aaaa/client/layout/app.topbar.component.html +72 -0
  322. package/aaaa/client/layout/app.topbar.component.ts +67 -0
  323. package/aaaa/client/layout/common/err-403/err-403.component.html +24 -0
  324. package/aaaa/client/layout/common/err-403/err-403.component.scss +340 -0
  325. package/aaaa/client/layout/common/err-403/err-403.ts +19 -0
  326. package/aaaa/client/layout/common/work-in-progress/work-in-progress.component.html +1 -0
  327. package/aaaa/client/layout/common/work-in-progress/work-in-progress.component.scss +8 -0
  328. package/aaaa/client/layout/common/work-in-progress/work-in-progress.component.ts +14 -0
  329. package/aaaa/client/layout/config/app.config.component.html +86 -0
  330. package/aaaa/client/layout/config/app.config.component.scss +0 -0
  331. package/aaaa/client/layout/config/app.config.component.ts +241 -0
  332. package/aaaa/client/layout/config/config.module.ts +27 -0
  333. package/aaaa/client/layout/main/main.component.html +15 -0
  334. package/aaaa/client/layout/main/main.component.spec.ts +34 -0
  335. package/aaaa/client/layout/main/main.component.ts +186 -0
  336. package/aaaa/client/layout/main.module.ts +45 -0
  337. package/aaaa/client/layout/service/app.layout.service.ts +124 -0
  338. package/aaaa/client/layout/shared/components/app.menu.component.ts +69 -0
  339. package/aaaa/client/layout/shared/components/auth/accessdenied/accessdenied-routing.module.ts +12 -0
  340. package/aaaa/client/layout/shared/components/auth/accessdenied/accessdenied.component.html +11 -0
  341. package/aaaa/client/layout/shared/components/auth/accessdenied/accessdenied.component.ts +7 -0
  342. package/aaaa/client/layout/shared/components/auth/accessdenied/accessdenied.module.ts +17 -0
  343. package/aaaa/client/layout/shared/components/auth/auth-routing.module.ts +14 -0
  344. package/aaaa/client/layout/shared/components/auth/auth.module.ts +13 -0
  345. package/aaaa/client/layout/shared/components/auth/error/error-routing.module.ts +12 -0
  346. package/aaaa/client/layout/shared/components/auth/error/error.component.html +10 -0
  347. package/aaaa/client/layout/shared/components/auth/error/error.component.ts +7 -0
  348. package/aaaa/client/layout/shared/components/auth/error/error.module.ts +12 -0
  349. package/aaaa/client/layout/shared/components/auth/login/login-routing.module.ts +12 -0
  350. package/aaaa/client/layout/shared/components/auth/login/login.component.html +15 -0
  351. package/aaaa/client/layout/shared/components/auth/login/login.component.ts +47 -0
  352. package/aaaa/client/layout/shared/components/auth/login/login.module.ts +21 -0
  353. package/aaaa/client/layout/shared/components/auth/logout/logout/logout.component.html +8 -0
  354. package/aaaa/client/layout/shared/components/auth/logout/logout/logout.component.scss +21 -0
  355. package/aaaa/client/layout/shared/components/auth/logout/logout/logout.component.ts +15 -0
  356. package/aaaa/client/layout/shared/components/auth/logout/logout.module.ts +26 -0
  357. package/aaaa/client/layout/shared/components/code/code.component.ts +17 -0
  358. package/aaaa/client/layout/shared/components/indic/indic.component.html +8 -0
  359. package/aaaa/client/layout/shared/components/indic/indic.component.scss +0 -0
  360. package/aaaa/client/layout/shared/components/indic/indic.component.ts +60 -0
  361. package/aaaa/client/layout/shared/components/lookup-input/lookup-input.component.html +70 -0
  362. package/aaaa/client/layout/shared/components/lookup-input/lookup-input.component.scss +0 -0
  363. package/aaaa/client/layout/shared/components/lookup-input/lookup-input.component.ts +121 -0
  364. package/aaaa/client/layout/shared/components/notfound/notfound-routing.module.ts +12 -0
  365. package/aaaa/client/layout/shared/components/notfound/notfound.component.html +42 -0
  366. package/aaaa/client/layout/shared/components/notfound/notfound.component.ts +7 -0
  367. package/aaaa/client/layout/shared/components/notfound/notfound.module.ts +12 -0
  368. package/aaaa/client/layout/shared/constants/dateFormat.constants.ts +1 -0
  369. package/aaaa/client/layout/shared/constants/mocks/user-mocks.constants.ts +36 -0
  370. package/aaaa/client/layout/shared/constants/pagination.constants.ts +1 -0
  371. package/aaaa/client/layout/shared/core/config/application-config.service.ts +34 -0
  372. package/aaaa/client/layout/shared/core/config/db-config.service.ts +20 -0
  373. package/aaaa/client/layout/shared/core/guard/can-modify.guard.ts +51 -0
  374. package/aaaa/client/layout/shared/core/guard/login.guard.ts +24 -0
  375. package/aaaa/client/layout/shared/core/guard/ui.guard.ts +94 -0
  376. package/aaaa/client/layout/shared/core/interceptor/handle-req.interceptor.ts +31 -0
  377. package/aaaa/client/layout/shared/core/interceptor/index.ts +10 -0
  378. package/aaaa/client/layout/shared/core/request/pageable.model.ts +5 -0
  379. package/aaaa/client/layout/shared/core/request/request-util.ts +21 -0
  380. package/aaaa/client/layout/shared/core/resolver/accueil.resolver.ts +19 -0
  381. package/aaaa/client/layout/shared/core/storage/MyLocalStorageService.ts +22 -0
  382. package/aaaa/client/layout/shared/core/storage/MyStorageService.ts +17 -0
  383. package/aaaa/client/layout/shared/dev/dev-dashboard/dev-dashboard.component.html +26 -0
  384. package/aaaa/client/layout/shared/dev/dev-dashboard/dev-dashboard.component.scss +68 -0
  385. package/aaaa/client/layout/shared/dev/dev-dashboard/dev-dashboard.component.ts +24 -0
  386. package/aaaa/client/layout/shared/dev/dev-routing.module.ts +19 -0
  387. package/aaaa/client/layout/shared/dev/dev.module.ts +76 -0
  388. package/aaaa/client/layout/shared/entities/claims.model.ts +9 -0
  389. package/aaaa/client/layout/shared/entities/user.model.ts +9 -0
  390. package/aaaa/client/layout/shared/i18n/fr.json +74 -0
  391. package/aaaa/client/layout/shared/service/dev.service.ts +21 -0
  392. package/aaaa/client/layout/shared/service/policy.service.ts +22 -0
  393. package/aaaa/client/layout/shared/service/user.service.ts +71 -0
  394. package/aaaa/client/layout/shared/shared.module.ts +11 -0
  395. package/aaaa/client/layout/shared/utils/globals.ts +85 -0
  396. package/aaaa/client/layout/shared/utils/misc.ts +31 -0
  397. package/aaaa/client/main-routing.module.ts +47 -0
  398. package/aaaa/client/main.ts +13 -0
  399. package/aaaa/client/pages.module.ts +76 -0
  400. package/aaaa/client/polyfills.ts +64 -0
  401. package/aaaa/client/styles.scss +45 -0
  402. package/aaaa/client/themes.scss +84 -0
  403. package/aaaa/cypress/fixtures/example.json +5 -0
  404. package/aaaa/cypress/support/commands.ts +37 -0
  405. package/aaaa/cypress/support/component-index.html +12 -0
  406. package/aaaa/cypress/support/component.ts +39 -0
  407. package/aaaa/cypress.config.ts +11 -0
  408. package/aaaa/logo.png +0 -0
  409. package/aaaa/package.json +84 -0
  410. package/aaaa/policies/ui.policy.json +4 -0
  411. package/aaaa/pom.xml +59 -0
  412. package/aaaa/run.sh +7 -0
  413. package/aaaa/tsconfig.app.json +9 -0
  414. package/aaaa/tsconfig.json +39 -0
  415. package/aaaa/tsconfig.spec.json +9 -0
  416. package/aaaa/yarn.lock +8987 -0
  417. package/cmd/init.js +1 -1
  418. package/lib/s3.js +2 -8
  419. package/package.json +1 -1
@@ -0,0 +1,484 @@
1
+ module.exports = (args) => {
2
+ const hb = require('handlebars');
3
+ const fs = require('fs');
4
+ const path = require('path');
5
+ const { Sequelize } = require('sequelize');
6
+ const ora = require('ora');
7
+
8
+ const pgToJavaMapping = {
9
+ 'character varying': 'String',
10
+ varchar: 'String',
11
+ text: 'String',
12
+ character: 'String',
13
+ char: 'String',
14
+ bigint: 'Long',
15
+ smallint: 'Short',
16
+ integer: 'Integer',
17
+ int: 'Integer',
18
+ 'double precision': 'Double',
19
+ real: 'Float',
20
+ boolean: 'Boolean',
21
+ bytea: 'byte[]',
22
+ timestamp: 'Timestamp',
23
+ 'timestamp without time zone': 'Timestamp',
24
+ 'timestamp with time zone': 'OffsetDateTime',
25
+ date: 'LocalDate',
26
+ time: 'LocalTime',
27
+ 'time without time zone': 'LocalTime',
28
+ 'time with time zone': 'OffsetTime',
29
+ numeric: 'BigDecimal',
30
+ decimal: 'BigDecimal',
31
+ json: 'String',
32
+ jsonb: 'String',
33
+ uuid: 'UUID',
34
+ cidr: 'String',
35
+ inet: 'String',
36
+ macaddr: 'String',
37
+ macaddr8: 'String',
38
+ point: 'PGpoint',
39
+ line: 'String',
40
+ lseg: 'String',
41
+ box: 'String',
42
+ path: 'String',
43
+ polygon: 'String',
44
+ circle: 'String',
45
+ interval: 'Duration',
46
+ bit: 'BitSet',
47
+ 'bit varying': 'BitSet',
48
+ varbit: 'BitSet',
49
+ tsvector: 'String',
50
+ tsquery: 'String',
51
+ oid: 'Long',
52
+ xid: 'Long',
53
+ cid: 'Long',
54
+ pg_lsn: 'Long',
55
+ txid_snapshot: 'String',
56
+ int2vector: 'String',
57
+ pg_ddl_command: 'String',
58
+ void: 'Void',
59
+ event_trigger: 'String',
60
+ pg_snapshot: 'String',
61
+ regproc: 'String',
62
+ regprocedure: 'String',
63
+ regoper: 'String',
64
+ regoperator: 'String',
65
+ regclass: 'String',
66
+ regtype: 'String',
67
+ regrole: 'String',
68
+ regnamespace: 'String',
69
+ regconfig: 'String',
70
+ regdictionary: 'String',
71
+ };
72
+
73
+ function mapType(type) {
74
+ return pgToJavaMapping[type] || 'String';
75
+ }
76
+
77
+ const getTableComposition = async (schemaName, tb) => {
78
+ let query = `
79
+ WITH primary_keys AS (
80
+ SELECT
81
+ kcu.table_name,
82
+ kcu.column_name
83
+ FROM
84
+ information_schema.table_constraints tc
85
+ JOIN
86
+ information_schema.key_column_usage kcu
87
+ ON tc.constraint_name = kcu.constraint_name
88
+ WHERE
89
+ tc.constraint_type = 'PRIMARY KEY'
90
+ AND tc.table_schema = :schemaName
91
+ ),
92
+
93
+ foreign_keys AS (
94
+ SELECT
95
+ kcu.table_name,
96
+ kcu.column_name,
97
+ ccu.table_name AS foreign_table_name,
98
+ ccu.column_name AS foreign_column_name
99
+ FROM
100
+ information_schema.table_constraints tc
101
+ JOIN
102
+ information_schema.key_column_usage kcu
103
+ ON tc.constraint_name = kcu.constraint_name
104
+ JOIN
105
+ information_schema.constraint_column_usage ccu
106
+ ON tc.constraint_name = ccu.constraint_name
107
+ WHERE
108
+ tc.constraint_type = 'FOREIGN KEY'
109
+ AND tc.table_schema = :schemaName
110
+ )
111
+
112
+ SELECT
113
+ tbl.table_schema,
114
+ tbl.table_name,
115
+ a.attname AS field_name,
116
+ format_type(a.atttypid, a.atttypmod) AS data_type,
117
+ CASE
118
+ WHEN pk.column_name IS NOT NULL THEN 'YES'
119
+ ELSE 'NO'
120
+ END AS is_primary_key,
121
+ fk.foreign_table_name,
122
+ fk.foreign_column_name
123
+ FROM
124
+ information_schema.tables tbl
125
+ JOIN
126
+ pg_attribute a
127
+ ON tbl.table_name::regclass = a.attrelid
128
+ LEFT JOIN
129
+ primary_keys pk
130
+ ON tbl.table_name = pk.table_name AND a.attname = pk.column_name
131
+ LEFT JOIN
132
+ foreign_keys fk
133
+ ON tbl.table_name = fk.table_name AND a.attname = fk.column_name
134
+ WHERE
135
+ a.attnum > 0
136
+ AND NOT a.attisdropped
137
+ AND tbl.table_schema = :schemaName
138
+ AND tbl.table_type = 'BASE TABLE'
139
+ AND tbl.table_name= :tb
140
+ ORDER BY
141
+ tbl.table_name,
142
+ a.attname;
143
+ `;
144
+
145
+ try {
146
+ const result = await sequelize.query(query, {
147
+ replacements: { schemaName, tb },
148
+ type: Sequelize.QueryTypes.SELECT,
149
+ });
150
+
151
+ return result;
152
+ } catch (error) {
153
+ console.error('Failed to fetch table composition:', error);
154
+ }
155
+ };
156
+ const SETUP = fs.readFileSync(`${__dirname}/../../../.uuid`, 'utf-8');
157
+ require('dotenv').config({
158
+ path: `${__dirname}/../../../../docker/${SETUP}/.env`,
159
+ });
160
+
161
+ const uri = `postgres://${process.env.POSTGRES_USER}:${process.env.POSTGRES_PASSWORD}@localhost:${process.env.POSTGRES_DEV_PORT}/${process.env.POSTGRES_DB}`;
162
+ const sequelize = new Sequelize(uri, {
163
+ logging: false,
164
+ });
165
+
166
+ const dir = __dirname + '/../../../../api';
167
+ const data_dir = fs.readdirSync(dir);
168
+ const commondir = 'main/java/fr/cerema/dsi';
169
+ const commondot = commondir.replace(/\//g, '.').split('main.java.')[1];
170
+
171
+ let data = data_dir.find((item) => item.includes('-data'));
172
+ const schema = data.split('-data')[0];
173
+
174
+ if (args.length == 0)
175
+ return console.log("\nLe nom de l'objet est manquant\n");
176
+
177
+ const capitalizeFirstLetter = (str) => {
178
+ if (!str || typeof str !== 'string') {
179
+ return '';
180
+ }
181
+ return str.charAt(0).toUpperCase() + str.slice(1);
182
+ };
183
+
184
+ const ObjectName = capitalizeFirstLetter(args[0]);
185
+
186
+ const controller = `package ${commondot}.${schema}.controllers;
187
+
188
+ import java.util.List;
189
+ import java.util.Optional;
190
+ import java.util.stream.Collectors;
191
+
192
+ import org.springframework.beans.factory.annotation.Autowired;
193
+ import org.springframework.http.HttpStatus;
194
+ import org.springframework.web.bind.annotation.CrossOrigin;
195
+ import org.springframework.web.bind.annotation.DeleteMapping;
196
+ import org.springframework.web.bind.annotation.GetMapping;
197
+ import org.springframework.web.bind.annotation.PathVariable;
198
+ import org.springframework.web.bind.annotation.PostMapping;
199
+ import org.springframework.web.bind.annotation.RequestBody;
200
+ import org.springframework.web.bind.annotation.RequestMapping;
201
+ import org.springframework.web.bind.annotation.RestController;
202
+ import org.springframework.web.server.ResponseStatusException;
203
+
204
+ import io.swagger.v3.oas.annotations.tags.Tag;
205
+
206
+ import ${commondot}.${schema}.services.${ObjectName}Service;
207
+ import ${commondot}.${schema}.services.UserService;
208
+ import ${commondot}.${schema}.dto.${ObjectName}DTO;
209
+ import ${commondot}.${schema}.entities.${ObjectName};
210
+ import ${commondot}.${schema}.entities.User;
211
+
212
+ import ${commondot}.${schema}.mapper.${ObjectName}Mapper;
213
+
214
+ @Tag(name = "${ObjectName}", description = "${ObjectName} endpoints")
215
+ @RestController
216
+ @RequestMapping("/api/${args[0]}")
217
+ @CrossOrigin
218
+ public class ${ObjectName}Controller {
219
+
220
+ @Autowired
221
+ private ${ObjectName}Service ${args[0]}Service;
222
+
223
+ @Autowired
224
+ private ${ObjectName}Mapper ${args[0]}Mapper;
225
+
226
+ @GetMapping
227
+ public List<${ObjectName}DTO> getAll${ObjectName}() {
228
+ return ${args[0]}Service.getAll${ObjectName}().stream()
229
+ .map(${args[0]}Mapper::toDTO)
230
+ .collect(Collectors.toList());
231
+ }
232
+
233
+ @GetMapping("/{id}")
234
+ public ${ObjectName}DTO get${ObjectName}ById(@PathVariable Long id) {
235
+ return ${args[0]}Mapper.toDTO(${args[0]}Service.get${ObjectName}ById(id));
236
+ }
237
+
238
+ @PostMapping
239
+ public ${ObjectName}DTO createTodo(@RequestBody ${ObjectName}DTO ${args[0]}DTO) {
240
+ return ${args[0]}Mapper.toDTO(${args[0]}Service.save${ObjectName}(${args[0]}Mapper.toEntity(${args[0]}DTO)));
241
+ }
242
+
243
+ @DeleteMapping("/{id}")
244
+ public void delete${ObjectName}(@PathVariable Long id) {
245
+ ${args[0]}Service.delete${ObjectName}(id);
246
+ }
247
+ }`;
248
+ const service = `package ${commondot}.${schema}.services;
249
+
250
+ import ${commondot}.commons.services.GenericService;
251
+ import ${commondot}.${schema}.entities.${ObjectName};
252
+
253
+ import java.util.List;
254
+
255
+ import org.springframework.stereotype.Service;
256
+ import org.springframework.transaction.annotation.Propagation;
257
+ import org.springframework.transaction.annotation.Transactional;
258
+
259
+ @Service("${args[0]}Service")
260
+ @Transactional(propagation = Propagation.REQUIRED, readOnly = true)
261
+ public interface ${ObjectName}Service extends GenericService<${ObjectName}, {{DATA_TYPE}}> {
262
+
263
+ List<${ObjectName}> getAll${ObjectName}();
264
+
265
+ ${ObjectName} get${ObjectName}ById(Long id);
266
+
267
+ ${ObjectName} save${ObjectName}(${ObjectName} ${args[0]});
268
+
269
+ void delete${ObjectName}(Long id);
270
+ }`;
271
+
272
+ const repository = `package ${commondot}.${schema}.repositories;
273
+
274
+ import ${commondot}.commons.repositories.GenericRepository;
275
+ import ${commondot}.${schema}.entities.{{ObjectName}};
276
+ import org.springframework.stereotype.Repository;
277
+ import org.springframework.transaction.annotation.Propagation;
278
+ import org.springframework.transaction.annotation.Transactional;
279
+
280
+ @Repository
281
+ @Transactional(propagation = Propagation.MANDATORY)
282
+ public interface {{ObjectName}}Repository extends GenericRepository<{{ObjectName}}, {{DATA_TYPE}}> {
283
+ }`;
284
+
285
+ const service_impl = `package ${commondot}.${schema}.services.impl;
286
+
287
+
288
+ import ${commondot}.commons.services.GenericServiceImpl;
289
+
290
+ import org.springframework.stereotype.Service;
291
+ import org.springframework.transaction.annotation.Propagation;
292
+ import org.springframework.transaction.annotation.Transactional;
293
+
294
+ import ${commondot}.${schema}.entities.${ObjectName};
295
+ import ${commondot}.${schema}.repositories.${ObjectName}Repository;
296
+ import org.springframework.beans.factory.annotation.Autowired;
297
+ import ${commondot}.${schema}.services.${ObjectName}Service;
298
+
299
+ import java.util.List;
300
+
301
+ @Service
302
+ @Transactional(propagation = Propagation.REQUIRED, readOnly = true)
303
+ public class ${ObjectName}ServiceImpl extends GenericServiceImpl<${ObjectName}, {{DATA_TYPE}}> implements ${ObjectName}Service {
304
+
305
+ @Autowired
306
+ private ${ObjectName}Repository ${args[0]}Repository;
307
+
308
+ @Override
309
+ public List<${ObjectName}> getAll${ObjectName}() {
310
+ return ${args[0]}Repository.findAll();
311
+ }
312
+
313
+ @Override
314
+ public ${ObjectName} get${ObjectName}ById(Long id) {
315
+ return ${args[0]}Repository.findById(id).orElse(null);
316
+ }
317
+
318
+ @Override
319
+ public ${ObjectName} save${ObjectName}(${ObjectName} ${args[0]}) {
320
+ return ${args[0]}Repository.save(${args[0]});
321
+ }
322
+
323
+ @Override
324
+ public void delete${ObjectName}(Long id) {
325
+ ${args[0]}Repository.deleteById(id);
326
+ }
327
+ }`;
328
+ let mapper = `package ${commondot}.${schema}.mapper;
329
+
330
+ import ${commondot}.${schema}.dto.${ObjectName}DTO;
331
+ import ${commondot}.${schema}.entities.${ObjectName};
332
+ import org.mapstruct.Mapper;
333
+ import org.mapstruct.Mapping;
334
+
335
+ @Mapper(componentModel = "spring", uses = {UserMapper.class})
336
+ public interface ${ObjectName}Mapper {
337
+
338
+ ${ObjectName}DTO toDTO(${ObjectName} ${args[0]});
339
+
340
+ ${ObjectName} toEntity(${ObjectName}DTO dto);`;
341
+
342
+ let dto = `package ${commondot}.${schema}.dto;
343
+
344
+ public class ${ObjectName}DTO extends GenericDTO{`;
345
+
346
+ const persistence_dir = path.resolve(
347
+ `${__dirname}/../../../../api/${schema}-persistance/src/${commondir}/${schema}/repositories`
348
+ );
349
+ const metier_dir = path.resolve(
350
+ `${__dirname}/../../../../api/${schema}-metier/src/${commondir}/${schema}/services`
351
+ );
352
+ const metier_impl_dir = path.resolve(
353
+ `${__dirname}/../../../../api/${schema}-metier/src/${commondir}/${schema}/services/Impl`
354
+ );
355
+ const presentation_dir = path.resolve(
356
+ `${__dirname}/../../../../api/${schema}-presentation/src/${commondir}/${schema}/`
357
+ );
358
+
359
+ const metier_filename =
360
+ metier_dir + '/' + capitalizeFirstLetter(ObjectName) + 'Service.java';
361
+ const metier_impl_filename =
362
+ metier_impl_dir +
363
+ '/' +
364
+ capitalizeFirstLetter(ObjectName) +
365
+ 'ServiceImpl.java';
366
+
367
+ const Service = hb.compile(service);
368
+
369
+ const Repository = hb.compile(repository);
370
+ const ServiceImpl = hb.compile(service_impl);
371
+
372
+ const repository_filename =
373
+ persistence_dir +
374
+ '/' +
375
+ capitalizeFirstLetter(ObjectName) +
376
+ 'Repository.java';
377
+
378
+ const spinner = ora("Generation de l'API pour " + args[0]).start();
379
+ getTableComposition(schema, args[0]).then((result) => {
380
+ if (result.length == 0) {
381
+ spinner.fail('La table ' + args[0] + " n'existe pas");
382
+ return sequelize.close();
383
+ }
384
+
385
+ const dto_filename =
386
+ presentation_dir +
387
+ '/dto/' +
388
+ capitalizeFirstLetter(ObjectName) +
389
+ 'DTO.java';
390
+ const mapper_filename =
391
+ presentation_dir +
392
+ '/mapper/' +
393
+ capitalizeFirstLetter(ObjectName) +
394
+ 'Mapper.java';
395
+ const controller_filename =
396
+ presentation_dir +
397
+ '/controllers/' +
398
+ capitalizeFirstLetter(ObjectName) +
399
+ 'Controller.java';
400
+
401
+ if (args[1] == '--remove') {
402
+ try {
403
+ fs.unlinkSync(repository_filename);
404
+ fs.unlinkSync(metier_filename);
405
+ fs.unlinkSync(metier_impl_filename);
406
+ fs.unlinkSync(dto_filename);
407
+ fs.unlinkSync(mapper_filename);
408
+ fs.unlinkSync(controller_filename);
409
+ } catch (e) {
410
+ spinner.fail("Le mapping objet n'existe pas");
411
+ sequelize.close();
412
+ return console.log(e);
413
+ }
414
+ sequelize.close();
415
+ return spinner.succeed('Suppression de ' + args[0] + ' effectuée.');
416
+ }
417
+
418
+ let privates = [];
419
+ let getters = [];
420
+ let setters = [];
421
+ let DATA_TYPE = 'Long';
422
+
423
+ fs.writeFileSync(
424
+ repository_filename,
425
+ Repository({ ObjectName, DATA_TYPE })
426
+ );
427
+ fs.writeFileSync(metier_filename, Service({ ObjectName, DATA_TYPE }));
428
+ fs.writeFileSync(
429
+ metier_impl_filename,
430
+ ServiceImpl({ ObjectName, DATA_TYPE })
431
+ );
432
+
433
+ for (let i = 0; i < result.length; i++) {
434
+ let data_type = mapType(result[i].data_type);
435
+ if (result[i].field_name == 'id') data_type = 'Long';
436
+ let fieldName = result[i].field_name;
437
+ const capitalizedFieldName = capitalizeFirstLetter(fieldName);
438
+
439
+ // Generate private field
440
+ if (result[i].foreign_table_name) {
441
+ if (result[i].foreign_table_name == 'users') {
442
+ fieldName = 'User';
443
+ data_type = fieldName + 'DTO';
444
+ } else {
445
+ fieldName = capitalizeFirstLetter(result[i].foreign_table_name);
446
+ data_type = capitalizeFirstLetter(fieldName) + 'DTO';
447
+ }
448
+ }
449
+
450
+ const prv = `private ${data_type} ${fieldName};`;
451
+
452
+ privates.push(prv);
453
+
454
+ // Generate getter
455
+ const getter = `
456
+ public ${data_type} get${capitalizedFieldName}() {
457
+ return ${fieldName};
458
+ }
459
+ `;
460
+ getters.push(getter);
461
+
462
+ // Generate setter
463
+ const setter = `
464
+ public void set${capitalizedFieldName}(${data_type} ${fieldName}) {
465
+ this.${fieldName} = ${fieldName};
466
+ }
467
+ `;
468
+ setters.push(setter);
469
+ }
470
+ dto +=
471
+ '\n' +
472
+ privates.join('\n') +
473
+ getters.join('\n') +
474
+ setters.join('\n') +
475
+ '}';
476
+
477
+ fs.writeFileSync(dto_filename, dto);
478
+ fs.writeFileSync(mapper_filename, mapper + '\n}');
479
+ fs.writeFileSync(controller_filename, controller);
480
+
481
+ spinner.succeed(`/api/${args[0]} a été généré.`);
482
+ sequelize.close();
483
+ });
484
+ };
@@ -0,0 +1,36 @@
1
+ module.exports = (args) => {
2
+ const fs = require('fs');
3
+ const Path = require('path');
4
+
5
+ const templates = require('../../lib/templates');
6
+
7
+ const mkdir = (path) => {
8
+ if (!fs.existsSync(path)) fs.mkdirSync(path, { recursive: true });
9
+ };
10
+
11
+ // Supprime le slash initial s'il existe
12
+ let arg = args[0].startsWith('/') ? args[0].slice(1) : args[0];
13
+ arg = arg.split('/')[0];
14
+
15
+ const pagePath = Path.normalize(
16
+ __dirname + '/../../../../client/app/components/' + arg
17
+ );
18
+ const page = arg.split('/');
19
+ const name = page[page.length - 1];
20
+ const nameUpper = name.charAt(0).toUpperCase() + name.slice(1);
21
+
22
+ mkdir(pagePath);
23
+
24
+ fs.writeFileSync(
25
+ pagePath + '/' + name + '.component.html',
26
+ templates.cxHTML({ name: name, nameUpperCase: nameUpper })
27
+ );
28
+ fs.writeFileSync(
29
+ pagePath + '/' + name + '.component.ts',
30
+ templates.cxTS({ name: name, nameUpperCase: nameUpper })
31
+ );
32
+ fs.writeFileSync(
33
+ pagePath + '/' + name + '.component.scss',
34
+ templates.cxCSS({ name: name, nameUpperCase: nameUpper })
35
+ );
36
+ };
@@ -0,0 +1,163 @@
1
+ module.exports = (args) => {
2
+ const fs = require('fs');
3
+ const Path = require('path');
4
+
5
+ const templates = require('../../lib/templates');
6
+
7
+ const modifyRoutes = (routes) => {
8
+ routes.forEach((route) => {
9
+ if (route.children) {
10
+ // Move the component into children with empty path
11
+ route.children.unshift({
12
+ path: '',
13
+ component: route.component,
14
+ });
15
+ delete route.component;
16
+
17
+ // Recursively modify the child routes
18
+ modifyRoutes(route.children);
19
+ }
20
+ });
21
+ };
22
+
23
+ const pathsToJson = (paths) => {
24
+ const routes = [];
25
+ const imports = [];
26
+
27
+ paths.forEach((path) => {
28
+ const parts = path.split('/').filter(Boolean); // removes empty strings
29
+ let currentRoute = routes;
30
+
31
+ parts.forEach((part, index) => {
32
+ // Check if the part is 'root'
33
+ let componentPathPart = part;
34
+ if (part === 'root') {
35
+ part = ''; // Change 'root' to empty string
36
+ }
37
+
38
+ let existingRoute = currentRoute.find((route) => route.path === part);
39
+
40
+ if (!existingRoute) {
41
+ existingRoute = { path: part };
42
+ currentRoute.push(existingRoute);
43
+ }
44
+
45
+ if (index === parts.length - 1) {
46
+ existingRoute.component =
47
+ componentPathPart.charAt(0).toUpperCase() +
48
+ componentPathPart.slice(1) +
49
+ 'Component';
50
+ const componentName = existingRoute.component;
51
+
52
+ if (!imports.find((imp) => imp.name === componentName)) {
53
+ // Generate the correct import path
54
+ const importPath =
55
+ './' +
56
+ (path + '/' + componentPathPart + '.component').replace(
57
+ /^\//,
58
+ ''
59
+ );
60
+ imports.push({
61
+ name: componentName,
62
+ path: importPath,
63
+ });
64
+ }
65
+ }
66
+
67
+ if (index !== parts.length - 1) {
68
+ if (!existingRoute.children) {
69
+ existingRoute.children = [];
70
+ }
71
+ currentRoute = existingRoute.children;
72
+ }
73
+ });
74
+ });
75
+
76
+ return {
77
+ imports: imports,
78
+ routes: routes,
79
+ };
80
+ };
81
+
82
+ const mkdir = (path) => {
83
+ if (!fs.existsSync(path)) fs.mkdirSync(path, { recursive: true });
84
+ };
85
+
86
+ // Supprime le slash initial s'il existe
87
+ const arg = args[0].startsWith('/') ? args[0].slice(1) : args[0];
88
+
89
+ try {
90
+ var routes = require(__dirname +
91
+ '/../../../../.cadriciel/routes/root.json');
92
+ } catch (e) {
93
+ var routes = ['root'];
94
+ mkdir(__dirname + '/../../../../.cadriciel/routes');
95
+ }
96
+
97
+ if (routes.indexOf(arg) > -1)
98
+ return console.log('\nERREUR:\nLa page existe déjà\n\n');
99
+
100
+ const pagePath = Path.normalize(
101
+ __dirname + '/../../../../client/app/pages/' + arg
102
+ );
103
+ const page = arg.split('/');
104
+ const name = page[page.length - 1];
105
+ const nameUpper = name.charAt(0).toUpperCase() + name.slice(1);
106
+
107
+ mkdir(pagePath);
108
+
109
+ fs.writeFileSync(
110
+ pagePath + '/' + name + '.component.html',
111
+ templates.html({ name: name, nameUpperCase: nameUpper })
112
+ );
113
+ fs.writeFileSync(
114
+ pagePath + '/' + name + '.component.ts',
115
+ templates.ts({ name: name, nameUpperCase: nameUpper })
116
+ );
117
+ fs.writeFileSync(
118
+ pagePath + '/' + name + '.component.scss',
119
+ templates.scss({ name: name, nameUpperCase: nameUpper })
120
+ );
121
+
122
+ routes.push(arg);
123
+
124
+ var path = pathsToJson(routes);
125
+ modifyRoutes(path.routes);
126
+
127
+ const ts = templates.route({ imports: path.imports, routes: path.routes });
128
+
129
+ const routePath = Path.normalize(
130
+ __dirname + '/../../../../client/app/pages/pages-routing.module.ts'
131
+ );
132
+
133
+ fs.writeFileSync(
134
+ __dirname + '/../../../../.cadriciel/routes/root.json',
135
+ JSON.stringify(routes)
136
+ );
137
+
138
+ fs.writeFileSync(routePath, ts);
139
+
140
+ // menu
141
+ const menuPath = Path.normalize(
142
+ __dirname + '/../../../../client/app/menu.json'
143
+ );
144
+ var menu = require(menuPath);
145
+ var pos = -1;
146
+ for (let i = 0; i < menu.length; i++) {
147
+ if (menu[i].label == 'PAGES') pos = i;
148
+ }
149
+ if (pos == -1) {
150
+ menu.push({
151
+ label: 'PAGES',
152
+ icon: 'pi pi-hashtag',
153
+ items: [],
154
+ });
155
+ pos = menu.length - 1;
156
+ }
157
+ menu[pos].items.push({
158
+ label: nameUpper,
159
+ icon: 'pi pi-bookmark-fill',
160
+ routerLink: ['/pages/' + arg],
161
+ });
162
+ fs.writeFileSync(menuPath, JSON.stringify(menu, null, 4));
163
+ };