ontomde-java 2.0.0

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 (157) hide show
  1. data/History.txt +10 -0
  2. data/Manifest.txt +156 -0
  3. data/README.txt +98 -0
  4. data/Rakefile +21 -0
  5. data/bin/ontomde-java +5 -0
  6. data/generateRdocFile.sh +16 -0
  7. data/lib/ontomde-java.rb +45 -0
  8. data/lib/ontomde-java/crank.rb +13 -0
  9. data/lib/ontomde-java/crank/context.rb +384 -0
  10. data/lib/ontomde-java/crank/crankJpa.rb +103 -0
  11. data/lib/ontomde-java/crank/equals.rb +83 -0
  12. data/lib/ontomde-java/crank/facelets.rb +243 -0
  13. data/lib/ontomde-java/crank/facesconfig.rb +113 -0
  14. data/lib/ontomde-java/crank/helper.rb +46 -0
  15. data/lib/ontomde-java/crank/main.rb +51 -0
  16. data/lib/ontomde-java/crank/menu.rb +39 -0
  17. data/lib/ontomde-java/crank/menu2.rb +78 -0
  18. data/lib/ontomde-java/crank/validation.rb +34 -0
  19. data/lib/ontomde-java/ejb2.rb +3 -0
  20. data/lib/ontomde-java/ejb2/main-ejb2.rb +194 -0
  21. data/lib/ontomde-java/flex.rb +7 -0
  22. data/lib/ontomde-java/flex/Editor.mxml.as.rb +184 -0
  23. data/lib/ontomde-java/flex/Editor.mxml.rb +701 -0
  24. data/lib/ontomde-java/flex/ImportationAS.rb +40 -0
  25. data/lib/ontomde-java/flex/ValueObjectAS.rb +338 -0
  26. data/lib/ontomde-java/flex/fileTypes.rb +19 -0
  27. data/lib/ontomde-java/flex/main.rb +347 -0
  28. data/lib/ontomde-java/frontend/command.rb +324 -0
  29. data/lib/ontomde-java/frontend/command.rdoc +583 -0
  30. data/lib/ontomde-java/frontend/defaultOptions.rb +124 -0
  31. data/lib/ontomde-java/frontend/options.rb +555 -0
  32. data/lib/ontomde-java/frontend/steps.rb +287 -0
  33. data/lib/ontomde-java/java/accessorCode.rb +528 -0
  34. data/lib/ontomde-java/java/accessorSignature.rb +347 -0
  35. data/lib/ontomde-java/java/annotationOntoMDE.rb +88 -0
  36. data/lib/ontomde-java/java/apache.rb +34 -0
  37. data/lib/ontomde-java/java/build.rb +80 -0
  38. data/lib/ontomde-java/java/collectionMapping.rb +112 -0
  39. data/lib/ontomde-java/java/component.rb +446 -0
  40. data/lib/ontomde-java/java/contextualize.rb +43 -0
  41. data/lib/ontomde-java/java/enumAssignable.rb +75 -0
  42. data/lib/ontomde-java/java/enumCompatibilityLayer.rb +195 -0
  43. data/lib/ontomde-java/java/equals.rb +91 -0
  44. data/lib/ontomde-java/java/groovy.rb +95 -0
  45. data/lib/ontomde-java/java/java.rb +1329 -0
  46. data/lib/ontomde-java/java/java.rdoc +78 -0
  47. data/lib/ontomde-java/java/javaDatatypeMapping.rb +156 -0
  48. data/lib/ontomde-java/java/javaHelper.rb +25 -0
  49. data/lib/ontomde-java/java/java_todo.rdoc +3 -0
  50. data/lib/ontomde-java/java/javadoc.rb +254 -0
  51. data/lib/ontomde-java/java/meta.rb +28 -0
  52. data/lib/ontomde-java/java/operationAsClass.rb +144 -0
  53. data/lib/ontomde-java/java/security.rb +260 -0
  54. data/lib/ontomde-java/java/stateMachine.rb +415 -0
  55. data/lib/ontomde-java/java/tenant.rb +65 -0
  56. data/lib/ontomde-java/java/xsd.rb +1363 -0
  57. data/lib/ontomde-java/java/xsdCollectionMapping.rb +112 -0
  58. data/lib/ontomde-java/java/xsdDatatypeMapping.rb +103 -0
  59. data/lib/ontomde-java/jpa.rb +17 -0
  60. data/lib/ontomde-java/jpa/configuration.rb +176 -0
  61. data/lib/ontomde-java/jpa/finder.rb +102 -0
  62. data/lib/ontomde-java/jpa/jpa.rb +531 -0
  63. data/lib/ontomde-java/jpa/jpa.rdoc +20 -0
  64. data/lib/ontomde-java/jpa/locking.rb +18 -0
  65. data/lib/ontomde-java/jpa/mapping.rb +314 -0
  66. data/lib/ontomde-java/jpa/redefined.rb +77 -0
  67. data/lib/ontomde-java/jpa/simulationAutoImplement.rb +54 -0
  68. data/lib/ontomde-java/jpdl.rb +9 -0
  69. data/lib/ontomde-java/jpdl/bpm.pprj +1745 -0
  70. data/lib/ontomde-java/jpdl/bpm.rdf +140 -0
  71. data/lib/ontomde-java/jpdl/bpm.rdfs +231 -0
  72. data/lib/ontomde-java/jpdl/constant.rb +5 -0
  73. data/lib/ontomde-java/jpdl/graphic.rb +52 -0
  74. data/lib/ontomde-java/jpdl/jpdl.rb +281 -0
  75. data/lib/ontomde-java/jpdl/jpdl_deploy.rb +114 -0
  76. data/lib/ontomde-java/jpdl/main.rb +348 -0
  77. data/lib/ontomde-java/jpdl/main.rdoc +2 -0
  78. data/lib/ontomde-java/jpdl/processOperationToClass.rb +316 -0
  79. data/lib/ontomde-java/kbjava.rb +6 -0
  80. data/lib/ontomde-java/kbjava/rdfToJava.rb +407 -0
  81. data/lib/ontomde-java/struts.rb +27 -0
  82. data/lib/ontomde-java/struts/MessageResources.rb +359 -0
  83. data/lib/ontomde-java/struts/action.rb +883 -0
  84. data/lib/ontomde-java/struts/blob.rb +11 -0
  85. data/lib/ontomde-java/struts/exceptionHandling.rb +167 -0
  86. data/lib/ontomde-java/struts/footer.rb +128 -0
  87. data/lib/ontomde-java/struts/form.rb +450 -0
  88. data/lib/ontomde-java/struts/header.rb +37 -0
  89. data/lib/ontomde-java/struts/header_link.rb +39 -0
  90. data/lib/ontomde-java/struts/jsp_edit.rb +870 -0
  91. data/lib/ontomde-java/struts/jsp_edit_field.rb +1 -0
  92. data/lib/ontomde-java/struts/jsp_edit_js.rb +124 -0
  93. data/lib/ontomde-java/struts/jsp_index.rb +136 -0
  94. data/lib/ontomde-java/struts/localeAction.rb +641 -0
  95. data/lib/ontomde-java/struts/main.rb +41 -0
  96. data/lib/ontomde-java/struts/mappingForBean.rb +132 -0
  97. data/lib/ontomde-java/struts/mappingForJsp.rb +272 -0
  98. data/lib/ontomde-java/struts/mappingToJavaHierarchy.rb +87 -0
  99. data/lib/ontomde-java/struts/reloadAction.rb +33 -0
  100. data/lib/ontomde-java/struts/spring.rb +89 -0
  101. data/lib/ontomde-java/struts/struts-config.rb +232 -0
  102. data/lib/ontomde-java/struts/validation.rb +116 -0
  103. data/lib/ontomde-java/struts/validator.rb +341 -0
  104. data/lib/ontomde-java/struts/webXml.rb +195 -0
  105. data/lib/ontomde-java/struts/xmlForm.rb +308 -0
  106. data/lib/ontomde-java/version.rb +5 -0
  107. data/profiling.xls +0 -0
  108. data/test/.classpath +14 -0
  109. data/test/.project +17 -0
  110. data/test/.settings/org.eclipse.jdt.core.prefs +23 -0
  111. data/test/Rakefile +71 -0
  112. data/test/build.xml +34 -0
  113. data/test/classpath.rb +15 -0
  114. data/test/lib/junit-4.1.jar +0 -0
  115. data/test/load1.rb +3 -0
  116. data/test/load2.rb +3 -0
  117. data/test/log4j.properties +46 -0
  118. data/test/model/.project +11 -0
  119. data/test/model/BigProject.mdzip +0 -0
  120. data/test/model/BigProject.mdzip.nt +102866 -0
  121. data/test/model/ClassDiagram.EntArch.gif +0 -0
  122. data/test/model/ClassDiagram.emx.gif +0 -0
  123. data/test/model/ClassDiagram.mdzip.gif +0 -0
  124. data/test/model/model_ea71.bis.ea.xmi +149 -0
  125. data/test/model/model_ea71.ea.xmi +4470 -0
  126. data/test/model/model_ea71.eap +0 -0
  127. data/test/model/model_ea71_README.txt +8 -0
  128. data/test/model/multipleInheritance.emx +466 -0
  129. data/test/model/multipleInheritance.emx.nt +2428 -0
  130. data/test/model/simple1-530.ofp +0 -0
  131. data/test/model/simple1-includedAsReference.emx +169 -0
  132. data/test/model/simple1.emx +3729 -0
  133. data/test/model/simple1.emx.fragments.nt +81 -0
  134. data/test/model/simple1.emx.nt +5760 -0
  135. data/test/model/simple1.mdzip +0 -0
  136. data/test/model/simple1.mdzip.nt +11500 -0
  137. data/test/model/simple1.oe530.nt +1986 -0
  138. data/test/model/simple1.oe600.nt +1627 -0
  139. data/test/src/RuntimeTest.java +656 -0
  140. data/test/src/testsLevel1.java +174 -0
  141. data/test/src/testsLevel2.java +29 -0
  142. data/test/src/testsLevel3.java +40 -0
  143. data/test/test-ea7.sh +15 -0
  144. data/test/test-magicDraw.sh +10 -0
  145. data/test/test-mi.sh +9 -0
  146. data/test/test-oe530.sh +10 -0
  147. data/test/test-oe600.sh +11 -0
  148. data/test/test-rsm.sh +11 -0
  149. data/test/test_export_ea71.rb +5 -0
  150. data/test/test_export_oe530.rb +4 -0
  151. data/test/test_export_oe600.rb +4 -0
  152. data/test/test_export_rsm60.rb +4 -0
  153. data/test/trace +419 -0
  154. data/test/uml_test.rb +1434 -0
  155. data/test/uml_test.xls +0 -0
  156. data/test/unit_test.rb +6 -0
  157. metadata +224 -0
