ontomde-demos 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (313) hide show
  1. data/History.txt +2 -0
  2. data/Manifest.txt +312 -0
  3. data/README.txt +48 -0
  4. data/Rakefile +22 -0
  5. data/bin/ontomde-demos-install +10 -0
  6. data/demo/adobe-flex/1-unpack.bat +6 -0
  7. data/demo/adobe-flex/1-unpack.sh +5 -0
  8. data/demo/adobe-flex/2-generate.bat +4 -0
  9. data/demo/adobe-flex/2-generate.sh +5 -0
  10. data/demo/adobe-flex/3-flex.bat +4 -0
  11. data/demo/adobe-flex/3-flex.sh +4 -0
  12. data/demo/adobe-flex/4-start-webapp.bat +7 -0
  13. data/demo/adobe-flex/4-start-webapp.sh +4 -0
  14. data/demo/adobe-flex/9-eclipse.bat +5 -0
  15. data/demo/adobe-flex/9-eclipse.sh +6 -0
  16. data/demo/adobe-flex/README.txt +79 -0
  17. data/demo/adobe-flex/domain/pom.xml +61 -0
  18. data/demo/adobe-flex/ear/pom.xml +160 -0
  19. data/demo/adobe-flex/flex2_sdk/README.txt +7 -0
  20. data/demo/adobe-flex/flex2_sdk/flex2_sdk_hf1_download.URL +2 -0
  21. data/demo/adobe-flex/mda/.ontomde-java +75 -0
  22. data/demo/adobe-flex/mda/clean-generated.sh +24 -0
  23. data/demo/adobe-flex/mda/pom.xml +110 -0
  24. data/demo/adobe-flex/mda/src/main/mda/customDataTypes.rb +5 -0
  25. data/demo/adobe-flex/mda/src/main/mda/dbDiscriminatorCache.rb +74 -0
  26. data/demo/adobe-flex/mda/src/main/mda/javaMapping.rb-notused +302 -0
  27. data/demo/adobe-flex/mda/src/main/mda/mda.rb +0 -0
  28. data/demo/adobe-flex/mda/src/main/model/.project +11 -0
  29. data/demo/adobe-flex/mda/src/main/model/model.emx +1779 -0
  30. data/demo/adobe-flex/mda/src/main/model/model.emx.nt +3575 -0
  31. data/demo/adobe-flex/mda/src/main/model/model.emx.nt_kb.pprj +1496 -0
  32. data/demo/adobe-flex/mda/src/main/model/model.emx.nt_kb.rdf +25 -0
  33. data/demo/adobe-flex/mda/src/main/model/model.emx.nt_kb.rdfs +2242 -0
  34. data/demo/adobe-flex/mda/src/main/resources/formatter.properties +260 -0
  35. data/demo/adobe-flex/pom.xml +97 -0
  36. data/demo/adobe-flex/projectbase/pom.xml +132 -0
  37. data/demo/adobe-flex/webapp/pom.xml +126 -0
  38. data/demo/apache-struts-mesContacts/1-base.bat +6 -0
  39. data/demo/apache-struts-mesContacts/1-base.sh +6 -0
  40. data/demo/apache-struts-mesContacts/2-unpack.bat +6 -0
  41. data/demo/apache-struts-mesContacts/2-unpack.sh +6 -0
  42. data/demo/apache-struts-mesContacts/3-generate.bat +4 -0
  43. data/demo/apache-struts-mesContacts/3-generate.sh +7 -0
  44. data/demo/apache-struts-mesContacts/4-start-webapp-nosecurity.bat +4 -0
  45. data/demo/apache-struts-mesContacts/4-start-webapp-nosecurity.sh +6 -0
  46. data/demo/apache-struts-mesContacts/5-start-webapp.bat +7 -0
  47. data/demo/apache-struts-mesContacts/5-start-webapp.sh +6 -0
  48. data/demo/apache-struts-mesContacts/9-eclipse.bat +5 -0
  49. data/demo/apache-struts-mesContacts/9-eclipse.sh +8 -0
  50. data/demo/apache-struts-mesContacts/domain/pom.xml +77 -0
  51. data/demo/apache-struts-mesContacts/domain/src/main/java/gUI/ContactList.java +400 -0
  52. data/demo/apache-struts-mesContacts/domain/src/main/java/service/ContactManager.java +162 -0
  53. data/demo/apache-struts-mesContacts/domain/src/main/java/service/ContactManagerImpl.java +68 -0
  54. data/demo/apache-struts-mesContacts/domain/src/main/java/xmda/security/GlobalComputedAccessControlCriteria.java +29 -0
  55. data/demo/apache-struts-mesContacts/domain/src/main/java/xmda/security/GlobalComputedAccessControlCriteria.java.mda +37 -0
  56. data/demo/apache-struts-mesContacts/domain/src/main/java/xmda/security/ProviderImpl.java +303 -0
  57. data/demo/apache-struts-mesContacts/mda/.ontomde-java +71 -0
  58. data/demo/apache-struts-mesContacts/mda/clean-generated.sh +24 -0
  59. data/demo/apache-struts-mesContacts/mda/pom.xml +75 -0
  60. data/demo/apache-struts-mesContacts/mda/src/main/mda/customDataTypes.rb +6 -0
  61. data/demo/apache-struts-mesContacts/mda/src/main/mda/dbDiscriminatorCache.rb +88 -0
  62. data/demo/apache-struts-mesContacts/mda/src/main/mda/mda.rb +0 -0
  63. data/demo/apache-struts-mesContacts/mda/src/main/model/.project +12 -0
  64. data/demo/apache-struts-mesContacts/mda/src/main/model/model.emx +2106 -0
  65. data/demo/apache-struts-mesContacts/mda/src/main/model/model.emx.nt +4449 -0
  66. data/demo/apache-struts-mesContacts/mda/src/main/model/model.emx.nt.pprj +1509 -0
  67. data/demo/apache-struts-mesContacts/mda/src/main/model/model.emx.nt.rdf +173 -0
  68. data/demo/apache-struts-mesContacts/mda/src/main/model/model.emx.nt.rdfs +2501 -0
  69. data/demo/apache-struts-mesContacts/mda/src/main/resources/formatter.properties +260 -0
  70. data/demo/apache-struts-mesContacts/pom.xml +20 -0
  71. data/demo/apache-struts-mesContacts/projectbase/pom.xml +123 -0
  72. data/demo/apache-struts-mesContacts/webapp/pom.xml +304 -0
  73. data/demo/apache-struts-mesContacts/webapp/src/main/java/gUI/methods/struts/ContactListnewContactMPCStrutsAction.java +392 -0
  74. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/all.jsp +1 -0
  75. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/index.jsp +15 -0
  76. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/index.jsp.mda +930 -0
  77. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/pages/domain/form/Contactall.jsp +211 -0
  78. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/pages/domain/form/Contactall.jsp.mda +1247 -0
  79. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/pages/gUI/form/ContactListall.jsp +235 -0
  80. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/pages/gUI/form/ContactListall.jsp.mda +1086 -0
  81. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/pages/gUI/methods/form/ContactListnewContactMPCall.jsp +143 -0
  82. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/pages/gUI/methods/form/ContactListnewContactMPCall.jsp.mda +1041 -0
  83. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/pages/menu.inc +229 -0
  84. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/add_photo.gif +0 -0
  85. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/attention.gif +0 -0
  86. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/back.gif +0 -0
  87. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/bck_table.gif +0 -0
  88. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/bkg_maligne_gauche_new.gif +0 -0
  89. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/bkg_maligne_new.gif +0 -0
  90. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/bottom.gif +0 -0
  91. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/bt_center.gif +0 -0
  92. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/bt_center_off.gif +0 -0
  93. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/bt_left.gif +0 -0
  94. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/bt_left_off.gif +0 -0
  95. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/bt_right.gif +0 -0
  96. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/bt_right_off.gif +0 -0
  97. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/contact.css +609 -0
  98. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/corner_bottom_left.gif +0 -0
  99. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/corner_bottom_right.gif +0 -0
  100. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/corner_left.gif +0 -0
  101. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/dispo_off.gif +0 -0
  102. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/dispo_on.gif +0 -0
  103. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/export1.gif +0 -0
  104. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/export2.gif +0 -0
  105. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/extraire.gif +0 -0
  106. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/favicon.ico +0 -0
  107. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/fleche.gif +0 -0
  108. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/flecheon.gif +0 -0
  109. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/import1.gif +0 -0
  110. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/import2.gif +0 -0
  111. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/import3.gif +0 -0
  112. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/imprimer.gif +0 -0
  113. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/index.css +611 -0
  114. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/index.dat +7 -0
  115. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/index.html +587 -0
  116. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/left_table.gif +0 -0
  117. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/line.gif +0 -0
  118. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/lineverti.gif +0 -0
  119. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/menu.css +88 -0
  120. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/modifier.gif +0 -0
  121. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/nav.gif +0 -0
  122. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/new.css +470 -0
  123. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/on_mobile.gif +0 -0
  124. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/on_sim_card.gif +0 -0
  125. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/onglet_1_2_on.gif +0 -0
  126. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/onglet_1_3_off.gif +0 -0
  127. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/onglet_2_1_on.gif +0 -0
  128. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/order_up.gif +0 -0
  129. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/picto_ecarte.gif +0 -0
  130. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/picto_email.gif +0 -0
  131. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/picto_fax.gif +0 -0
  132. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/picto_fax2.gif +0 -0
  133. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/picto_home.gif +0 -0
  134. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/picto_home2.gif +0 -0
  135. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/picto_messagerie.gif +0 -0
  136. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/picto_mobile.gif +0 -0
  137. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/picto_mobile2.gif +0 -0
  138. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/picto_secondaire.gif +0 -0
  139. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/picto_sms.gif +0 -0
  140. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/picto_supprimer.gif +0 -0
  141. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/picto_visio.gif +0 -0
  142. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/picto_work.gif +0 -0
  143. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/picto_work2.gif +0 -0
  144. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/point.gif +0 -0
  145. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/print.gif +0 -0
  146. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/profile_homme.gif +0 -0
  147. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/right_table.gif +0 -0
  148. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/right_table_fiche.gif +0 -0
  149. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/tt_encart_infos1.gif +0 -0
  150. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/tt_encart_infos2.gif +0 -0
  151. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/unlimited.gif +0 -0
  152. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/verifier.gif +0 -0
  153. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/vide.gif +0 -0
  154. data/demo/apache-struts-mesContacts/webapp/src/main/webapp/res/voir.gif +0 -0
  155. data/demo/core/README.txt +43 -0
  156. data/demo/core/demo-dsl/bpm.pprj +1745 -0
  157. data/demo/core/demo-dsl/bpm.rdf +140 -0
  158. data/demo/core/demo-dsl/bpm.rdfs +231 -0
  159. data/demo/core/demo-dsl/main_demo_dsl_structured.rb +60 -0
  160. data/demo/core/demo-dumpUMLMetaModel/demo_dump_uml2.rb +144 -0
  161. data/demo/core/demo-generateXML/README.txt +30 -0
  162. data/demo/core/demo-generateXML/main_demo_flatcode.rb +51 -0
  163. data/demo/core/demo-generateXML/main_demo_structured.rb +65 -0
  164. data/demo/core/demo-generateXML/main_demo_template.rb +62 -0
  165. data/demo/core/demo-uml-browsing/main_demo_uml_browsing.rb +49 -0
  166. data/demo/core/demo-umlStateMachine/demo_umlStateMachine.rb +169 -0
  167. data/demo/core/demo-umlStateMachine/model/.project +11 -0
  168. data/demo/core/demo-umlStateMachine/model/StateMachine.PNG +0 -0
  169. data/demo/core/demo-umlStateMachine/model/stateMachine.emx +594 -0
  170. data/demo/core/demo-umlStateMachine/model/stateMachine.emx.nt +2527 -0
  171. data/demo/core/model/README.txt +1 -0
  172. data/demo/core/model/model.emx +1779 -0
  173. data/demo/core/model/model.emx.nt +3575 -0
  174. data/demo/core/model/model.emx.nt_kb.pprj +1438 -0
  175. data/demo/core/model/model.emx.nt_kb.rdf +25 -0
  176. data/demo/java5/EnterpriseArchitect7.1/.classpath +6 -0
  177. data/demo/java5/EnterpriseArchitect7.1/.ontomde-java +17 -0
  178. data/demo/java5/EnterpriseArchitect7.1/.project +17 -0
  179. data/demo/java5/EnterpriseArchitect7.1/.xmda +2 -0
  180. data/demo/java5/EnterpriseArchitect7.1/1-generate.bat +3 -0
  181. data/demo/java5/EnterpriseArchitect7.1/1-generate.sh +3 -0
  182. data/demo/java5/EnterpriseArchitect7.1/2-generateJavadoc.bat +3 -0
  183. data/demo/java5/EnterpriseArchitect7.1/2-generateJavadoc.sh +3 -0
  184. data/demo/java5/EnterpriseArchitect7.1/pom.xml +160 -0
  185. data/demo/java5/EnterpriseArchitect7.1/src/main/mda/customDatatypes.rb +9 -0
  186. data/demo/java5/EnterpriseArchitect7.1/src/main/model/java5_demo.ea71.ea.xmi +4115 -0
  187. data/demo/java5/EnterpriseArchitect7.1/src/main/model/java5_demo.eap +0 -0
  188. data/demo/java5/README.txt +74 -0
  189. data/demo/java5/copyShared.sh +35 -0
  190. data/demo/java5/objecteering6/.classpath +6 -0
  191. data/demo/java5/objecteering6/.ontomde-java +17 -0
  192. data/demo/java5/objecteering6/.project +17 -0
  193. data/demo/java5/objecteering6/.xmda +2 -0
  194. data/demo/java5/objecteering6/1-generate.bat +3 -0
  195. data/demo/java5/objecteering6/1-generate.sh +3 -0
  196. data/demo/java5/objecteering6/2-generateJavadoc.bat +3 -0
  197. data/demo/java5/objecteering6/2-generateJavadoc.sh +3 -0
  198. data/demo/java5/objecteering6/pom.xml +160 -0
  199. data/demo/java5/objecteering6/src/main/mda/customDatatypes.rb +9 -0
  200. data/demo/java5/objecteering6/src/main/model/README.txt +4 -0
  201. data/demo/java5/objecteering6/src/main/model/README_OE.txt +5 -0
  202. data/demo/java5/objecteering6/src/main/model/java5_demo.oe600.nt +18 -0
  203. data/demo/java5/objecteering6/src/main/model/java5_demo.oe600.ofp +0 -0
  204. data/demo/java5/rationalSoftwareModeler6/.classpath +6 -0
  205. data/demo/java5/rationalSoftwareModeler6/.ontomde-java +17 -0
  206. data/demo/java5/rationalSoftwareModeler6/.project +17 -0
  207. data/demo/java5/rationalSoftwareModeler6/.xmda +2 -0
  208. data/demo/java5/rationalSoftwareModeler6/1-generate.bat +3 -0
  209. data/demo/java5/rationalSoftwareModeler6/1-generate.sh +3 -0
  210. data/demo/java5/rationalSoftwareModeler6/2-generateJavadoc.bat +3 -0
  211. data/demo/java5/rationalSoftwareModeler6/2-generateJavadoc.sh +3 -0
  212. data/demo/java5/rationalSoftwareModeler6/model.pdf +0 -0
  213. data/demo/java5/rationalSoftwareModeler6/pom.xml +167 -0
  214. data/demo/java5/rationalSoftwareModeler6/src/main/mda/customDatatypes.rb +9 -0
  215. data/demo/java5/rationalSoftwareModeler6/src/main/model/.project +11 -0
  216. data/demo/java5/rationalSoftwareModeler6/src/main/model/java5_demo.emx +3412 -0
  217. data/demo/java5/rationalSoftwareModeler6/src/main/model/java5_demo.emx.nt +4489 -0
  218. data/demo/java5/rationalSoftwareModeler6/src/main/model/rsm-shortcuts.emx +57 -0
  219. data/demo/jboss-jbpm/1-unpack.sh +5 -0
  220. data/demo/jboss-jbpm/2-generate.sh +5 -0
  221. data/demo/jboss-jbpm/3-start-app.sh +10 -0
  222. data/demo/jboss-jbpm/4-stop-app.sh +7 -0
  223. data/demo/jboss-jbpm/5-debug.sh +18 -0
  224. data/demo/jboss-jbpm/6-nodebug.sh +2 -0
  225. data/demo/jboss-jbpm/9-eclipse.bat +5 -0
  226. data/demo/jboss-jbpm/9-eclipse.sh +6 -0
  227. data/demo/jboss-jbpm/debug.sh +18 -0
  228. data/demo/jboss-jbpm/domain/pom.xml +110 -0
  229. data/demo/jboss-jbpm/domain/src/main/java/cas1/Magasinier.java +233 -0
  230. data/demo/jboss-jbpm/domain/src/main/java/cas2/Banquier.java +172 -0
  231. data/demo/jboss-jbpm/domain/src/main/java/cas2/Client.java +140 -0
  232. data/demo/jboss-jbpm/domain/src/main/java/cas2/Personne.java +225 -0
  233. data/demo/jboss-jbpm/domain/src/main/java/cas3/Commande.java +221 -0
  234. data/demo/jboss-jbpm/domain/src/main/java/cas3/ProcessusPreparation.java +382 -0
  235. data/demo/jboss-jbpm/domain/src/main/java/cas4/CommandeLivraison.java +325 -0
  236. data/demo/jboss-jbpm/domain/src/main/java/cas4/ProcessusLivraison.java +366 -0
  237. data/demo/jboss-jbpm/domain/src/main/java/cas4/TacheHumaine.java +225 -0
  238. data/demo/jboss-jbpm/domain/src/main/java/cas4/TacheSuiteErreurLivraison.java +201 -0
  239. data/demo/jboss-jbpm/domain/src/main/resources/META-INF/persistence.xml +25 -0
  240. data/demo/jboss-jbpm/ear/pom.xml +175 -0
  241. data/demo/jboss-jbpm/mda/clean-generated.sh +24 -0
  242. data/demo/jboss-jbpm/mda/pom.xml +227 -0
  243. data/demo/jboss-jbpm/mda/src/main/mda/customDataTypes.rb +1 -0
  244. data/demo/jboss-jbpm/mda/src/main/mda/dbDiscriminatorCache.rb +72 -0
  245. data/demo/jboss-jbpm/mda/src/main/model/.project +12 -0
  246. data/demo/jboss-jbpm/mda/src/main/model/model.emx +606 -0
  247. data/demo/jboss-jbpm/mda/src/main/model/model.emx.nt +2904 -0
  248. data/demo/jboss-jbpm/mda/src/main/model/model.emx.nt_kb.pprj +1432 -0
  249. data/demo/jboss-jbpm/mda/src/main/model/model.emx.nt_kb.rdf +73 -0
  250. data/demo/jboss-jbpm/mda/src/main/model/model.emx.nt_kb.rdfs +709 -0
  251. data/demo/jboss-jbpm/mda/src/main/process/.classpath +10 -0
  252. data/demo/jboss-jbpm/mda/src/main/process/.project +17 -0
  253. data/demo/jboss-jbpm/mda/src/main/process/processList.txt +2 -0
  254. data/demo/jboss-jbpm/mda/src/main/process/src/cas3.ProcessusPreparation/gpd.xml +43 -0
  255. data/demo/jboss-jbpm/mda/src/main/process/src/cas3.ProcessusPreparation/processdefinition.xml +40 -0
  256. data/demo/jboss-jbpm/mda/src/main/process/src/cas3.ProcessusPreparation/processimage.jpg +0 -0
  257. data/demo/jboss-jbpm/mda/src/main/process/src/cas4.ProcessusLivraison/gpd.xml +30 -0
  258. data/demo/jboss-jbpm/mda/src/main/process/src/cas4.ProcessusLivraison/processdefinition.xml +28 -0
  259. data/demo/jboss-jbpm/mda/src/main/process/src/cas4.ProcessusLivraison/processimage.jpg +0 -0
  260. data/demo/jboss-jbpm/mda/src/main/resources/formatter.properties +260 -0
  261. data/demo/jboss-jbpm/ontomde-bpm-ear-copy/pom.xml +128 -0
  262. data/demo/jboss-jbpm/pom.xml +127 -0
  263. data/demo/jboss-jbpm/projectbase/pom.xml +116 -0
  264. data/demo/jboss-jbpm/readme.txt +15 -0
  265. data/demo/jboss-jbpm/runMyApp.sh +22 -0
  266. data/demo/jboss-jbpm/setenv.sh-sample +7 -0
  267. data/demo/jboss-jbpm/stopMyApp.sh +15 -0
  268. data/demo/jboss-jbpm/stopdebug.sh +2 -0
  269. data/demo/jboss-jbpm/webapp/pom.xml +102 -0
  270. data/demo/spring-acegi/1-base.bat +6 -0
  271. data/demo/spring-acegi/1-base.sh +6 -0
  272. data/demo/spring-acegi/2-unpack.bat +6 -0
  273. data/demo/spring-acegi/2-unpack.sh +6 -0
  274. data/demo/spring-acegi/3-generate.bat +4 -0
  275. data/demo/spring-acegi/3-generate.sh +7 -0
  276. data/demo/spring-acegi/4-start-webapp-nosecurity.bat +4 -0
  277. data/demo/spring-acegi/4-start-webapp-nosecurity.sh +6 -0
  278. data/demo/spring-acegi/5-start-webapp.bat +7 -0
  279. data/demo/spring-acegi/5-start-webapp.sh +6 -0
  280. data/demo/spring-acegi/9-eclipse.bat +5 -0
  281. data/demo/spring-acegi/9-eclipse.sh +8 -0
  282. data/demo/spring-acegi/README.txt +79 -0
  283. data/demo/spring-acegi/doc/images/_Ea8UYu6FEdyp6cGW4pi6rw.GIF +0 -0
  284. data/demo/spring-acegi/doc/images/_XH8XYjuOEdyltIorAFYEcg.GIF +0 -0
  285. data/demo/spring-acegi/doc/images/_o7gEAsg1Edy3YZbvY96G9w.GIF +0 -0
  286. data/demo/spring-acegi/doc/images/_s1Mq8O6sEdyp6cGW4pi6rw.GIF +0 -0
  287. data/demo/spring-acegi/doc/ontomde-demo-acegi-run.wnk +0 -0
  288. data/demo/spring-acegi/domain/pom.xml +68 -0
  289. data/demo/spring-acegi/domain/src/main/java/administration/ApplicationUser.java +503 -0
  290. data/demo/spring-acegi/domain/src/main/java/administration/SecurityPanel.java +1177 -0
  291. data/demo/spring-acegi/domain/src/main/java/demo1GSMNetwork/BaseTransceiverStation.java +434 -0
  292. data/demo/spring-acegi/domain/src/main/java/demo2testModel/Client.java +839 -0
  293. data/demo/spring-acegi/domain/src/main/java/xmda/security/ProviderImpl.java +320 -0
  294. data/demo/spring-acegi/mda/.ontomde-java +71 -0
  295. data/demo/spring-acegi/mda/clean-generated.sh +24 -0
  296. data/demo/spring-acegi/mda/pom.xml +75 -0
  297. data/demo/spring-acegi/mda/src/main/mda/customDataTypes.rb +5 -0
  298. data/demo/spring-acegi/mda/src/main/mda/dbDiscriminatorCache.rb +94 -0
  299. data/demo/spring-acegi/mda/src/main/mda/mda.rb +0 -0
  300. data/demo/spring-acegi/mda/src/main/model/.project +12 -0
  301. data/demo/spring-acegi/mda/src/main/model/model.emx +3137 -0
  302. data/demo/spring-acegi/mda/src/main/model/model.emx.nt +5301 -0
  303. data/demo/spring-acegi/mda/src/main/model/model.emx.nt.pprj +1848 -0
  304. data/demo/spring-acegi/mda/src/main/model/model.emx.nt.rdf +271 -0
  305. data/demo/spring-acegi/mda/src/main/resources/formatter.properties +260 -0
  306. data/demo/spring-acegi/pom.xml +20 -0
  307. data/demo/spring-acegi/projectbase/pom.xml +117 -0
  308. data/demo/spring-acegi/webapp/pom.xml +167 -0
  309. data/demo/uml-profil-for-ibm-rsm6/.project +12 -0
  310. data/demo/uml-profil-for-ibm-rsm6/OntoMDE-profil.epx +1748 -0
  311. data/demo/uml-profil-for-ibm-rsm6/README.txt +4 -0
  312. data/lib/ontomde-demos.rb +3 -0
  313. metadata +379 -0
