ontomde-uml2-struts 1.0.4
Sign up to get free protection for your applications and to get access to all the features.
- 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,483 @@
|
|
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
|
+
|
144
|
+
[STRUTS_DISPATCH_FIELD_NAME,STRUTS_SGBD_STATE,STRUTS_REQUESTED_CREATION_TYPE_FIELD_NAME].each {|p|
|
145
|
+
act=form.umlx_createAndAddProperty(form.rdf_uri+p)
|
146
|
+
act.uml_name=p
|
147
|
+
act.uml_type=umlx_dataType_string
|
148
|
+
}
|
149
|
+
|
150
|
+
form.struts_addActionLocaleFormFields!
|
151
|
+
|
152
|
+
form.java_addAccessors! #ajouter getter/setter
|
153
|
+
form.apaCom_addLogger!
|
154
|
+
end
|
155
|
+
|
156
|
+
STRUTS_ACCEPT_NULL_FIELD_IN_FORMS=true
|
157
|
+
def struts_addCopyTo!
|
158
|
+
#log.debug{ "addCopyTo #{self}" }
|
159
|
+
form=struts_actionForm_one
|
160
|
+
cpt=form.umlx_createAndAddOperation(form.rdf_uri+"_copyTo","copyTo")
|
161
|
+
cpt.java_annotation_add(%{@SuppressWarnings("unused")})
|
162
|
+
pcpt=cpt.umlx_createAndAddParameter(cpt.rdf_uri+"_to","_to")
|
163
|
+
pcpt.uml_direction=Cuml_ParameterDirectionKind::Inout
|
164
|
+
pcpt.uml_type=self
|
165
|
+
code="java.util.TimeZone currentTimeZone = java.util.TimeZone.getTimeZone(get#{STRUTS_SETTIMEZONE_BEAN}());"
|
166
|
+
struts_formAttribute.each { |a|
|
167
|
+
code=code+"if(this.get#{a.java_NameBean}()!=null) {\n " if(STRUTS_ACCEPT_NULL_FIELD_IN_FORMS)
|
168
|
+
code=code+"#{JavaMapping.instance.getTemplate(a.uml_type_one).getFormCopyTo(a)}"
|
169
|
+
code=code+" }//test !=null\n" if(STRUTS_ACCEPT_NULL_FIELD_IN_FORMS)
|
170
|
+
}
|
171
|
+
|
172
|
+
cpt.java_code=code
|
173
|
+
end
|
174
|
+
|
175
|
+
def struts_addActionFormAttribute!(form)
|
176
|
+
struts_formAttribute.each { |a|
|
177
|
+
a.struts_addActionFormAttribute!(form)
|
178
|
+
}
|
179
|
+
#struts_addDateFormater!(form)
|
180
|
+
end
|
181
|
+
|
182
|
+
def struts_typeIsUsed?(type)
|
183
|
+
type=type.downcase
|
184
|
+
struts_formAttribute.each { |a|
|
185
|
+
t=a.uml_type_one
|
186
|
+
next unless t.kind_of?(Muml_Property)
|
187
|
+
next unless t.uml_name_one.downcase==type
|
188
|
+
return true
|
189
|
+
}
|
190
|
+
return false
|
191
|
+
end
|
192
|
+
|
193
|
+
|
194
|
+
# def struts_addDateFormater!(form)
|
195
|
+
# if struts_typeIsUsed?("date")
|
196
|
+
# df=form.umlx_createAndAddProperty("#{rdf_uri}_dfCalendar",STRUTS_DATE_FORMATER_INSTANCE);
|
197
|
+
# df.uml_type=form.umlx_getOrCreateClass('java.text.SimpleDateFormat');
|
198
|
+
# df.java_code='new java.text.SimpleDateFormat("yyyy/MM/dd",java.util.Locale.ENGLISH);'
|
199
|
+
# df.java_noAccessors=RDF_TRUE
|
200
|
+
# df.uml_visibility=Cuml_VisibilityKind::Private
|
201
|
+
# df.uml_isStatic=RDF_TRUE #TODO : synchronized ??, (pb synchronisation)
|
202
|
+
# df.db_isTransient=RDF_TRUE
|
203
|
+
# df.java_isTransient=RDF_TRUE
|
204
|
+
# end
|
205
|
+
# if struts_typeIsUsed?("timestamp")
|
206
|
+
# df=form.umlx_createAndAddProperty("#{rdf_uri}_dfTimestamp",STRUTS_TIMESTAMP_FORMATER_INSTANCE);
|
207
|
+
# df.uml_type=form.umlx_getOrCreateClass('java.text.SimpleDateFormat');
|
208
|
+
# df.java_code='new java.text.SimpleDateFormat("yyyy/MM/dd HH:mm:ss",java.util.Locale.ENGLISH);'
|
209
|
+
# df.java_noAccessors=RDF_TRUE
|
210
|
+
# df.uml_visibility=Cuml_VisibilityKind::Private
|
211
|
+
# df.uml_isStatic=RDF_TRUE #TODO : synchronized ??, (pb synchronisation)
|
212
|
+
# df.db_isTransient=RDF_TRUE
|
213
|
+
# df.java_isTransient=RDF_TRUE
|
214
|
+
# end
|
215
|
+
# end
|
216
|
+
|
217
|
+
def struts_addInitFrom!
|
218
|
+
form=struts_actionForm_one
|
219
|
+
inf=form.umlx_createAndAddOperation(form.rdf_uri+"_initFrom","initFrom")
|
220
|
+
inf.java_annotation_add(%{@SuppressWarnings("unused")})
|
221
|
+
pinf=inf.umlx_createAndAddParameter(inf.rdf_uri+"_from","_from")
|
222
|
+
pinf.uml_type=self
|
223
|
+
pinf.uml_direction=Cuml_ParameterDirectionKind::In
|
224
|
+
|
225
|
+
code="java.util.TimeZone currentTimeZone = java.util.TimeZone.getTimeZone(get#{STRUTS_SETTIMEZONE_BEAN}());\n"
|
226
|
+
struts_formAttribute.each { |a|
|
227
|
+
code=code+"#{JavaMapping.instance.getTemplate(a.uml_type_one).getFormInitFrom(a)}"
|
228
|
+
|
229
|
+
}
|
230
|
+
inf.java_code=code
|
231
|
+
end
|
232
|
+
|
233
|
+
|
234
|
+
def struts_addReset!
|
235
|
+
form=struts_actionForm_one
|
236
|
+
o=form.umlx_createAndAddOperation(form.rdf_uri+"_reset","reset")
|
237
|
+
o.java_annotation_add("@Override")
|
238
|
+
o.java_code= <<END
|
239
|
+
// if the time zone is not set yet in the session
|
240
|
+
// we set the default value ("Europe/Paris") else
|
241
|
+
// we get the timezone saved in the user session.
|
242
|
+
this.set#{Muml_Classifier::STRUTS_SETTIMEZONE_BEAN}(xmda.tags.helpers.XMDARequestUtils.getUserTimeZone(request, null).getID());
|
243
|
+
END
|
244
|
+
p=o.umlx_createAndAddParameter(o.rdf_uri+"_mapping","mapping")
|
245
|
+
p.uml_type=o.umlx_getOrCreateClass("org.apache.struts.action.ActionMapping")
|
246
|
+
p=o.umlx_createAndAddParameter(o.rdf_uri+"_request","request")
|
247
|
+
p.uml_type=o.umlx_getOrCreateClass("javax.servlet.http.HttpServletRequest")
|
248
|
+
end
|
249
|
+
end
|
250
|
+
|
251
|
+
module Muml_Property
|
252
|
+
|
253
|
+
#real type of this form field (int,float, ...)
|
254
|
+
rdf_safe_attr_reader_many :struts_sourceProperty
|
255
|
+
|
256
|
+
|
257
|
+
def struts_ignoreInForm?(ignoreDbId=true)
|
258
|
+
return true if uml_type_one.db_isTransient? && !uml_type_one.kind_of?(Muml_Enumeration) && !uml_type_one.kind_of?(Muml_DataType)
|
259
|
+
return true if db_isTransient?
|
260
|
+
return true if uml_isStatic?
|
261
|
+
return true if java_ignoreMe?
|
262
|
+
return true if ignoreDbId && uml_name_one=="id"
|
263
|
+
return true if uml_name_one==Muml_Classifier::DB_OBJECT_VERSION_FIELD
|
264
|
+
#return true if java_getter_property_inv.empty?
|
265
|
+
#return true if java_setter_property_inv.empty?
|
266
|
+
# a is a property added for compatibility
|
267
|
+
return true unless umlx_stringMappingForEnum.empty?
|
268
|
+
return false
|
269
|
+
end
|
270
|
+
|
271
|
+
#field for paginating in lists
|
272
|
+
rdf_safe_attr_reader_many :struts_paginatorProperty
|
273
|
+
|
274
|
+
# adds a matching field in form
|
275
|
+
# adds a paginator field when cardinality >1
|
276
|
+
def struts_copyAsFormField!(form)
|
277
|
+
#log.debug { %{add form field #{self} to #{form}} }
|
278
|
+
a2=form.umlx_createAndAddProperty(rdf_uri+"_ActionFormField")
|
279
|
+
a2.uml_name=uml_name
|
280
|
+
a2.uml_upperValue=uml_upperValue
|
281
|
+
a2.uml_lowerValue=uml_lowerValue
|
282
|
+
a2.java_use_Arrays=RDF_TRUE
|
283
|
+
a2.struts_sourceProperty=self
|
284
|
+
|
285
|
+
if ! umlx_upperValueIsOne?
|
286
|
+
paginator=form.umlx_createAndAddProperty(rdf_uri+"_ActionFormField_page")
|
287
|
+
paginator.uml_name=uml_name.to_s+"_strutsPage"
|
288
|
+
paginator.uml_type=form.umlx_owner_one.umlx_dataType_integer
|
289
|
+
a2.struts_paginatorProperty=paginator
|
290
|
+
end
|
291
|
+
|
292
|
+
return a2
|
293
|
+
end
|
294
|
+
def struts_addActionFormAttribute!(form)
|
295
|
+
return if db_isTransient?
|
296
|
+
return if uml_isStatic?
|
297
|
+
|
298
|
+
|
299
|
+
if uml_type_one.kind_of?(Muml_Enumeration)
|
300
|
+
struts_addActionFormAttributeEnumeration!(form)
|
301
|
+
elsif uml_type_one.kind_of?(Muml_DataType)
|
302
|
+
a2=struts_copyAsFormField!(form)
|
303
|
+
#a2.uml_type=form.umlx_dataType_string
|
304
|
+
tpl=JavaMapping.instance.getTemplate(uml_type_one)
|
305
|
+
a2.uml_type=tpl.getFormType(form)
|
306
|
+
else
|
307
|
+
struts_addActionFormAttributeReference!(form)
|
308
|
+
|
309
|
+
end
|
310
|
+
#TODO: ajouter autres propri�t�s
|
311
|
+
end
|
312
|
+
|
313
|
+
|
314
|
+
def nil_lvb(obj)
|
315
|
+
return %{new #{STRUTS_LVB}("#{obj.java_qualifiedName}.#{NIL_LVB_RES_KEY}", "#{NIL_LVB_KEY}")}
|
316
|
+
end
|
317
|
+
|
318
|
+
STRUTS_ENUM_AS_STRING=true
|
319
|
+
|
320
|
+
#Adds to the form class, a suggester operation corresponding to this attribute.
|
321
|
+
def struts_addActionFormAttributeEnumeration!(form)
|
322
|
+
return if uml_isReadOnly?
|
323
|
+
a2=struts_copyAsFormField!(form)
|
324
|
+
#a2.uml_type=form.umlx_dataType_integer
|
325
|
+
a2.uml_type=form.umlx_dataType_string
|
326
|
+
#a2.uml_type=form.umlx_getOrCreateClass("java.lang.Integer")
|
327
|
+
|
328
|
+
sug=form.umlx_createAndAddOperation(form.rdf_uri+"_sug","get#{self.java_NameBean}Sug")
|
329
|
+
ret=sug.umlx_createAndAddReturnParameter(sug.rdf_uri+"_return")
|
330
|
+
ret.uml_type=form.umlx_getOrCreateClass("#{STRUTS_LVB}")
|
331
|
+
ret.uml_upperValue=form.umlx_literal(-1)
|
332
|
+
ret.uml_isOrdered=RDF_TRUE
|
333
|
+
|
334
|
+
sug.java_code=%{ /* TPL:STRUTS 001 */
|
335
|
+
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());
|
336
|
+
}
|
337
|
+
end
|
338
|
+
|
339
|
+
#suggester for a list of objects
|
340
|
+
def struts_addActionFormAttributeReference!(form)
|
341
|
+
a2=struts_copyAsFormField!(form)
|
342
|
+
a2.uml_type=form.umlx_dataType_string
|
343
|
+
|
344
|
+
if ! uml_isReadOnly?
|
345
|
+
sug=form.umlx_createAndAddOperation(form.rdf_uri+"_sug","get#{self.java_NameBean}Sug")
|
346
|
+
ret=sug.umlx_createAndAddReturnParameter(sug.rdf_uri+"_return")
|
347
|
+
ret.uml_type=form.umlx_getOrCreateClass("#{STRUTS_LVB}")
|
348
|
+
ret.uml_upperValue=form.umlx_literal(-1)
|
349
|
+
ret.uml_isOrdered=RDF_TRUE
|
350
|
+
|
351
|
+
sug.java_code= <<ENDJAVA
|
352
|
+
/* TPL:STRUTS 002 */
|
353
|
+
java.util.List<#{STRUTS_LVB}> ret=new java.util.ArrayList<#{STRUTS_LVB}>();
|
354
|
+
#{STRUTS_LVB} lvb=null;
|
355
|
+
//
|
356
|
+
// //#{self.umlx_manySide? ? "" : %{lvb=new #{STRUTS_LVB}("--","empty");
|
357
|
+
// //ret.add(lvb);} }
|
358
|
+
|
359
|
+
// 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());
|
360
|
+
|
361
|
+
for (#{self.uml_type_one.java_qualifiedName} item : getReference().get#{self.java_NameBean}Sug()) {
|
362
|
+
if(item!=null) {
|
363
|
+
lvb=new #{STRUTS_LVB}("obj:"+item.getId(), Long.toString(item.getId()));
|
364
|
+
} else {
|
365
|
+
lvb=#{nil_lvb(self.uml_type_one)};
|
366
|
+
}
|
367
|
+
ret.add(lvb);
|
368
|
+
}
|
369
|
+
return ret;
|
370
|
+
ENDJAVA
|
371
|
+
end
|
372
|
+
if(umlx_isComposite?)
|
373
|
+
m=java_createAndAddSuggester_one
|
374
|
+
r=nil
|
375
|
+
(m.uml_returnResult+m.uml_ownedParameter).each {|p| next unless p.uml_direction_one.isReturn? ; r=p.uml_type_one }
|
376
|
+
sugC=form.umlx_createAndAddOperation(form.rdf_uri+"_sugC","#{m.java_Name}")
|
377
|
+
ret=sugC.umlx_createAndAddReturnParameter("#{sugC.rdf_uri}_ret")
|
378
|
+
ret.uml_type=form.umlx_getOrCreateClass("#{STRUTS_LVB}")
|
379
|
+
ret.uml_upperValue=form.umlx_literal(-1)
|
380
|
+
ret.uml_isOrdered=RDF_TRUE
|
381
|
+
sugC.java_code=%{ /* TPL:STRUTS 001b */
|
382
|
+
return #{form.struts_getFormHelper.java_qualifiedName}.#{STRUTS_FORM_HELPER_ENUMTOLVB}(#{r.java_qualifiedName}.class,(#{r.java_qualifiedName})null,getReference().#{m.java_Name}(),true);
|
383
|
+
}
|
384
|
+
|
385
|
+
end
|
386
|
+
|
387
|
+
end
|
388
|
+
|
389
|
+
|
390
|
+
|
391
|
+
|
392
|
+
end
|
393
|
+
|
394
|
+
#module Muml_DataType
|
395
|
+
#contains regexp for string representation of corresponding type
|
396
|
+
#obsolete!
|
397
|
+
#STRUTS_PRIMITIVE_TYPE_REGEXP=Hash.new()
|
398
|
+
#end
|
399
|
+
|
400
|
+
|
401
|
+
module Muml_Element
|
402
|
+
STRUTS_FORM_HELPER="xmda.struts.FormHelper"
|
403
|
+
STRUTS_FORM_HELPER_ENUMTOLVB="enumToLvb"
|
404
|
+
|
405
|
+
STRUTS_DATE_FORMATER_INSTANCE=STRUTS_FORM_HELPER+'.DfCalendar'
|
406
|
+
STRUTS_TIMESTAMP_FORMATER_INSTANCE=STRUTS_FORM_HELPER+'.DfTimestamp'
|
407
|
+
def struts_getFormHelper
|
408
|
+
helper=umlx_getOrCreateClass(STRUTS_FORM_HELPER)
|
409
|
+
if(helper.java_customCode.empty?)
|
410
|
+
helper.apaCom_addLogger!
|
411
|
+
helper.umlx_external=RDF_FALSE
|
412
|
+
#helper.java_import_add(STRUTS_LVB)
|
413
|
+
helper.db_isTransient=RDF_TRUE
|
414
|
+
helper.struts_isForm=RDF_FALSE
|
415
|
+
helper.java_customCode= %{
|
416
|
+
|
417
|
+
public static final java.text.SimpleDateFormat DfTimestamp=new java.text.SimpleDateFormat("yyyy/MM/dd HH:mm:ss",java.util.Locale.ENGLISH);
|
418
|
+
public static final java.text.SimpleDateFormat DfCalendar=new java.text.SimpleDateFormat("yyyy/MM/dd",java.util.Locale.ENGLISH);
|
419
|
+
|
420
|
+
|
421
|
+
|
422
|
+
|
423
|
+
/**
|
424
|
+
* Transform a timestamp date to its GMT equivalent date.
|
425
|
+
*
|
426
|
+
* @param fromTimeZone
|
427
|
+
* @param timestampToTransform
|
428
|
+
* @return
|
429
|
+
*/
|
430
|
+
public static java.util.Date transformFromCurrentTZToGMT(final java.util.TimeZone fromTimeZone,final java.util.Date timestampToTransform) {
|
431
|
+
// the offset of this time zone from UTC.
|
432
|
+
int offset = fromTimeZone.getRawOffset();
|
433
|
+
|
434
|
+
java.util.GregorianCalendar gregCal = new java.util.GregorianCalendar();
|
435
|
+
gregCal.setTime(timestampToTransform);
|
436
|
+
gregCal.add(java.util.Calendar.HOUR_OF_DAY, (-offset / 3600000));
|
437
|
+
|
438
|
+
return gregCal.getTime();
|
439
|
+
}
|
440
|
+
|
441
|
+
public static java.util.Date transformFromGMTToCurrentTZ(final java.util.TimeZone currentTimeZone,final java.util.Date timestampToTransform) {
|
442
|
+
// the offset of this time zone from UTC.
|
443
|
+
int offset = currentTimeZone.getRawOffset();
|
444
|
+
|
445
|
+
java.util.GregorianCalendar gregorianCalendar = new java.util.GregorianCalendar();
|
446
|
+
gregorianCalendar.setTime(timestampToTransform);
|
447
|
+
gregorianCalendar.add(java.util.Calendar.HOUR_OF_DAY, (offset / 3600000));
|
448
|
+
return gregorianCalendar.getTime();
|
449
|
+
}
|
450
|
+
|
451
|
+
public static java.util.List<#{STRUTS_LVB}> #{STRUTS_FORM_HELPER_ENUMTOLVB}(final Class<?> enumType,final xmda.java.JavaEnumSig typeCheck, final java.util.List<?> enums) {
|
452
|
+
return #{STRUTS_FORM_HELPER_ENUMTOLVB}(enumType,typeCheck,enums,false);
|
453
|
+
}
|
454
|
+
// addNullItem is used for example to add a "add element" in creator selection.
|
455
|
+
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) {
|
456
|
+
try {
|
457
|
+
java.util.List<#{STRUTS_LVB}> ret=new java.util.ArrayList<#{STRUTS_LVB}>();
|
458
|
+
String prefix=enumType.getCanonicalName()+".";
|
459
|
+
#{STRUTS_LVB} lvb=null;
|
460
|
+
if(addNullItem) { ret.add(new #{STRUTS_LVB}(prefix+"obj_nil", "nil"));}
|
461
|
+
for ( Object itemObj : enums) {
|
462
|
+
xmda.java.JavaEnumSig item=(#{JAVA_ENUM_INTERFACE_QNAME})itemObj;
|
463
|
+
if(item!=null) {
|
464
|
+
//value is a localization resource key
|
465
|
+
lvb=new #{STRUTS_LVB}(prefix+item.name(),item.name());
|
466
|
+
} else {
|
467
|
+
lvb=new #{STRUTS_LVB}(prefix+"obj_nil", "nil");
|
468
|
+
}
|
469
|
+
ret.add(lvb);
|
470
|
+
}
|
471
|
+
return ret;
|
472
|
+
} catch (RuntimeException e) {
|
473
|
+
log.error(e);
|
474
|
+
throw(e);
|
475
|
+
}
|
476
|
+
}
|
477
|
+
}
|
478
|
+
end
|
479
|
+
return helper;
|
480
|
+
end
|
481
|
+
end
|
482
|
+
|
483
|
+
|
@@ -0,0 +1,37 @@
|
|
1
|
+
|
2
|
+
module Mrdf_Model
|
3
|
+
def struts_header_generate
|
4
|
+
write <<END
|
5
|
+
<%-- ******** ENTETE ****************** --%>
|
6
|
+
<div class="cadre">
|
7
|
+
<div class="AgLeft">
|
8
|
+
<a href="https://rubyforge.org/">
|
9
|
+
<img src="#{css_path_model}/#{css_color_class}/image/logoMDE.gif" border="0" alt="Home"/>
|
10
|
+
</a>
|
11
|
+
</div>
|
12
|
+
<div class="AgCenter">
|
13
|
+
<img src="#{css_path_model}/#{css_color_class}/image/bienvenue.gif" border="0" alt="will be delete"/>
|
14
|
+
</div>
|
15
|
+
<div class="AgRight">
|
16
|
+
<a href="javascript:window.print();">
|
17
|
+
<img src="#{css_path_model}/#{css_color_class}/image/btnPrint.gif" width="25" height="25" border="0" alt="Print"/>
|
18
|
+
</a>
|
19
|
+
<html:link page="/Welcome.do"title="Retour a l'accueil">
|
20
|
+
<img src="#{css_path_model}/#{css_color_class}/image/btnPosition.gif" width="25" height="25" border="0" alt="Position"/>
|
21
|
+
</html:link>
|
22
|
+
<a href="#">
|
23
|
+
<img src="#{css_path_model}/#{css_color_class}/image/btnHelp.gif" width="25" height="25" border="0" alt="Help"/>
|
24
|
+
</a>
|
25
|
+
</div>
|
26
|
+
</div>
|
27
|
+
<%-- ******** USER CONTEXT ************* --%>
|
28
|
+
END
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
module Muml_Class
|
33
|
+
def struts_header_generate
|
34
|
+
self.rdf_model.struts_header_generate;
|
35
|
+
return
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
|
3
|
+
module Muml_Class
|
4
|
+
def struts_header_link_generate
|
5
|
+
rdf_model.struts_header_link_generate(struts_jsp_edit_path.to_s)
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
module Mrdf_Resource #< ::Crdfs_Class
|
10
|
+
# def struts_header_link_generate
|
11
|
+
# rdf_model.struts_header_link_generate
|
12
|
+
# end
|
13
|
+
def css_path_model
|
14
|
+
rdf_model.css_path_model
|
15
|
+
end
|
16
|
+
def css_color_class
|
17
|
+
rdf_model.css_color_class
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
module Mrdf_Model
|
22
|
+
STRUTS_RES_DIRECTORY="res"
|
23
|
+
|
24
|
+
def css_path_model
|
25
|
+
return "#{STRUTS_RES_DIRECTORY}/"
|
26
|
+
end
|
27
|
+
|
28
|
+
def css_color_class
|
29
|
+
return "orange"
|
30
|
+
end
|
31
|
+
|
32
|
+
def struts_header_link_generate(sourcePage)
|
33
|
+
rel=Pathname.new(".").relative_path_from(Pathname.new(File.dirname(sourcePage)))
|
34
|
+
write <<END
|
35
|
+
<jsp:include page="#{rel}/res/orange/include/include_head.jsp" flush="false"/>
|
36
|
+
END
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|