@@ -0,0 +1,11 @@
1
+ #module Muml_DataType
2
+ # def struts_isBlob?
3
+ # return java_qualifiedName=="java.sql.Blob"
4
+ # end
5
+ #end
6
+
7
+ #module Muml_Property
8
+ # def struts_isBlobField?
9
+ # return uml_type_one.kind_of?(Muml_DataType) && uml_type_one.struts_isBlob?
10
+ # end
11
+ #end
@@ -0,0 +1,167 @@
1
+
2
+ #/**
3
+ # * <p>An <strong>ExceptionHandler</strong> is configured in the Struts
4
+ # * configuration file to handle a specific type of exception thrown by an
5
+ # * <code>Action.execute</code> method.</p>
6
+ # *
7
+ # */
8
+
9
+ class Crdf_Repository
10
+ !!!!!!!!!!!!!!!!!
11
+ def struts_getExceptionHandlerClass
12
+ return umlx_reserved_model.struts_getExceptionHandlerClass
13
+ end
14
+ def struts_getFunctionalException
15
+ return umlx_reserved_model.struts_getFunctionalException
16
+ end
17
+ end
18
+
19
+ module Muml_Element
20
+ def struts_getExceptionHandlerClass
21
+ m=umlx_getOrCreateClass("xmda.struts.exceptions.XMDAExceptionHandler")
22
+ if(m.java_import.empty?)
23
+ ['org.apache.struts.Globals', 'org.apache.struts.action.ActionForm', 'org.apache.struts.action.ActionForward', 'org.apache.struts.action.ActionMapping', 'org.apache.struts.action.ActionMessage', 'org.apache.struts.action.ExceptionHandler', 'org.apache.struts.config.ExceptionConfig', 'org.apache.struts.util.ModuleException', 'javax.servlet.http.HttpServletResponse','javax.servlet.ServletException','javax.servlet.http.HttpServletRequest'].each { |c|
24
+ m.java_import_add(c);
25
+ }
26
+ m.apaCom_addLogger!
27
+ m.umlx_external=RDF_FALSE
28
+ #m.java_import_add(STRUTS_LVB)
29
+ m.db_isTransient=RDF_TRUE
30
+ m.struts_isForm=RDF_FALSE
31
+ m.java_extends_add(umlx_reserved_model.umlx_getOrCreateClass("org.apache.struts.action.ExceptionHandler"))
32
+
33
+ m.java_customCode= <<ENDCODE
34
+
35
+ /**
36
+ * <p> Handle the Exception. Return the ActionForward instance (if any)
37
+ * returned by the called ExceptionHandler. </p>
38
+ *
39
+ * @param ex The exception to handle
40
+ * @param ae The ExceptionConfig corresponding to the exception
41
+ * @param mapping The ActionMapping we are processing
42
+ * @param formInstance The ActionForm we are processing
43
+ * @param request The servlet request we are processing
44
+ * @param response The servlet response we are creating
45
+ * @return The <code>ActionForward</code> instance (if any) returned by
46
+ * the called <code>ExceptionHandler</code>.
47
+ * @throws ServletException if a servlet exception occurs
48
+ * @since Struts 1.1
49
+ */
50
+ public ActionForward execute(Exception ex, ExceptionConfig ae,
51
+ ActionMapping mapping, ActionForm formInstance,
52
+ HttpServletRequest request, HttpServletResponse response)
53
+ throws ServletException {
54
+ log.debug("ExceptionHandler executing for exception " + ex);
55
+
56
+ ActionForward forward;
57
+ ActionMessage error;
58
+ String property;
59
+
60
+ // Build the forward from the exception mapping if it exists
61
+ // or from the form input
62
+ if (ex instanceof FunctionalException && ((FunctionalException)ex).getFwPath()!= null) {
63
+ String fwPath = ((FunctionalException)ex).getFwPath();
64
+ forward = new ActionForward(fwPath);
65
+ }
66
+ else if (ae.getPath() != null) {
67
+ forward = new ActionForward(ae.getPath());
68
+ } else {
69
+ forward = mapping.getInputForward();
70
+ }
71
+
72
+ // Figure out the error
73
+ if (ex instanceof ModuleException) {
74
+ error = ((ModuleException) ex).getActionMessage();
75
+ property = ((ModuleException) ex).getProperty();
76
+ } else {
77
+ error = new ActionMessage(ae.getKey(), ex.getMessage());
78
+ property = error.getKey();
79
+ }
80
+
81
+ this.logException(ex);
82
+
83
+ // Store the exception
84
+ request.setAttribute(Globals.EXCEPTION_KEY, ex);
85
+ this.storeException(request, property, error, forward, ae.getScope());
86
+
87
+ if (!response.isCommitted()) {
88
+ return forward;
89
+ }
90
+
91
+ log.debug("Response is already committed, so forwarding will not work."
92
+ + " Attempt alternate handling.");
93
+
94
+ if (!silent(ae)) {
95
+ handleCommittedResponse(ex, ae, mapping, formInstance, request,
96
+ response, forward);
97
+ } else {
98
+ log.warn("ExceptionHandler configured with " + SILENT_IF_COMMITTED
99
+ + " and response is committed.", ex);
100
+ }
101
+
102
+ return null;
103
+ }
104
+
105
+
106
+ /**
107
+ * <p>Indicate whether this Handler has been configured to be silent. In
108
+ * the base implementation, this is done by specifying the value
109
+ * <code>"true"</code> for the property "SILENT_IF_COMMITTED" in the
110
+ * ExceptionConfig.</p>
111
+ *
112
+ * @param config The ExceptionConfiguration we are handling
113
+ * @return True if Handler is silent
114
+ * @since Struts 1.3
115
+ */
116
+ private boolean silent(ExceptionConfig config) {
117
+ return "true".equals(config.getProperty(SILENT_IF_COMMITTED));
118
+ }
119
+ ENDCODE
120
+ end
121
+ return m
122
+ end
123
+
124
+ STRUTS_FUNCTIONAL_EXCEPTION="xmda.struts.exceptions.FunctionalException"
125
+ def struts_getFunctionalException
126
+ m=umlx_getOrCreateClass(STRUTS_FUNCTIONAL_EXCEPTION)
127
+ if(m.java_customCode.empty?)
128
+ m.java_annotation_add(%{@SuppressWarnings("serial")})
129
+ m.apaCom_addLogger!
130
+ m.umlx_external=RDF_FALSE
131
+ #m.java_import_add(STRUTS_LVB)
132
+ m.db_isTransient=RDF_TRUE
133
+ m.struts_isForm=RDF_FALSE
134
+ m.java_extends_add(umlx_getOrCreateClass("java.lang.RuntimeException"))
135
+
136
+ m.java_customCode= <<ENDCODEend
137
+ private String fwPath =null;
138
+ public #{m.java_Name}() {
139
+ super();
140
+ }
141
+ public #{m.java_Name}(String mesg) {
142
+ super(mesg);
143
+ }
144
+ public #{m.java_Name}(String fwPath, String mesg) {
145
+ super(mesg);
146
+ this.fwPath = fwPath;
147
+ }
148
+
149
+ public #{m.java_Name}(String mesg, Throwable th) {
150
+ super(mesg, th);
151
+ }
152
+
153
+ public String getFwPath() {
154
+ return fwPath;
155
+ }
156
+
157
+ public void setFwPath(String fwPath) {
158
+ this.fwPath = fwPath;
159
+ }
160
+ ENDCODEend
161
+ end
162
+ return m
163
+ end
164
+
165
+ end
166
+
167
+
@@ -0,0 +1,128 @@
1
+ module Muml_Class
2
+ STRUTS_SWITH_TO_FLEX_ACTION="switchToFlex"
3
+ end
4
+ module Mrdf_Repository
5
+ def struts_footer_generate
6
+ write <<END
7
+ <!-- **********************************
8
+ ************ BAS DE PAGE ***********
9
+ ************************************ -->
10
+ <SCRIPT>
11
+ function #{::Muml_Class::STRUTS_SETLOCALE_ACTION}(lang) {
12
+ document.forms[0].#{Muml_Class::STRUTS_DISPATCH_FIELD_NAME}.value="#{::Muml_Class::STRUTS_SETLOCALE_ACTION}";
13
+ document.forms[0].#{Muml_Class::STRUTS_SETLOCALE_LANGUAGE_FIELD}.value=lang;
14
+ document.forms[0].submit();
15
+ }
16
+ function #{::Muml_Class::STRUTS_SETTIMEZONE_ACTION}(tz) {
17
+ document.forms[0].#{Muml_Class::STRUTS_DISPATCH_FIELD_NAME}.value="#{::Muml_Class::STRUTS_SETTIMEZONE_ACTION}";
18
+ document.forms[0].#{Muml_Class::STRUTS_SETTIMEZONE_FIELD}.value=tz;
19
+ document.forms[0].submit();
20
+ }
21
+ function #{::Muml_Class::STRUTS_SETSKIN_ACTION}(skin) {
22
+ alert("!!");
23
+ document.forms[0].#{Muml_Class::STRUTS_DISPATCH_FIELD_NAME}.value="#{::Muml_Class::STRUTS_SETSKIN_ACTION}";
24
+ document.forms[0].#{Muml_Class::STRUTS_SETSKIN_FIELD}.value=skin;
25
+ document.forms[0].submit();
26
+ }
27
+ function #{::Muml_Class::STRUTS_SWITH_TO_FLEX_ACTION}() {
28
+ document.forms[0].#{Muml_Class::STRUTS_DISPATCH_FIELD_NAME}.value="#{::Muml_Class::STRUTS_SWITH_TO_FLEX_ACTION}";
29
+ document.forms[0].submit();
30
+ }
31
+
32
+ </SCRIPT>
33
+ <br/>
34
+ <table>
35
+ <tr>
36
+ <td>
37
+ <img onClick="switchToFlex();" src="#{css_path_model}/#{css_color_class}/image/logoFrancetelecom.gif" border="0" alt=""/>
38
+ </td>
39
+ <td width="100%">
40
+ </td>
41
+ <td>
42
+ <a href="#">
43
+ <img onClick="#{::Muml_Class::STRUTS_SWITH_TO_FLEX_ACTION}();" src="#{css_path_model}/#{css_color_class}/image/btnFX.gif" width="28" height="25" border="0" alt=""/>
44
+ </a>
45
+ </td>
46
+ <td>
47
+ <a href="#">
48
+ <img src="#{css_path_model}/#{css_color_class}/image/btnSend.gif" width="25" height="25" border="0" alt="" />
49
+ </a>
50
+ </td>
51
+ <td>
52
+ <a href="#">
53
+ <img src="#{css_path_model}/#{css_color_class}/image/btnUp.gif" width="25" height="25" border="0" alt=""/>
54
+ </a>
55
+ </td>
56
+ <td>
57
+ <img src="#{css_path_model}/#{css_color_class}/image/imgSprtr.gif" width="1" height="30" border="0" alt="" />
58
+ </td>
59
+ <td>
60
+ <a href="#">
61
+ <img onclick="setLocale('fr');" src="#{css_path_model}/#{css_color_class}/image/btnLanguage_Fr.gif" width="24" height="19" border="0" alt="" />
62
+ </a>
63
+ </td>
64
+ <td>
65
+ <a href="#">
66
+ <img onclick="setLocale('en');" src="#{css_path_model}/#{css_color_class}/image/btnLanguage_Eng.gif" width="24" height="19" border="0" alt="" />
67
+ </a>
68
+ </td>
69
+ <td>
70
+ <a href="#">
71
+ <img onclick="setLocale('de');" src="#{css_path_model}/#{css_color_class}/image/btnLanguage_Dch.gif" width="24" height="19" border="0" alt="" />
72
+ </a>
73
+ </td>
74
+ <td>
75
+ <img src="#{css_path_model}/#{css_color_class}/image/imgSprtr.gif" width="1" height="30" border="0" alt="" />
76
+ </td>
77
+ <td>
78
+ <html:hidden property="#{::Muml_Class::STRUTS_SETLOCALE_LANGUAGE_FIELD}"/>
79
+ <input type="hidden" name="#{::Muml_Class::STRUTS_SETSKIN_FIELD}"/>
80
+ END
81
+
82
+
83
+
84
+ write(struts_getTimeZoneSelect())
85
+
86
+ write %{
87
+ </td>
88
+ <td>
89
+ }
90
+ struts_writeTimeoutIndicator()
91
+
92
+ if context[:security]
93
+ # DISPLAY A WARNING IN WEB PAGE IF SERVER SECURITY IS DISABLED
94
+ write <<SECWARN
95
+ <%=
96
+ xmda.security.ProviderImpl.getSecurityIsDisabled()
97
+ ? "<span style=\\"background-color:red; text-color:black\\" bgcolor=\\"black\\">ACCESS<br>CONTROL<br>DISABLED</span>"
98
+ : ""
99
+ %>
100
+ SECWARN
101
+
102
+
103
+
104
+ #cf: j_acegi_logout is handled in Application-security.xml
105
+ write <<END2
106
+ <td><html:link page="/j_spring_security_logout" title="Logout"><img src="res/orange/image/exit.gif" width="25" height="25" border="0" alt="exit"/></html:link></td>
107
+ END2
108
+ end
109
+
110
+
111
+ write <<END
112
+
113
+ </td>
114
+ </tr>
115
+ </table>
116
+
117
+
118
+
119
+
120
+ END
121
+ end
122
+ end
123
+
124
+ module Muml_Class
125
+ def struts_footer_generate
126
+ rdf_Repository.struts_footer_generate
127
+ end
128
+ end
@@ -0,0 +1,450 @@
1
+ module Muml_Element
2
+ # Struts LabelValueBean class qualified name.
3
+ STRUTS_LVB='org.apache.struts.util.LabelValueBean'
4
+
5
+ # LVB used for null object
6
+ NIL_LVB_KEY="nil"
7
+ NIL_LVB_RES_KEY="obj_nil"
8
+ end
9
+
10
+ module Mstruts_tab
11
+ end
12
+ class Cstruts_tab < Crdf_Resource
13
+ include Mstruts_tab
14
+ rdf_safe_attr_reader_many :struts_ownedAttribute
15
+ rdf_safe_attr_reader_many :java_Name
16
+ end
17
+
18
+ module Muml_Classifier
19
+ rdf_safe_attr_reader_many :struts_ownedTab
20
+ end
21
+
22
+ module Muml_Operation
23
+ #Struts ActionForm associated to this operation
24
+ rdf_safe_attr_reader_many :struts_actionForm
25
+ end
26
+
27
+ module Muml_Classifier
28
+ STRUTS_REQUESTED_CREATION_TYPE_FIELD_NAME="reqType"
29
+ STRUTS_REQUESTED_CREATION_TYPE_FIELD_PROP="ReqType"
30
+ STRUTS_DISPATCH_FIELD_NAME="doWhat"
31
+ STRUTS_DISPATCH_FIELD_METH="DoWhat"
32
+ STRUTS_REQUESTED_TAB="reqtab"
33
+ STRUTS_FORM_INTERFACE="xmda.struts.Form"
34
+
35
+ rdf_safe_attr_reader_many :struts_isForm
36
+
37
+ #class from which this StrutsActionForm was generated.
38
+ rdf_safe_attr_reader_many :struts_actionFormSrc
39
+
40
+ #Struts ActionForm associated to this class
41
+ rdf_safe_attr_reader_many :struts_actionForm
42
+
43
+ def struts_eachFormAttribute_deprec()
44
+ struts_formAttribute.each { |a|
45
+ yield(a)
46
+ }
47
+ end
48
+ #every attribute meant to appear in the form.
49
+ def struts_formAttribute(ignoreDbId=false)
50
+ #tab=context[:struts_tab,nil]
51
+
52
+ ret=Array.new
53
+ cgi=umlx_classifier_generalization_indirect
54
+ cgi.add(self)
55
+ cgi.each { |c|
56
+ c.uml_ownedAttribute.each { |a|
57
+ next if a.struts_ignoreInForm?(ignoreDbId)
58
+ ret << a
59
+ }
60
+ }
61
+ return ret
62
+ end
63
+
64
+
65
+
66
+ #every method meant to appear in the form.
67
+ def struts_formOperation()
68
+ ret=Array.new
69
+ cgi=umlx_classifier_generalization_indirect
70
+ cgi.add(self)
71
+ cgi.each { |c|
72
+ c.uml_ownedOperation.each { |a|
73
+ #next if a.db_isTransient?
74
+ next if a.uml_isStatic?
75
+ #next if a.java_ignoreMe?
76
+ ret << a
77
+ }
78
+ }
79
+ return ret
80
+ end
81
+
82
+ def struts_getFormInterface
83
+ iform=umlx_getOrCreateInterface(STRUTS_FORM_INTERFACE)
84
+ if(iform.uml_ownedOperation.empty?)
85
+ iform.umlx_external=RDF_FALSE
86
+ iform.struts_addActionLocaleFormFields!
87
+ ["initFromReference","copyToReference"].each {|m|
88
+ iform.umlx_createAndAddOperation(iform.rdf_uri+m,m);
89
+ }
90
+ iform.java_addAccessors! #ajouter getter/setter
91
+ end
92
+ return iform
93
+ end
94
+
95
+ def struts_addInitAndCopyToReference!
96
+ i=umlx_createAndAddOperation(rdf_uri+"initFromReference","initFromReference");
97
+ i.java_code="initFrom(getReference());"
98
+
99
+ c=umlx_createAndAddOperation(rdf_uri+"copyToReference","copyToReference");
100
+ c.java_code="copyTo(getReference());"
101
+ end
102
+
103
+ #Creates and add an action form corresponding to this class.
104
+ def struts_addActionForm!
105
+ #log.debug { "struts_addActionForm! for #{self}:#{self.class}" }
106
+ p=umlx_owner_one
107
+ p=p.umlx_getOrCreatePackage(context[:strutsFormPackage,context[:strutsActionFormPackage,"struts"]],p)
108
+
109
+ form=p.umlx_createAndAddClass(rdf_uri+"_ActionFormClass")
110
+
111
+ form.umlx_createAndAddImplementation(struts_getFormInterface)
112
+ form.struts_addInitAndCopyToReference!
113
+
114
+ form.struts_isForm=RDF_TRUE
115
+ form.db_isTransient=RDF_TRUE
116
+
117
+ form.struts_actionFormSrc=self
118
+ self.struts_actionForm=form
119
+
120
+ form.uml_name="#{uml_name}StrutsForm"
121
+ #af=umlx_getOrCreateClass("org.apache.struts.action.ActionForm")
122
+ #if (uml_generalization.empty?)
123
+ #NOTE: Forms inheritance DO NOT follow class inheritance.
124
+ # (to allow exact typing in redefined methods)
125
+
126
+ af=umlx_getOrCreateClass("org.apache.struts.validator.ValidatorForm")
127
+ form.umlx_createAndAddGeneralization(af)
128
+
129
+ form.java_makeSerializable!
130
+ #ag=umlx_getOrCreateClass("java.io.Serializable")
131
+ #form.umlx_createAndAddImplementation(ag)
132
+ #TODO ajouter implements interface
133
+
134
+ struts_addActionFormAttribute!(form)
135
+ struts_create_getXMLFormOperations!(form)
136
+
137
+ struts_addInitFrom!
138
+ struts_addCopyTo!
139
+ struts_addReset!
140
+
141
+ ref=form.umlx_createAndAddProperty(form.rdf_uri+"__ref","reference")
142
+ ref.uml_type=self
143
+ ref.java_noSuggester=RDF_TRUE
144
+
145
+ [STRUTS_DISPATCH_FIELD_NAME,STRUTS_SGBD_STATE,STRUTS_REQUESTED_CREATION_TYPE_FIELD_NAME].each {|p|
146
+ act=form.umlx_createAndAddProperty(form.rdf_uri+p)
147
+ act.uml_name=p
148
+ act.uml_type=umlx_dataType_string
149
+ }
150
+
151
+ form.struts_addActionLocaleFormFields!
152
+
153
+ form.java_addAccessors! #ajouter getter/setter
154
+ form.apaCom_addLogger!
155
+ end
156
+
157
+ STRUTS_ACCEPT_NULL_FIELD_IN_FORMS=true
158
+ def struts_addCopyTo!
159
+ #log.debug{ "addCopyTo #{self}" }
160
+ form=struts_actionForm_one
161
+ cpt=form.umlx_createAndAddOperation(form.rdf_uri+"_copyTo","copyTo")
162
+ cpt.java_annotation_add(%{@SuppressWarnings("unused")})
163
+ pcpt=cpt.umlx_createAndAddParameter(cpt.rdf_uri+"_to","_to")
164
+ pcpt.uml_direction=Cuml_ParameterDirectionKind::Inout
165
+ pcpt.uml_type=self
166
+ code="java.util.TimeZone currentTimeZone = java.util.TimeZone.getTimeZone(get#{STRUTS_SETTIMEZONE_BEAN}());"
167
+ struts_formAttribute.each { |a|
168
+ code=code+"if(this.get#{a.java_NameBean}()!=null) {\n " if(STRUTS_ACCEPT_NULL_FIELD_IN_FORMS)
169
+ code=code+"#{DatatypeMapping.instance.getMapping(a.uml_type_one).getFormCopyTo(a)}"
170
+ code=code+" }//test !=null\n" if(STRUTS_ACCEPT_NULL_FIELD_IN_FORMS)
171
+ }
172
+
173
+ cpt.java_code=code
174
+ end
175
+
176
+ def struts_addActionFormAttribute!(form)
177
+ struts_formAttribute.each { |a|
178
+ a.struts_addActionFormAttribute!(form)
179
+ }
180
+ #struts_addDateFormater!(form)
181
+ end
182
+
183
+ def struts_typeIsUsed?(type)
184
+ type=type.downcase
185
+ struts_formAttribute.each { |a|
186
+ t=a.uml_type_one
187
+ next unless t.kind_of?(Muml_Property)
188
+ next unless t.uml_name_one.downcase==type
189
+ return true
190
+ }
191
+ return false
192
+ end
193
+
194
+ def struts_addInitFrom!
195
+ form=struts_actionForm_one
196
+ inf=form.umlx_createAndAddOperation(form.rdf_uri+"_initFrom","initFrom")
197
+ inf.java_annotation_add(%{@SuppressWarnings("unused")})
198
+ pinf=inf.umlx_createAndAddParameter(inf.rdf_uri+"_from","_from")
199
+ pinf.uml_type=self
200
+ pinf.uml_direction=Cuml_ParameterDirectionKind::In
201
+
202
+ code="java.util.TimeZone currentTimeZone = java.util.TimeZone.getTimeZone(get#{STRUTS_SETTIMEZONE_BEAN}());\n"
203
+ struts_formAttribute.each { |a|
204
+ code=code+"#{DatatypeMapping.instance.getMapping(a.uml_type_one).getFormInitFrom(a)}"
205
+
206
+ }
207
+ inf.java_code=code
208
+ end
209
+
210
+
211
+ def struts_addReset!
212
+ form=struts_actionForm_one
213
+ o=form.umlx_createAndAddOperation(form.rdf_uri+"_reset","reset")
214
+ o.java_annotation_add("@Override")
215
+ o.java_code= <<END
216
+ // if the time zone is not set yet in the session
217
+ // we set the default value ("Europe/Paris") else
218
+ // we get the timezone saved in the user session.
219
+ this.set#{Muml_Classifier::STRUTS_SETTIMEZONE_BEAN}(xmda.tags.helpers.XMDARequestUtils.getUserTimeZone(request, null).getID());
220
+ END
221
+ p=o.umlx_createAndAddParameter(o.rdf_uri+"_mapping","mapping")
222
+ p.uml_type=o.umlx_getOrCreateClass("org.apache.struts.action.ActionMapping")
223
+ p=o.umlx_createAndAddParameter(o.rdf_uri+"_request","request")
224
+ p.uml_type=o.umlx_getOrCreateClass("javax.servlet.http.HttpServletRequest")
225
+ end
226
+ end
227
+
228
+ module Muml_Property
229
+
230
+ #real type of this form field (int,float, ...)
231
+ rdf_safe_attr_reader_many :struts_sourceProperty
232
+
233
+
234
+ def struts_ignoreInForm?(ignoreDbId=true)
235
+ return true if uml_type_one.db_isTransient? && !uml_type_one.kind_of?(Muml_Enumeration) && !uml_type_one.kind_of?(Muml_DataType)
236
+ return true if db_isTransient?
237
+ return true if uml_isStatic?
238
+ return true if java_ignoreMe?
239
+ return true if ignoreDbId && uml_name_one=="id"
240
+ return true if uml_name_one==Muml_Classifier::DB_OBJECT_VERSION_FIELD
241
+ #return true if java_getter_property_inv.empty?
242
+ #return true if java_setter_property_inv.empty?
243
+ # a is a property added for compatibility
244
+ return true unless umlx_stringMappingForEnum.empty?
245
+ return false
246
+ end
247
+
248
+ #field for paginating in lists
249
+ rdf_safe_attr_reader_many :struts_paginatorProperty
250
+
251
+ # adds a matching field in form
252
+ # adds a paginator field when cardinality >1
253
+ def struts_copyAsFormField!(form)
254
+ #log.debug { %{add form field #{self} to #{form}} }
255
+ a2=form.umlx_createAndAddProperty(rdf_uri+"_ActionFormField")
256
+ a2.uml_name=uml_name
257
+ a2.uml_upperValue=uml_upperValue
258
+ a2.uml_lowerValue=uml_lowerValue
259
+ a2.java_use_Arrays=RDF_TRUE
260
+ a2.struts_sourceProperty=self
261
+
262
+ if ! umlx_upperValueIsOne?
263
+ paginator=form.umlx_createAndAddProperty(rdf_uri+"_ActionFormField_page")
264
+ paginator.uml_name=uml_name.to_s+"_strutsPage"
265
+ paginator.uml_type=form.umlx_owner_one.umlx_dataType_integer
266
+ a2.struts_paginatorProperty=paginator
267
+ end
268
+
269
+ return a2
270
+ end
271
+ def struts_addActionFormAttribute!(form)
272
+ return if db_isTransient?
273
+ return if uml_isStatic?
274
+
275
+
276
+ if uml_type_one.kind_of?(Muml_Enumeration)
277
+ struts_addActionFormAttributeEnumeration!(form)
278
+ elsif uml_type_one.kind_of?(Muml_DataType)
279
+ a2=struts_copyAsFormField!(form)
280
+ #a2.uml_type=form.umlx_dataType_string
281
+ tpl=DatatypeMapping.instance.getMapping(uml_type_one)
282
+ a2.uml_type=tpl.getFormType(form)
283
+ else
284
+ struts_addActionFormAttributeReference!(form)
285
+
286
+ end
287
+ #TODO: ajouter autres proprietes
288
+ end
289
+
290
+
291
+ def nil_lvb(obj)
292
+ return %{new #{STRUTS_LVB}("#{obj.java_qualifiedName}.#{NIL_LVB_RES_KEY}", "#{NIL_LVB_KEY}")}
293
+ end
294
+
295
+ STRUTS_ENUM_AS_STRING=true
296
+
297
+ #Adds to the form class, a suggester operation corresponding to this attribute.
298
+ def struts_addActionFormAttributeEnumeration!(form)
299
+ return if uml_isReadOnly?
300
+ a2=struts_copyAsFormField!(form)
301
+ #a2.uml_type=form.umlx_dataType_integer
302
+ a2.uml_type=form.umlx_dataType_string
303
+ #a2.uml_type=form.umlx_getOrCreateClass("java.lang.Integer")
304
+
305
+ sug=form.umlx_createAndAddOperation(form.rdf_uri+"_sug","get#{self.java_NameBean}Sug")
306
+ ret=sug.umlx_createAndAddReturnParameter(sug.rdf_uri+"_return")
307
+ ret.uml_type=form.umlx_getOrCreateClass("#{STRUTS_LVB}")
308
+ ret.uml_upperValue=form.umlx_literal(-1)
309
+ ret.uml_isOrdered=RDF_TRUE
310
+
311
+ sug.java_code=%{
312
+ return #{form.struts_getFormHelper.java_qualifiedName}.#{STRUTS_FORM_HELPER_ENUMTOLVB}(#{self.uml_type_one.java_qualifiedName}.class,(#{self.uml_type_one.java_qualifiedName})null,getReference().get#{self.java_NameBean}Sug());
313
+ }
314
+ end
315
+
316
+ #suggester for a list of objects
317
+ def struts_addActionFormAttributeReference!(form)
318
+ a2=struts_copyAsFormField!(form)
319
+ a2.uml_type=form.umlx_dataType_string
320
+
321
+ if ! uml_isReadOnly?
322
+ sug=form.umlx_createAndAddOperation(form.rdf_uri+"_sug","get#{self.java_NameBean}Sug")
323
+ ret=sug.umlx_createAndAddReturnParameter(sug.rdf_uri+"_return")
324
+ ret.uml_type=form.umlx_getOrCreateClass("#{STRUTS_LVB}")
325
+ ret.uml_upperValue=form.umlx_literal(-1)
326
+ ret.uml_isOrdered=RDF_TRUE
327
+
328
+ sug.java_code= <<ENDJAVA
329
+ java.util.List<#{STRUTS_LVB}> ret=new java.util.ArrayList<#{STRUTS_LVB}>();
330
+ #{STRUTS_LVB} lvb=null;
331
+ //
332
+ // //#{self.umlx_manySide? ? "" : %{lvb=new #{STRUTS_LVB}("--","empty");
333
+ // //ret.add(lvb);} }
334
+ // return #{form.struts_getFormHelper.java_qualifiedName}.#{STRUTS_FORM_HELPER_ENUMTOLVB}(#{self.uml_type_one.java_qualifiedName}.class,(#{self.uml_type_one.java_qualifiedName})null,getReference().get#{self.java_NameBean}Sug());
335
+
336
+ for (#{self.uml_type_one.java_qualifiedName} item : getReference().get#{self.java_NameBean}Sug()) {
337
+ if(item!=null) {
338
+ lvb=new #{STRUTS_LVB}("obj:"+item.getId(), Long.toString(item.getId()));
339
+ } else {
340
+ lvb=#{nil_lvb(self.uml_type_one)};
341
+ }
342
+ ret.add(lvb);
343
+ }
344
+ return ret;
345
+ ENDJAVA
346
+ end
347
+ if(umlx_isComposite?)
348
+ m=java_createAndAddSuggester_one
349
+ r=nil
350
+ (m.uml_returnResult+m.uml_ownedParameter).each {|p| next unless p.uml_direction_one.isReturn? ; r=p.uml_type_one }
351
+ sugC=form.umlx_createAndAddOperation(form.rdf_uri+"_sugC","#{m.java_Name}")
352
+ ret=sugC.umlx_createAndAddReturnParameter("#{sugC.rdf_uri}_ret")
353
+ ret.uml_type=form.umlx_getOrCreateClass("#{STRUTS_LVB}")
354
+ ret.uml_upperValue=form.umlx_literal(-1)
355
+ ret.uml_isOrdered=RDF_TRUE
356
+ sugC.java_code=%{
357
+ return #{form.struts_getFormHelper.java_qualifiedName}.#{STRUTS_FORM_HELPER_ENUMTOLVB}(#{r.java_qualifiedName}.class,(#{r.java_qualifiedName})null,getReference().#{m.java_Name}(),true);
358
+ }
359
+
360
+ end
361
+
362
+ end
363
+
364
+
365
+
366
+
367
+ end
368
+
369
+ module Muml_Element
370
+ STRUTS_FORM_HELPER="xmda.struts.FormHelper"
371
+ STRUTS_FORM_HELPER_ENUMTOLVB="enumToLvb"
372
+
373
+ STRUTS_DATE_FORMATER_INSTANCE=STRUTS_FORM_HELPER+'.DfCalendar'
374
+ STRUTS_TIMESTAMP_FORMATER_INSTANCE=STRUTS_FORM_HELPER+'.DfTimestamp'
375
+
376
+ STRUTS_FORM_HELPER_CODE= <<ENDCODE
377
+ public static final java.text.SimpleDateFormat DfTimestamp=new java.text.SimpleDateFormat("yyyy/MM/dd HH:mm:ss",java.util.Locale.ENGLISH);
378
+ public static final java.text.SimpleDateFormat DfCalendar=new java.text.SimpleDateFormat("yyyy/MM/dd",java.util.Locale.ENGLISH);
379
+
380
+ /**
381
+ * Transform a timestamp date to its GMT equivalent date.
382
+ *
383
+ * @param fromTimeZone
384
+ * @param timestampToTransform
385
+ * @return date in GMT
386
+ */
387
+ public static java.util.Date transformFromCurrentTZToGMT(final java.util.TimeZone fromTimeZone,final java.util.Date timestampToTransform) {
388
+ // the offset of this time zone from UTC.
389
+ int offset = fromTimeZone.getRawOffset();
390
+
391
+ java.util.GregorianCalendar gregCal = new java.util.GregorianCalendar();
392
+ gregCal.setTime(timestampToTransform);
393
+ gregCal.add(java.util.Calendar.HOUR_OF_DAY, (-offset / 3600000));
394
+
395
+ return gregCal.getTime();
396
+ }
397
+
398
+ public static java.util.Date transformFromGMTToCurrentTZ(final java.util.TimeZone currentTimeZone,final java.util.Date timestampToTransform) {
399
+ // the offset of this time zone from UTC.
400
+ int offset = currentTimeZone.getRawOffset();
401
+
402
+ java.util.GregorianCalendar gregorianCalendar = new java.util.GregorianCalendar();
403
+ gregorianCalendar.setTime(timestampToTransform);
404
+ gregorianCalendar.add(java.util.Calendar.HOUR_OF_DAY, (offset / 3600000));
405
+ return gregorianCalendar.getTime();
406
+ }
407
+
408
+ public static java.util.List<#{STRUTS_LVB}> #{STRUTS_FORM_HELPER_ENUMTOLVB}(final Class<?> enumType,final xmda.java.JavaEnumSig typeCheck, final java.util.List<?> enums) {
409
+ return #{STRUTS_FORM_HELPER_ENUMTOLVB}(enumType,typeCheck,enums,false);
410
+ }
411
+ // addNullItem is used for example to add a "add element" in creator selection.
412
+ public static java.util.List<#{STRUTS_LVB}> #{STRUTS_FORM_HELPER_ENUMTOLVB}(final Class<?> enumType,final xmda.java.JavaEnumSig typeCheck, final java.util.List<?> enums,final boolean addNullItem) {
413
+ try {
414
+ java.util.List<#{STRUTS_LVB}> ret=new java.util.ArrayList<#{STRUTS_LVB}>();
415
+ String prefix=enumType.getCanonicalName()+".";
416
+ #{STRUTS_LVB} lvb=null;
417
+ if(addNullItem) { ret.add(new #{STRUTS_LVB}(prefix+"obj_nil", "nil"));}
418
+ for ( Object itemObj : enums) {
419
+ xmda.java.JavaEnumSig item=(#{JAVA_ENUM_INTERFACE_QNAME})itemObj;
420
+ if(item!=null) {
421
+ //value is a localization resource key
422
+ lvb=new #{STRUTS_LVB}(prefix+item.name(),item.name());
423
+ } else {
424
+ lvb=new #{STRUTS_LVB}(prefix+"obj_nil", "nil");
425
+ }
426
+ ret.add(lvb);
427
+ }
428
+ return ret;
429
+ } catch (RuntimeException e) {
430
+ log.error(e);
431
+ throw(e);
432
+ }
433
+ }
434
+ ENDCODE
435
+
436
+ def struts_getFormHelper
437
+ helper=umlx_getOrCreateClass(STRUTS_FORM_HELPER)
438
+ if(helper.java_customCode.empty?)
439
+ helper.apaCom_addLogger!
440
+ helper.umlx_external=RDF_FALSE
441
+ #helper.java_import_add(STRUTS_LVB)
442
+ helper.db_isTransient=RDF_TRUE
443
+ helper.struts_isForm=RDF_FALSE
444
+ helper.java_customCode= STRUTS_FORM_HELPER_CODE
445
+ end
446
+ return helper;
447
+ end
448
+ end
449
+
450
+