@@ -0,0 +1,162 @@
1
+ package service;
2
+
3
+ import static xmda.annotationOntoMDE.OntoMDE.ZoneCode.code;
4
+ import static xmda.annotationOntoMDE.OntoMDE.ZoneCode.imports;
5
+
6
+ import java.util.ArrayList;
7
+ import java.util.Collection;
8
+ import java.util.Collections;
9
+ import java.util.Comparator;
10
+ import java.util.List;
11
+ import java.util.Set;
12
+
13
+ import xmda.annotationOntoMDE.OntoMDE;
14
+ import baseTypes.LetterFilter;
15
+ import domain.Category;
16
+ import domain.Contact;
17
+ import domain.ContactGroup;
18
+ import domain.ContactRepository;
19
+ import domain.dto.ContactDTO;
20
+
21
+ /**
22
+ * @see <a href="../umldoc/_JcIB8DhVEd2Dg_DuOx74iA-content.html">UML documentation.</a>
23
+ */
24
+ @javax.jws.WebService
25
+ @OntoMDE(reverse = { imports }, uri = "ukb__JcIB8DhVEd2Dg_DuOx74iA")
26
+ public class ContactManager implements service.ContactService {
27
+
28
+ /**
29
+ * @param contactRepositoryId self-explanatory
30
+ * @param phone self-explanatory
31
+ * @return self-explanatory
32
+ */
33
+ @javax.jws.WebMethod
34
+ @OntoMDE(reverse = { code }, uri = "ukb__iVaB8DhQEd2Dg_DuOx74iA_implem")
35
+ public domain.dto.ContactDTO findContactByHomePhone(
36
+ @javax.jws.WebParam(name = "contactRepositoryId")
37
+ final java.lang.String contactRepositoryId,
38
+ @javax.jws.WebParam(name = "phone")
39
+ final java.lang.String phone) {
40
+ ContactDTO res = null;
41
+ ContactRepository repo = ContactRepository.find(Long
42
+ .parseLong(contactRepositoryId));
43
+ Set<Contact> contacts = repo.getContact();
44
+
45
+ for (Contact contact : contacts) {
46
+ if (contact.getHome().equalsIgnoreCase(phone)) {
47
+ res = contact.toContactDTO();
48
+ break;
49
+ }
50
+ }
51
+ return res;
52
+
53
+ }
54
+
55
+ /**
56
+ * @param contactRepositoryId self-explanatory
57
+ * @return self-explanatory
58
+ */
59
+ @javax.jws.WebMethod
60
+ @OntoMDE(reverse = { code }, uri = "ukb__-_h5gDhPEd2Dg_DuOx74iA_implem")
61
+ public java.util.List<domain.dto.ContactDTO> listAllContacts(
62
+ @javax.jws.WebParam(name = "contactRepositoryId")
63
+ final java.lang.String contactRepositoryId) {
64
+ ContactRepository repo = ContactRepository.find(Long
65
+ .parseLong(contactRepositoryId));
66
+ Set<Contact> contacts = repo.getContact();
67
+ List<ContactDTO> res = new ArrayList<ContactDTO>();
68
+ for (Contact contact : contacts) {
69
+ res.add(contact.toContactDTO());
70
+ }
71
+ Collections.sort(res, ContactDTOComparator);
72
+ return res;
73
+
74
+ }
75
+
76
+ /**
77
+ * @param category self-explanatory
78
+ * @param contactRepositoryId self-explanatory
79
+ * @return self-explanatory
80
+ */
81
+ @javax.jws.WebMethod
82
+ @OntoMDE(reverse = { code }, uri = "ukb__iADs8DhkEd2zjtJrcVcbMw_implem")
83
+ public java.util.List<domain.dto.ContactDTO> listContactsByCategory(
84
+ @javax.jws.WebParam(name = "category")
85
+ final java.lang.String category,
86
+ @javax.jws.WebParam(name = "contactRepositoryId")
87
+ final java.lang.String contactRepositoryId) {
88
+ List<ContactDTO> res = new ArrayList<ContactDTO>();
89
+ ContactRepository repo = ContactRepository.find(Long
90
+ .parseLong(contactRepositoryId));
91
+ return toListContactDTO(serv.listContactsByCategory(repo, category,
92
+ null));
93
+
94
+ }
95
+
96
+ /**
97
+ * @param group self-explanatory
98
+ * @param contactRepositoryId self-explanatory
99
+ * @return self-explanatory
100
+ */
101
+ @javax.jws.WebMethod
102
+ @OntoMDE(reverse = { code }, uri = "ukb___I9VwDhkEd2zjtJrcVcbMw_implem")
103
+ public java.util.List<domain.dto.ContactDTO> listContactsByGroup(
104
+ @javax.jws.WebParam(name = "group")
105
+ final java.lang.String group,
106
+ @javax.jws.WebParam(name = "contactRepositoryId")
107
+ final java.lang.String contactRepositoryId) {
108
+ List<ContactDTO> res = new ArrayList<ContactDTO>();
109
+ ContactRepository repo = ContactRepository.find(Long
110
+ .parseLong(contactRepositoryId));
111
+
112
+ return toListContactDTO(serv.listContactsByGroup(repo, group, null));
113
+ }
114
+
115
+ /**
116
+ * @param letterFilter self-explanatory
117
+ * @param contactRepositoryId self-explanatory
118
+ * @return self-explanatory
119
+ */
120
+ @javax.jws.WebMethod
121
+ @OntoMDE(reverse = { code }, uri = "ukb__Y2IUADhkEd2zjtJrcVcbMw_implem")
122
+ public java.util.List<domain.dto.ContactDTO> listContactsByLetter(
123
+ @javax.jws.WebParam(name = "letterFilter")
124
+ final baseTypes.LetterFilter letterFilter,
125
+ @javax.jws.WebParam(name = "contactRepositoryId")
126
+ final java.lang.String contactRepositoryId) {
127
+ ContactRepository repo = ContactRepository.find(Long
128
+ .parseLong(contactRepositoryId));
129
+
130
+ return toListContactDTO(serv.listContactsByLetter(repo.getContact(),
131
+ letterFilter));
132
+
133
+ }
134
+
135
+ /*XMDA_BEGIN_reverse="yes"_uri="ukb__JcIB8DhVEd2Dg_DuOx74iA__custom_code"_*/
136
+ static final Comparator<ContactDTO> ContactDTOComparator = new Comparator<ContactDTO>() {
137
+ public int compare(ContactDTO arg0, ContactDTO arg1) {
138
+ int nameComp = String.CASE_INSENSITIVE_ORDER.compare(
139
+ arg0.getName(), arg1.getName());
140
+ if (nameComp == 0) {
141
+ nameComp = String.CASE_INSENSITIVE_ORDER.compare(arg0
142
+ .getLastname(), arg1.getLastname());
143
+ }
144
+ return nameComp;
145
+ }
146
+ };
147
+
148
+ private List<ContactDTO> toListContactDTO(Collection<Contact> contacts) {
149
+ List<ContactDTO> res = new ArrayList<ContactDTO>();
150
+ if (contacts != null) {
151
+ for (Contact contact : contacts) {
152
+ res.add(contact.toContactDTO());
153
+ }
154
+ }
155
+ Collections.sort(res, ContactDTOComparator);
156
+ return res;
157
+ }
158
+
159
+ private static ContactManagerImpl serv = new ContactManagerImpl();
160
+ /*XMDA_END_uri="ukb__JcIB8DhVEd2Dg_DuOx74iA__custom_code"_*/
161
+
162
+ }
@@ -0,0 +1,68 @@
1
+ package service;
2
+
3
+ import java.util.ArrayList;
4
+ import java.util.Collection;
5
+ import java.util.List;
6
+ import java.util.Set;
7
+
8
+ import baseTypes.LetterFilter;
9
+ import domain.Category;
10
+ import domain.Contact;
11
+ import domain.ContactGroup;
12
+ import domain.ContactRepository;
13
+
14
+ public class ContactManagerImpl {
15
+ public Collection<Contact> listContactsByLetter(
16
+ Collection<Contact> contacts,
17
+ final baseTypes.LetterFilter letterFilter) {
18
+ List<Contact> res = new ArrayList<Contact>();
19
+ if (contacts != null) {
20
+ for (Contact contact : contacts) {
21
+ String firstLetter = contact.getName().substring(0, 1)
22
+ .toLowerCase();
23
+ if (letterFilter == null
24
+ || firstLetter.equals(letterFilter.toString())
25
+ || letterFilter.equals(LetterFilter._All)) {
26
+ res.add(contact);
27
+ }
28
+ }
29
+ }
30
+ return res;
31
+ }
32
+
33
+ public Collection<Contact> listContactsByGroup(ContactRepository repo,
34
+ final String group, final Collection contactsToSort) {
35
+ List<Contact> res = new ArrayList<Contact>();
36
+ Set<ContactGroup> groups = repo.getGroups();
37
+ for (ContactGroup groupRepo : groups) {
38
+ if (groupRepo.getName().equalsIgnoreCase(group)) {
39
+ Set<Contact> contacts = groupRepo.getContacts();
40
+ for (Contact contact : contacts) {
41
+ res.add(contact);
42
+ }
43
+ }
44
+ }
45
+ if (contactsToSort != null) {
46
+ res.retainAll(contactsToSort);
47
+ }
48
+ return res;
49
+ }
50
+
51
+ public Collection<Contact> listContactsByCategory(ContactRepository repo,
52
+ final String category, final Collection contactsToSort) {
53
+ List<Contact> res = new ArrayList<Contact>();
54
+ Set<Category> categories = repo.getCategories();
55
+ for (Category cat : categories) {
56
+ if (cat.getName().equalsIgnoreCase(category)) {
57
+ Set<Contact> contacts = cat.getContacts();
58
+ for (Contact contact : contacts) {
59
+ res.add(contact);
60
+ }
61
+ }
62
+ }
63
+ if (contactsToSort != null) {
64
+ res.retainAll(contactsToSort);
65
+ }
66
+ return res;
67
+ }
68
+ }
@@ -0,0 +1,29 @@
1
+ package xmda.security;
2
+
3
+ import xmda.annotationOntoMDE.OntoMDE;
4
+
5
+ /**
6
+ * This enum contains a list of all computed access control criteria.
7
+ *
8
+ * Generic examples of access control:
9
+ * * userIsManagerForThisObject
10
+ * * userOwnsThisObject
11
+ * * userIsOnDuty
12
+ *
13
+ * AccessControl criteria are computed in the context of one class instance of the model and one user. (ex: User Martin accessing contract number 3003).
14
+ *
15
+ * Some criteria migth not need to know what object is beeing accessed (example: userIsOnDuty). Some other will need to know what object is access (Is martin a manager for contract 42000 ?, Does Martin owns product number 13239 ?)
16
+ *
17
+ * This list is defined at design time because these rules criteria are implemented usign an algorithm (model query, date computation, ...) that require some coding and optimisation at developpement time. It is however possible to add RESERVED elements for future extension (RESERVED1, RESERVED2, ...).
18
+ * @see <a href="../umldoc/_N9poNz0-Ed2SuOkT56DHAg-content.html">UML documentation.</a>
19
+ */
20
+ @OntoMDE(reverse = {}, uri = "ukb__N9poNz0-Ed2SuOkT56DHAg")
21
+ public enum GlobalComputedAccessControlCriteria implements
22
+ xmda.java.JavaEnumSig {
23
+ TEST;
24
+
25
+ /*XMDA_BEGIN_reverse="no"_uri="ukb__N9poNz0-Ed2SuOkT56DHAg__custom_code"_*/
26
+ // Please use this area for out-of-model code.
27
+ /*XMDA_END_uri="ukb__N9poNz0-Ed2SuOkT56DHAg__custom_code"_*/
28
+
29
+ }
@@ -0,0 +1,37 @@
1
+ package xmda.security;
2
+ import xmda.annotationOntoMDE.OntoMDE;
3
+ import static xmda.annotationOntoMDE.OntoMDE.ZoneCode.*;
4
+ /**
5
+ * This enum contains a list of all computed access control criteria.
6
+ *
7
+ * Generic examples of access control:
8
+ * * userIsManagerForThisObject
9
+ * * userOwnsThisObject
10
+ * * userIsOnDuty
11
+ *
12
+ * AccessControl criteria are computed in the context of one class instance of the model and one user. (ex: User Martin accessing contract number 3003).
13
+ *
14
+ * Some criteria migth not need to know what object is beeing accessed (example: userIsOnDuty). Some other will need to know what object is access (Is martin a manager for contract 42000 ?, Does Martin owns product number 13239 ?)
15
+ *
16
+ * This list is defined at design time because these rules criteria are implemented usign an algorithm (model query, date computation, ...) that require some coding and optimisation at developpement time. It is however possible to add RESERVED elements for future extension (RESERVED1, RESERVED2, ...).
17
+ * @see <a href="../umldoc/_N9poNz0-Ed2SuOkT56DHAg-content.html">UML documentation.</a>
18
+ */
19
+ @OntoMDE(reverse={nothing},uri="ukb__N9poNz0-Ed2SuOkT56DHAg")
20
+ public enum GlobalComputedAccessControlCriteria
21
+ implements xmda.java.JavaEnumSig{
22
+ /* TODO: null_literal literal added by generator to work around a bug in hibernate which crash when an enum has no literal.*/
23
+ null_literal
24
+ ;
25
+
26
+
27
+
28
+
29
+
30
+ /*XMDA_BEGIN_reverse="no"_uri="ukb__N9poNz0-Ed2SuOkT56DHAg__custom_code"_*/
31
+ // Please use this area for out-of-model code.
32
+
33
+ /*XMDA_END_uri="ukb__N9poNz0-Ed2SuOkT56DHAg__custom_code"_*/
34
+
35
+
36
+
37
+ }
@@ -0,0 +1,303 @@
1
+ package xmda.security;
2
+
3
+ import java.lang.reflect.Method;
4
+ import java.util.ArrayList;
5
+ import java.util.List;
6
+ import java.util.Set;
7
+
8
+ import org.springframework.security.GrantedAuthority;
9
+ import org.springframework.security.GrantedAuthorityImpl;
10
+ import org.springframework.security.context.SecurityContextHolder;
11
+ import org.springframework.security.userdetails.User;
12
+ import org.springframework.security.userdetails.UserDetails;
13
+
14
+ import administration.BusinessGroup;
15
+ import administration.SecureField;
16
+ import administration.SecureMethod;
17
+ import administration.SecurityRole;
18
+ import domain.Customer;
19
+
20
+ public class ProviderImpl implements Provider {
21
+
22
+ public static final boolean GRANT_ACCESS = true;
23
+ public static final boolean DENY_ACCESS = false;
24
+
25
+ private static final boolean securityIsDisabled = System
26
+ .getProperty("webapp.security.mode") != null
27
+ && System.getProperty("webapp.security.mode").equalsIgnoreCase(
28
+ "disable");
29
+
30
+ public static boolean getSecurityIsDisabled() {
31
+ return securityIsDisabled;
32
+ }
33
+
34
+ private Object principalObject;
35
+
36
+ public UserDetails loadUser(String userName) {
37
+
38
+ List<Customer> users = Customer.findAll((Customer) null);
39
+ UserDetails userToIdentify = null;
40
+
41
+ for (Customer user : users) {
42
+ if (userName != null && userName.equalsIgnoreCase(user.getName())) {
43
+ userToIdentify = new User(user.getName(), "", true, true, true,
44
+ true, retrieveAuthorities(user));
45
+ break;
46
+ }
47
+ }
48
+
49
+ principalObject = userToIdentify;
50
+ return userToIdentify;
51
+ }
52
+
53
+ private static GrantedAuthority[] retrieveAuthorities(Customer user) {
54
+
55
+ GrantedAuthority[] authorities = null;
56
+ List<SecurityRole> userRoles = new ArrayList<SecurityRole>();
57
+
58
+ if (user != null && user.getUserGroup() != null) {
59
+ Set<BusinessGroup> groups = user.getUserGroup();
60
+ for (BusinessGroup group : groups) {
61
+ userRoles.addAll(group.getGroupRole());
62
+ }
63
+ authorities = new GrantedAuthority[userRoles.size()];
64
+ for (int i = 0; i < userRoles.size(); i++) {
65
+ authorities[i] = new GrantedAuthorityImpl(userRoles.get(i)
66
+ .getRoleName());
67
+ }
68
+ }
69
+
70
+ for (GrantedAuthority auth : authorities) {
71
+ }
72
+
73
+ return authorities;
74
+ // return new GrantedAuthority[] {new GrantedAuthorityImpl("USER_TEST")};
75
+
76
+ }
77
+
78
+ public boolean hasViewRights(String fieldName) {
79
+
80
+ boolean isViewable = true;
81
+ if (!securityIsDisabled) {
82
+
83
+ principalObject = SecurityContextHolder.getContext()
84
+ .getAuthentication().getPrincipal();
85
+
86
+ if (principalObject instanceof UserDetails) {
87
+
88
+ UserDetails principal = (UserDetails) principalObject;
89
+
90
+ SecureField toSecure = null;
91
+
92
+ GrantedAuthority[] grantedRoles = principal.getAuthorities();
93
+
94
+ List<SecureField> fieldList = SecureField
95
+ .findAll((SecureField) null);
96
+
97
+ for (SecureField field : fieldList) {
98
+ if (field.getDefinition() == null) {
99
+ System.out
100
+ .println("Secured field skipped. missing getDefinition()");
101
+ continue;
102
+ }
103
+
104
+ String enumField = field.getDefinition().ownerClass
105
+ .getCanonicalName()
106
+ + "." + field.getDefinition().propertyName;
107
+
108
+ if (fieldName.equalsIgnoreCase(enumField)) {
109
+ toSecure = field;
110
+ break;
111
+ }
112
+ }
113
+
114
+ if (toSecure != null) {
115
+
116
+ if (toSecure.getDefinition().isSecured) {
117
+ isViewable = false;
118
+ Set<SecurityRole> securityRoles = toSecure
119
+ .getSecureFieldRoles();
120
+ for (SecurityRole sRole : securityRoles) {
121
+ for (GrantedAuthority authority : grantedRoles) {
122
+ if (authority.getAuthority().equalsIgnoreCase(
123
+ sRole.getRoleName())) {
124
+ isViewable = true;
125
+ }
126
+ }
127
+
128
+ }
129
+ }
130
+ } else {
131
+
132
+ // Erreur, le nom du champ a �t� modifi� sur la JSP
133
+
134
+ }
135
+ }
136
+ }
137
+
138
+ return isViewable;
139
+
140
+ }
141
+
142
+ /*
143
+ * Method called by pointcut @Before on method annotated @Secure Must return
144
+ * true for access to be granted.
145
+ *
146
+ * @see xmda.security.Provider#hasMethodAccess(java.lang.String,
147
+ * java.lang.Object)
148
+ *
149
+ * @param signature name of the method called @param target object being
150
+ * accessed @return true if access granted, false if access denied.
151
+ */
152
+ public boolean hasMethodAccess(final String signature, final Object target) {
153
+ System.out.println("hasMethodAccess ??");
154
+ if (securityIsDisabled) {
155
+ // Server is in securityIsDisabled debug mode.
156
+ // Allow access
157
+ System.out.println("granted: WARNING SERVER IN NO SECURITY MODE");
158
+ return GRANT_ACCESS;
159
+ }
160
+
161
+ // user principal
162
+ principalObject = SecurityContextHolder.getContext()
163
+ .getAuthentication().getPrincipal();
164
+ if (!(principalObject instanceof UserDetails)) {
165
+ System.out
166
+ .println("denied: Access denied because of Internal error. Bad principalObject returned by principalObject");
167
+ return DENY_ACCESS;
168
+ }
169
+ UserDetails principal = (UserDetails) principalObject;
170
+
171
+ boolean hasAcces = false;
172
+
173
+ // Example: com.xyz.Aclass.doThat
174
+
175
+ // STEP 1: look for role granting this method.
176
+ boolean foundSecureMethod = false;
177
+ Set<SecurityRole> okRole = getGrantingRoles(target, signature);
178
+ if (okRole.isEmpty()) {
179
+ System.out
180
+ .println("denied: access denied because no possible role/SecureMethod grant found (foundSecureMethod="
181
+ + foundSecureMethod + ")");
182
+ return DENY_ACCESS;
183
+ }
184
+ // STEP 2: check if SecureMethods found match user authorization.
185
+ filterOutNotGrantedRole(principal, okRole);
186
+ if (okRole.isEmpty()) {
187
+ System.out
188
+ .println("denied: access denied because user has no eligible role");
189
+ return DENY_ACCESS;
190
+ }
191
+ if (containsRoleNotRequiringComputedAccessControlCriteria(okRole)) {
192
+ System.out
193
+ .println("Access granted trough role with computed criteria");
194
+ return GRANT_ACCESS;
195
+ }
196
+
197
+ Set<GlobalComputedAccessControlCriteria> requiredGrants = getRequiredGrants(okRole);
198
+
199
+ Set<xmda.security.GlobalComputedAccessControlCriteria> grants = getGrantedCriteria(
200
+ target, principal);
201
+ if (grants.isEmpty()) {
202
+ System.out
203
+ .println("denied: access denied because computed grants is empty");
204
+ return DENY_ACCESS;
205
+ }
206
+ grants.retainAll(requiredGrants);
207
+ if (grants.isEmpty()) {
208
+ System.out
209
+ .println("denied: access denied because computed grants is empty do not match required grants");
210
+ return DENY_ACCESS;
211
+ }
212
+ System.out.println("granted: access granted");
213
+ return GRANT_ACCESS;
214
+ }
215
+
216
+ private Set<SecurityRole> getGrantingRoles(final Object target,
217
+ final String signature) {
218
+ String completeSignature = target.getClass().getCanonicalName() + "."
219
+ + signature;
220
+ Set<SecurityRole> okRole = new java.util.HashSet<SecurityRole>();
221
+ List<SecureMethod> methods = SecureMethod.findAll((SecureMethod) null);
222
+ // for (SecureMethod method : methods) {
223
+ // String enumMethod = method.getSignature().ownerClass
224
+ // .getCanonicalName()
225
+ // + "." + method.getSignature().operationName;
226
+ // if (completeSignature.equals(enumMethod)) {
227
+ // okRole.addAll(method.getSecureMethodRoles());
228
+ // break;
229
+ // }
230
+ // }
231
+ return okRole;
232
+ }
233
+
234
+ private void filterOutNotGrantedRole(UserDetails principal,
235
+ Set<SecurityRole> okRole) {
236
+ GrantedAuthority[] authorities = principal.getAuthorities();
237
+ role_loop: for (SecurityRole role : okRole) {
238
+ for (GrantedAuthority authority : authorities) {
239
+ if (authority.getAuthority().equals(role.getRoleName())) {
240
+ // we keep this role
241
+ continue role_loop;
242
+ }
243
+ }
244
+ // We have reach the end of the authority loop and role was not
245
+ // granted.
246
+ // Let's remove it from our ok list
247
+ okRole.remove(role);
248
+ }
249
+ }
250
+
251
+ private boolean containsRoleNotRequiringComputedAccessControlCriteria(
252
+ Set<SecurityRole> okRole) {
253
+ for (SecurityRole role : okRole) {
254
+ if (role.getRequiredComputedAccessRight() == null) {
255
+ // we found one role does not require computation.
256
+ return true;
257
+ }
258
+ }
259
+ return false;
260
+ }
261
+
262
+ public static final String COMPUTE_ACCESS_CONTROL_GRANT_METHOD_NAME = "getComputedAccessControlGrant";
263
+
264
+ private boolean containsGrantedComputedAccessControlCriteria(
265
+ Set<SecurityRole> okRole, Object target, UserDetails principal) {
266
+ return true;
267
+
268
+ }
269
+
270
+ private Set<xmda.security.GlobalComputedAccessControlCriteria> getRequiredGrants(
271
+ Set<SecurityRole> okRole) {
272
+ Set<xmda.security.GlobalComputedAccessControlCriteria> grants = new java.util.HashSet<xmda.security.GlobalComputedAccessControlCriteria>();
273
+ for (SecurityRole role : okRole) {
274
+ grants.add(role.getRequiredComputedAccessRight());
275
+ }
276
+ return grants;
277
+ }
278
+
279
+ private Set<xmda.security.GlobalComputedAccessControlCriteria> getGrantedCriteria(
280
+ Object target, UserDetails principal) {
281
+ String longClassName = target.getClass().getName();
282
+
283
+ try {
284
+ Class<?> targetClass = Class.forName(longClassName);
285
+ Method method = targetClass
286
+ .getMethod(COMPUTE_ACCESS_CONTROL_GRANT_METHOD_NAME,
287
+ UserDetails.class);
288
+ if (method == null) {
289
+ System.out.println("Missing method "
290
+ + COMPUTE_ACCESS_CONTROL_GRANT_METHOD_NAME
291
+ + " in class " + longClassName);
292
+ }
293
+ return (Set<xmda.security.GlobalComputedAccessControlCriteria>) method
294
+ .invoke(target, principal);
295
+ } catch (Exception e) {
296
+ System.out.println("ERROR" + e);
297
+ e.printStackTrace();
298
+ }
299
+ // deny access
300
+ return new java.util.HashSet<xmda.security.GlobalComputedAccessControlCriteria>();
301
+ }
302
+
303
+ }