ontomde-uml2-struts 1.0.4
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.
- data/History.txt +5 -0
- data/Manifest.txt +31 -0
- data/README.txt +38 -0
- data/Rakefile +32 -0
- data/lib/ontomde-uml2-struts/MessageResources.rb +356 -0
- data/lib/ontomde-uml2-struts/action.rb +886 -0
- data/lib/ontomde-uml2-struts/blob.rb +11 -0
- data/lib/ontomde-uml2-struts/exceptionHandling.rb +167 -0
- data/lib/ontomde-uml2-struts/footer.rb +128 -0
- data/lib/ontomde-uml2-struts/form.rb +483 -0
- data/lib/ontomde-uml2-struts/header.rb +37 -0
- data/lib/ontomde-uml2-struts/header_link.rb +39 -0
- data/lib/ontomde-uml2-struts/jsp_edit.rb +866 -0
- data/lib/ontomde-uml2-struts/jsp_edit_field.rb +1 -0
- data/lib/ontomde-uml2-struts/jsp_edit_js.rb +124 -0
- data/lib/ontomde-uml2-struts/jsp_index.rb +131 -0
- data/lib/ontomde-uml2-struts/localeAction.rb +641 -0
- data/lib/ontomde-uml2-struts/main.rb +140 -0
- data/lib/ontomde-uml2-struts/mappingForBean.rb +132 -0
- data/lib/ontomde-uml2-struts/mappingForJsp.rb +272 -0
- data/lib/ontomde-uml2-struts/mappingToJavaHierarchy.rb +87 -0
- data/lib/ontomde-uml2-struts/reloadAction.rb +33 -0
- data/lib/ontomde-uml2-struts/spring.rb +89 -0
- data/lib/ontomde-uml2-struts/struts-config.rb +232 -0
- data/lib/ontomde-uml2-struts/validation.rb +116 -0
- data/lib/ontomde-uml2-struts/validator.rb +341 -0
- data/lib/ontomde-uml2-struts/version.rb +7 -0
- data/lib/ontomde-uml2-struts/webXml.rb +165 -0
- data/lib/ontomde-uml2-struts/xmlForm.rb +308 -0
- data/lib/ontomde-uml2-struts.rb +34 -0
- data/test/test_ontomde-uml2-struts.rb +0 -0
- metadata +112 -0
@@ -0,0 +1,89 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
module Mrdf_Model
|
4
|
+
|
5
|
+
def struts_generateSpringApplicationContext
|
6
|
+
return unless context[:struts_useSpring]
|
7
|
+
mtk_writeSession("#{context[:webContentDir]}/WEB-INF/applicationContext.xml") {
|
8
|
+
struts_writeSpringApplicationContext
|
9
|
+
}
|
10
|
+
end
|
11
|
+
|
12
|
+
def struts_writeSpringApplicationContext
|
13
|
+
|
14
|
+
write <<END
|
15
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
16
|
+
|
17
|
+
<beans xmlns="http://www.springframework.org/schema/beans"
|
18
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
19
|
+
xmlns:aop="http://www.springframework.org/schema/aop"
|
20
|
+
xmlns:tx="http://www.springframework.org/schema/tx"
|
21
|
+
xsi:schemaLocation="
|
22
|
+
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
|
23
|
+
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
|
24
|
+
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
|
25
|
+
|
26
|
+
<!-- ===========================actions struts ================================ -->
|
27
|
+
|
28
|
+
#{mtk_stss { struts_writeSpringStrutsBean }}
|
29
|
+
|
30
|
+
<!-- ============================================ DAO beans =================================== -->
|
31
|
+
|
32
|
+
#{mtk_stss { struts_writeSpringBean }}
|
33
|
+
|
34
|
+
<!-- scope="prototype" because PersistenceContextType is extended and thus not thread safe. We need to have a single private PersistenceContext for the duration of the transaction. We need EXTENTED because SGBD need to be accessed read-only from JSPs, after transaction has been committed -->
|
35
|
+
<bean id="#{Muml_Class::DB_Context.gsub(/^.*\./,'')}" class="#{Muml_Class::DB_Context}" scope="prototype" />
|
36
|
+
<bean class="#{Muml_Class::DB_Context}$#{Muml_Class::DB_Context.gsub(/^.*\./,'')}SpringContext" />
|
37
|
+
</beans>
|
38
|
+
END
|
39
|
+
|
40
|
+
end
|
41
|
+
def struts_springIgnore(b)
|
42
|
+
return true if b.struts_action_one0.nil?
|
43
|
+
#return true if b.java_DAOClass_one0.nil?
|
44
|
+
return false
|
45
|
+
end
|
46
|
+
def struts_writeSpringStrutsBean
|
47
|
+
eachStrutsBean { |b|
|
48
|
+
next if struts_springIgnore(b)
|
49
|
+
#puts "b=#{b.java_qualifiedName}"
|
50
|
+
|
51
|
+
if b.struts_action_one.nil?
|
52
|
+
#puts "!!!! #{b} n'a pas de struts_action"
|
53
|
+
next
|
54
|
+
end
|
55
|
+
suffixes=["-new"]
|
56
|
+
b.struts_ownedTab.each {|tab|
|
57
|
+
idOnglet=tab.java_Name_one
|
58
|
+
suffixes<< "#{idOnglet}-submit"
|
59
|
+
}
|
60
|
+
suffixes.each { |suffix|
|
61
|
+
if b.uml_isAbstract?
|
62
|
+
write("<!-- ignore abstract : #{b.java_Name} -->\n")
|
63
|
+
else
|
64
|
+
write <<END
|
65
|
+
<bean name="/#{b.java_Name}#{suffix}"
|
66
|
+
parent="txProxyTemplate"
|
67
|
+
scope="session">
|
68
|
+
<property name="target"><bean class="#{b.struts_action_one.java_qualifiedName}"/></property>
|
69
|
+
</bean>
|
70
|
+
END
|
71
|
+
end
|
72
|
+
}}
|
73
|
+
end
|
74
|
+
|
75
|
+
def struts_writeSpringBean
|
76
|
+
# beans are no longer spring beans
|
77
|
+
return
|
78
|
+
eachStrutsBean { |b|
|
79
|
+
next if struts_springIgnore(b)
|
80
|
+
dao=b.java_DAOClass_one
|
81
|
+
if b.uml_isAbstract?
|
82
|
+
write("<!-- ignore abstract : #{b.java_Name} -->\n")
|
83
|
+
else
|
84
|
+
write %{<bean id="#{dao.java_Name}" class="#{dao.java_qualifiedName}" />\n}
|
85
|
+
end
|
86
|
+
}
|
87
|
+
end
|
88
|
+
|
89
|
+
end #module
|
@@ -0,0 +1,232 @@
|
|
1
|
+
|
2
|
+
module Muml_Class
|
3
|
+
def struts_formName
|
4
|
+
return "#{java_qualifiedName.tr('.','_')}"
|
5
|
+
end
|
6
|
+
|
7
|
+
STRUTS_SWITCH_TO_FLEX_FORWARD="switchToFlexFwd"
|
8
|
+
FLEX_SWITCH_TO_JSP_PATH="/flex/switchToFlex.jsp"
|
9
|
+
NOGIF_FORWARD="NOGIF_FWD"
|
10
|
+
|
11
|
+
#STRUTS_DOWNLOAD_FORWARD="downloadFwd"
|
12
|
+
#STRUTS_DOWNLOAD_JSP_PATH="/download.jsp"
|
13
|
+
end
|
14
|
+
|
15
|
+
module Mrdf_Model
|
16
|
+
|
17
|
+
def struts_struts_config_generate
|
18
|
+
mtk_writeSession("#{context[:webContentDir]}/WEB-INF/struts-config.xml") {
|
19
|
+
struts_struts_config_writeFile
|
20
|
+
}
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
def struts_struts_config_writeFile
|
27
|
+
# CAUTION no CR befor <?xml> instruction
|
28
|
+
before=<<END
|
29
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
30
|
+
<!DOCTYPE struts-config PUBLIC
|
31
|
+
"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
|
32
|
+
"http://struts.apache.org/dtds/struts-config_1_3.dtd">
|
33
|
+
|
34
|
+
<struts-config>
|
35
|
+
END
|
36
|
+
after=<<END
|
37
|
+
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
|
38
|
+
<set-property property="pathnames" value="/WEB-INF/validation.xml, /WEB-INF/validator-rules.xml"/>
|
39
|
+
<set-property property="stopOnFirstError" value="true"/>
|
40
|
+
</plug-in>
|
41
|
+
</struts-config>
|
42
|
+
END
|
43
|
+
|
44
|
+
#<!ELEMENT struts-config (data-sources?, form-beans?, global-exceptions?, global-forwards?, action-mappings?, controller?, message-resources*, plug-in*)>
|
45
|
+
|
46
|
+
encloseWrite(before,after) {
|
47
|
+
struts_write_struts_config_form_beans
|
48
|
+
struts_struts_config_writeFile_GlobalException
|
49
|
+
struts_struts_config_writeFile_GlobalForwards
|
50
|
+
struts_write_struts_config_action_mappings
|
51
|
+
struts_writeSpringRequestProcess_controller
|
52
|
+
write(%{<!-- Message are in /WEB-INF/classes/ApplicationResources*.properties -->\n})
|
53
|
+
write(%{<message-resources parameter="MessageResources"/>\n})
|
54
|
+
struts_writeSpringRequestProcess_plugin
|
55
|
+
}
|
56
|
+
end
|
57
|
+
def struts_struts_config_writeFile_struts_config
|
58
|
+
end
|
59
|
+
|
60
|
+
def struts_struts_config_writeFile_GlobalException
|
61
|
+
before="<global-exceptions>"
|
62
|
+
after="</global-exceptions>"
|
63
|
+
encloseWrite(before,after) {
|
64
|
+
write <<ENDEXCEPTION
|
65
|
+
<exception
|
66
|
+
key="errors.ioException"
|
67
|
+
type="#{struts_getFunctionalException.java_qualifiedName}"
|
68
|
+
path="errorPage.jsp"
|
69
|
+
handler="#{struts_getExceptionHandlerClass.java_qualifiedName}"
|
70
|
+
/>
|
71
|
+
ENDEXCEPTION
|
72
|
+
}
|
73
|
+
end
|
74
|
+
|
75
|
+
def struts_struts_config_writeFile_GlobalForwards
|
76
|
+
before=<<END
|
77
|
+
<global-forwards>
|
78
|
+
<forward name="#{Muml_Class::STRUTS_SWITCH_TO_FLEX_FORWARD}" path="#{Muml_Class::FLEX_SWITCH_TO_JSP_PATH}" />
|
79
|
+
<forward name="#{Muml_Class::NOGIF_FORWARD}" path="/res/orange/image/noImage.gif" />
|
80
|
+
END
|
81
|
+
after=<<END
|
82
|
+
</global-forwards>
|
83
|
+
END
|
84
|
+
encloseWrite(before,after) {
|
85
|
+
#<!--
|
86
|
+
# <global-forwards type="org.apache.struts.webapp.examples.CustomActionForward">
|
87
|
+
# <forward name="welcome" path="/welcome.do">
|
88
|
+
# <set-property property="example" value="EXAMPLE"/>
|
89
|
+
# </forward>
|
90
|
+
# </global-forwards>
|
91
|
+
#-->
|
92
|
+
struts_struts_config_writeFile_GlobalForwards_editAction
|
93
|
+
}
|
94
|
+
end
|
95
|
+
def struts_struts_config_writeFile_GlobalForwards_editAction
|
96
|
+
eachStrutsBean { |c|
|
97
|
+
b=c.struts_actionFormSrc_one0
|
98
|
+
next if b.nil?
|
99
|
+
write(%{<forward path="/#{b.java_Name}-new.do?#{Muml_Classifier::STRUTS_DISPATCH_FIELD_NAME}=#{Muml_Classifier::STRUTS_ACTION_STARTEDIT}"
|
100
|
+
name="#{b.struts_editForwardName}" redirect="false" />\n})
|
101
|
+
}
|
102
|
+
|
103
|
+
end
|
104
|
+
|
105
|
+
def struts_write_struts_config_form_beans
|
106
|
+
write %{ <form-beans>\n}
|
107
|
+
|
108
|
+
struts_ActionLocaleWriteActionBean
|
109
|
+
|
110
|
+
eachStrutsBean { |b|
|
111
|
+
b.struts_write_struts_config_form_bean
|
112
|
+
}
|
113
|
+
write %{ </form-beans>\n}
|
114
|
+
end
|
115
|
+
|
116
|
+
# struts-config configuration for spring
|
117
|
+
def struts_writeSpringRequestProcess_controller
|
118
|
+
return unless context[:struts_useSpring]
|
119
|
+
write <<END
|
120
|
+
<controller>
|
121
|
+
<set-property
|
122
|
+
property="processorClass"
|
123
|
+
value="org.springframework.web.struts.DelegatingRequestProcessor"
|
124
|
+
/>
|
125
|
+
</controller>
|
126
|
+
END
|
127
|
+
end
|
128
|
+
|
129
|
+
def struts_writeSpringRequestProcess_plugin
|
130
|
+
return
|
131
|
+
return unless context[:struts_useSpring]
|
132
|
+
write <<END
|
133
|
+
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
|
134
|
+
<set-property
|
135
|
+
property="contextConfigLocation"
|
136
|
+
value="/WEB-INF/applicationContext.xml, /WEB-INF/applicationContext-jpa.xml"
|
137
|
+
/>
|
138
|
+
</plug-in>
|
139
|
+
END
|
140
|
+
end
|
141
|
+
|
142
|
+
|
143
|
+
def struts_write_struts_config_action_mappings
|
144
|
+
#write(%{<action-mappings type="org.apache.struts.webapp.examples.CustomActionMapping"> \n})
|
145
|
+
before=%{ <action-mappings> \n}
|
146
|
+
after=<<END
|
147
|
+
<action path="/Welcome" forward="/index.jsp" />
|
148
|
+
</action-mappings>
|
149
|
+
END
|
150
|
+
|
151
|
+
encloseWrite(before,after) {
|
152
|
+
write(%{#{struts_getReloadDefinitionsActionConfig}\n})
|
153
|
+
struts_ActionLocaleWriteActionPath
|
154
|
+
eachStrutsBean { |b|
|
155
|
+
b.struts_write_struts_config_action_mapping
|
156
|
+
}
|
157
|
+
}
|
158
|
+
end
|
159
|
+
end
|
160
|
+
module Muml_Class
|
161
|
+
|
162
|
+
STRUTS_EDIT_FWD_POSTFIX="_fwEdit"
|
163
|
+
def struts_editForwardName
|
164
|
+
return "#{java_Name}#{STRUTS_EDIT_FWD_POSTFIX}"
|
165
|
+
end
|
166
|
+
def struts_write_struts_config_form_bean
|
167
|
+
return if struts_actionForm.empty?
|
168
|
+
|
169
|
+
write <<END
|
170
|
+
<form-bean name="#{self.struts_actionForm_one.java_uniqueName}" type="#{struts_actionForm_one.java_qualifiedName}"/>
|
171
|
+
END
|
172
|
+
#<!-- set-property property="example" value="EXAMPLE"/ -->
|
173
|
+
end
|
174
|
+
|
175
|
+
|
176
|
+
def struts_get_struts_config_action_mapping_actionTypeClause
|
177
|
+
# if context[:struts_useSpring]
|
178
|
+
# return %{type="defined in spring"}
|
179
|
+
#else
|
180
|
+
return %{type="#{struts_action_one.java_qualifiedName}"}
|
181
|
+
#end
|
182
|
+
end
|
183
|
+
|
184
|
+
|
185
|
+
|
186
|
+
def struts_write_struts_config_action_mapping
|
187
|
+
return if struts_action.empty?
|
188
|
+
|
189
|
+
fwd=""
|
190
|
+
struts_ownedTab.each{ |tab|
|
191
|
+
idOnglet=tab.java_Name_one
|
192
|
+
fwd=fwd+%{\n <forward name="#{idOnglet}" path="/pages/#{java_InternalFilePath}form/#{java_Name}#{idOnglet}.jsp" />}
|
193
|
+
}
|
194
|
+
|
195
|
+
mtk_protected {
|
196
|
+
|
197
|
+
write <<END
|
198
|
+
<action path="/#{java_Name}-new"
|
199
|
+
#{struts_get_struts_config_action_mapping_actionTypeClause}
|
200
|
+
name="#{self.struts_actionForm_one.java_Name}"
|
201
|
+
scope="session"
|
202
|
+
validate="false"
|
203
|
+
cancellable="true"
|
204
|
+
parameter="#{Muml_Class::STRUTS_DISPATCH_FIELD_NAME}"
|
205
|
+
input="/pages/#{java_InternalFilePath}form/#{java_Name}#{struts_defaultTabId}.jsp"
|
206
|
+
>#{fwd}
|
207
|
+
<forward name="cancel" path="/Welcome.do" />
|
208
|
+
<forward name="#{STRUTS_INPUT_FWD}" path="/pages/#{java_InternalFilePath}form/#{java_Name}#{struts_defaultTabId}.jsp"/>
|
209
|
+
</action>
|
210
|
+
END
|
211
|
+
struts_ownedTab.each{ |tab|
|
212
|
+
idOnglet=tab.java_Name_one
|
213
|
+
#struts_tabs.each{|idOnglet|
|
214
|
+
write <<END
|
215
|
+
<action path="/#{java_Name}#{idOnglet}-submit"
|
216
|
+
#{struts_get_struts_config_action_mapping_actionTypeClause}
|
217
|
+
name="#{self.struts_actionForm_one.java_Name}"
|
218
|
+
scope="session"
|
219
|
+
validate="true"
|
220
|
+
cancellable="true"
|
221
|
+
parameter="#{Muml_Class::STRUTS_DISPATCH_FIELD_NAME}"
|
222
|
+
input="/pages/#{java_InternalFilePath}form/#{java_Name}#{idOnglet}.jsp"
|
223
|
+
>#{fwd}
|
224
|
+
<forward name="cancel" path="/Welcome.do" />
|
225
|
+
<forward name="#{STRUTS_INPUT_FWD}" path="/pages/#{java_InternalFilePath}form/#{java_Name}#{idOnglet}.jsp"/>
|
226
|
+
</action>
|
227
|
+
END
|
228
|
+
}
|
229
|
+
}
|
230
|
+
end
|
231
|
+
|
232
|
+
end # Muml_Class
|
@@ -0,0 +1,116 @@
|
|
1
|
+
|
2
|
+
module Mrdf_Model
|
3
|
+
|
4
|
+
def struts_validation_generate
|
5
|
+
mtk_writeSession("#{context[:webContentDir]}/WEB-INF/validation.xml") {
|
6
|
+
struts_validation_writeFile
|
7
|
+
}
|
8
|
+
end
|
9
|
+
|
10
|
+
def struts_validation_writeFile
|
11
|
+
|
12
|
+
# CAUTION no CR befor <?xml> instruction
|
13
|
+
write <<END
|
14
|
+
<?xml version="1.0" encoding="ISO-8859-1" ?>
|
15
|
+
<!DOCTYPE form-validation PUBLIC
|
16
|
+
"-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.3.0//EN"
|
17
|
+
"http://jakarta.apache.org/commons/dtds/validator_1_3_0.dtd">
|
18
|
+
|
19
|
+
<!-- Generated by XMDA -->
|
20
|
+
|
21
|
+
<form-validation>
|
22
|
+
|
23
|
+
<!--
|
24
|
+
This is a minimal Validator form file with a couple of examples.
|
25
|
+
-->
|
26
|
+
END
|
27
|
+
|
28
|
+
struts_write_validation_formset
|
29
|
+
write %{</form-validation>\n}
|
30
|
+
end
|
31
|
+
|
32
|
+
def struts_write_validation_formset
|
33
|
+
write %{ <formset>\n}
|
34
|
+
eachStrutsFormset { |b|
|
35
|
+
b.struts_write_validation_config_formset
|
36
|
+
}
|
37
|
+
write %{ </formset>\n}
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
module Muml_Class
|
43
|
+
|
44
|
+
def struts_write_validation_config_formset
|
45
|
+
return if struts_actionForm.empty?
|
46
|
+
write %{<form name="#{self.struts_actionForm_one.java_uniqueName}">\n}
|
47
|
+
struts_validation_writeFields
|
48
|
+
write %{</form>\n}
|
49
|
+
end
|
50
|
+
|
51
|
+
def struts_validation_writeFields
|
52
|
+
struts_formAttribute.each { |a|
|
53
|
+
a.struts_validation_writeField
|
54
|
+
}
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
module Muml_Property
|
59
|
+
def struts_validation_writeField
|
60
|
+
self.uml_type_one.struts_validation_writeField(self)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
module Muml_DataType
|
65
|
+
def java_isInteger?
|
66
|
+
a=self
|
67
|
+
return a.kind_of?(Muml_DataType) && (a.java_qualifiedName.downcase=="java.lang.Integer" || a.java_qualifiedName=="int")
|
68
|
+
end
|
69
|
+
def struts_validation_writeField(field)
|
70
|
+
|
71
|
+
#return if self.kind_of?(Muml_Enumeration)
|
72
|
+
re=JavaMapping.instance.getTemplate(field.uml_type_one).getValidationRegexp
|
73
|
+
return if re.nil?
|
74
|
+
#re=STRUTS_PRIMITIVE_TYPE_REGEXP[self.uml_name_one]
|
75
|
+
#n=java_qualifiedName.downcase
|
76
|
+
#n=n.gsub("_","") if "_".include?(n[0,1])
|
77
|
+
#if self.kind_of?(Muml_Enumeration)
|
78
|
+
# # validation is not necessary
|
79
|
+
#elsif !re.nil?
|
80
|
+
write %{
|
81
|
+
<field property="#{field.java_Name}" depends="mask">
|
82
|
+
<arg key="defaultForm.string.displayname" />
|
83
|
+
<var><var-name>mask</var-name><var-value>#{re.source}</var-value></var>
|
84
|
+
</field>
|
85
|
+
}
|
86
|
+
#elsif java_isInteger?
|
87
|
+
# n="integer"
|
88
|
+
# log.error("struts validator #{n} is not registered.") unless rdf_model.struts_validatorExists?(n)
|
89
|
+
# write %{
|
90
|
+
# <field property="#{field.java_Name}" depends="required,#{n}">
|
91
|
+
# <arg key="defaultForm.#{n}.displayname" />
|
92
|
+
# </field>
|
93
|
+
#}
|
94
|
+
#else
|
95
|
+
# log.warn{ "no validation for field: #{field}" }
|
96
|
+
#end
|
97
|
+
#if n=="long"
|
98
|
+
#write %{
|
99
|
+
# <field property="#{field.java_Name}" depends="required,#{n}">
|
100
|
+
# <arg key="defaultForm.#{n}.displayname" />
|
101
|
+
# </field>
|
102
|
+
#}
|
103
|
+
# end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
module Muml_Class
|
108
|
+
def struts_validation_writeField(field)
|
109
|
+
write "<!-- TODO -->"
|
110
|
+
end
|
111
|
+
end
|
112
|
+
module Muml_Interface
|
113
|
+
def struts_validation_writeField(field)
|
114
|
+
write "<!-- TODO -->"
|
115
|
+
end
|
116
|
+
end
|