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,124 @@
1
+
2
+ # return an option array field with default values
3
+ def getDefaultOptions(options={})
4
+ #options = {}
5
+ options[:multiTenant] = false
6
+ options[:testRelativeDir]="src/test/java"
7
+ options[:jspUseXmdaTaglib]=true
8
+ options[:backTrace] = false
9
+ options[:selfTestAndExit] = false
10
+ options[:verbose]=false
11
+ options[:targetDir]="."
12
+ options[:javaRelativeDir]="src/main/java/"
13
+ options[:flexRelativeDir]="webapp/src/main/flex/"
14
+ options[:webResourcesDir]=options[:javaRelativeDir]
15
+ options[:flex]=false
16
+ options[:mysql]=false
17
+ options[:nt]=[]
18
+ options[:load]=[]
19
+ options[:dryRun]=false
20
+ options[:pruneEmptyEnums]=false
21
+ options[:withAutoImplementProperty]=false
22
+ options[:withEnumAsString]=false
23
+ options[:withAutoImplementOperation]=false
24
+ options[:withMultipleInheritance]=true
25
+ options[:withGenerateImplicitComponent]=false
26
+ options[:generateComponent]=true
27
+ options[:strutsActionFormPackage]="struts"
28
+ options[:enumAssignableSubPackage]="assignable"
29
+ options[:withEnumAssignable]=true
30
+ options[:withGenerateMethodForm]=false
31
+ options[:makeCompositionBiNavigable]=false
32
+ options[:salvage]=false
33
+ options[:useUnzip]=false
34
+ options[:messageCheck]=true
35
+ options[:struts]=false
36
+ options[:crank]=false
37
+ options[:ejb2]=false
38
+ options[:security]=false
39
+ options[:script]=false
40
+ options[:webservice]=false
41
+ options[:javadoc]=true
42
+ options[:statemachine]=false
43
+ #options[:installRessources]=true
44
+ options[:target_ejbconf] = nil
45
+ options[:autoNewFileCreation]=true
46
+ options[:webContentRelativeDir]="./WebContent/"
47
+ options[:javaClassRelDir]=nil
48
+ options[:generateAntBuildFile]=false
49
+ options[:silentlyForceUnknownDatatypeToString]=false
50
+ options[:allowAutomaticCodeDeletion]=false
51
+ options[:generateCompositionDiagram] = false
52
+ options[:checkForAbstractAndInheritance]=false
53
+ options[:generateXMLStrutsForm]=false
54
+ options[:java_addJavaEnumInterface]=false
55
+ options[:silentlyTruncateTableName]=false
56
+ options[:benchmark]=false
57
+ options[:profile]=false
58
+ options[:logFileWrite]=false
59
+ options[:javaFilePathRegexp]=[]
60
+ options[:bpm_javaSubPackage]="bpm"
61
+ options[:struts_useSpring]=true
62
+ options[:db_useExtraTypeParameterForFindAll]=true
63
+ options[:bpm_addPingNode]=false
64
+ options[:jpaConfigDir] = nil
65
+
66
+ options[:rel_mapping] = "none"
67
+ options[:groovyExperimental]=false
68
+ options[:inspector] = false
69
+ options[:inspectorAfterLoad]=false
70
+ options[:generateDebugLauncher]=false
71
+ options[:contextualizeStaticProperties]=false
72
+ options[:dbTypeDiscriminator]=DB_TYPE_DISCRIMINATOR[0]
73
+ options[:dbDiscriminatorCacheRelFile]="dbDiscriminatorCache.rb"
74
+ options[:ddl_mode]="create"
75
+ options[:simulateNotImplementedMethods]=false
76
+ options[:db_useStereotypeMarker]=false
77
+ options[:versionSignature]=nil
78
+ #options[:db_stereotypeMarkerName]=false
79
+ options[:enableTestData] = false
80
+ options[:testDataRDF] = nil
81
+ options[:testDataRDFS] = nil
82
+ options[:updateTestDataProject] = false
83
+
84
+ options[:hideJavadocReverseTag]=false
85
+ options[:updateKB]=false
86
+ options[:kbTargetfile]="defaultKbTargetFile"
87
+
88
+ options[:excludeNonTestFiles]=false
89
+ options[:includeTestFiles]=true
90
+
91
+ options[:java_failIfNonUniqueName]=true
92
+ options[:generateXSD]=false
93
+
94
+
95
+ options[:rsm6WebDocURI]=""
96
+ options[:jpdl]=[]
97
+ options[:ntbpm]=[]
98
+ options[:bpm]=false
99
+ options[:skipNoReverseMarker]=false
100
+ options[:readGlobalReverseFile]=true
101
+
102
+ options[:derby]=false
103
+
104
+ options[:globalReverseFile]=nil
105
+ options[:hasGlobalReverse]=false
106
+ options[:dataModel]=nil
107
+
108
+ # options[:hib_dialect]="org.hibernate.dialect.MySQL5InnoDBDialect"
109
+ #
110
+ #
111
+ # options[:hib_dialect]="org.hibernate.dialect.MySQL5InnoDBDialect"
112
+ # options[:hib_connection_driver_class]="com.mysql.jdbc.Driver"
113
+ # options[:hib_connection_url]=nil
114
+ # options[:hib_connection_username]="testuser"
115
+ # options[:hib_connection_password]="testpwd"
116
+ #
117
+ # options[:hib_dialect]="org.hibernate.dialect.DerbyDialect"
118
+ # options[:hib_connection_driver_class]="org.apache.derby.jdbc.EmbeddedDriver"
119
+ # options[:hib_connection_url]="jdbc:derby:realty;create=true"
120
+ # options[:hib_connection_username]="testuser"
121
+ # options[:hib_connection_password]="testpwd"
122
+ #
123
+ return options
124
+ end
@@ -0,0 +1,555 @@
1
+
2
+
3
+ def populateOptionsFromCommandLine(startupFile,options)
4
+ #cf: http://www.ruby-doc.org/core/classes/OptionParser.html
5
+
6
+ OptionParser.new do |opts|
7
+ populateHeader(opts,options,startupFile)
8
+ populateSourceAndTarget(opts,options)
9
+ populateModelPreprocessors(opts,options)
10
+ populateModelEnhancement(opts,options)
11
+ populatePreJava5(opts,options)
12
+ populateTests(opts,options)
13
+ populateAccessControl(opts,options)
14
+ populateScripting(opts,options)
15
+ populateWebService(opts,options)
16
+ populateBpm(opts,options)
17
+ populateCrank(opts,options)
18
+ populateFlex(opts,options)
19
+ populatePersistence(opts,options)
20
+ populateStruts(opts,options)
21
+ populateEJB(opts,options)
22
+ populateMisc(opts,options)
23
+ populateDocumentation(opts,options)
24
+ populateDebug(opts,options)
25
+ populateKb(opts,options)
26
+ populateXSD(opts,options)
27
+ populateSASS(opts,options)
28
+
29
+ populateHelp(opts,options)
30
+ end.parse!
31
+
32
+ if (ARGV.length > 0) && options[:nt].nil?
33
+ log.warn("**********************")
34
+ log.warn("DEPRECATED SYNTAX USED")
35
+ log.warn("For help:")
36
+ log.warn("#{File.basename(startupFile)} --help")
37
+ log.warn("**********************")
38
+ options[:nt]=[]
39
+ ARGV.each { |f| options[:nt]<< f }
40
+ ARGV.clear
41
+ end
42
+
43
+ if ARGV.length > 0
44
+ raise Exception.new("An error occured while processing command line arguments. Unparseable paramater : '#{ARGV}'")
45
+ end
46
+
47
+ return options
48
+ end
49
+
50
+ def populateAddHeader(opts,msg)
51
+ h3="## "
52
+ opts.separator ""
53
+ opts.separator "#{h3} #{msg}"
54
+ opts.separator ""
55
+ end
56
+
57
+ def populateHeader(opts,options,startupFile)
58
+ h3="## "
59
+
60
+ opts.banner =<<ENDHELP
61
+ #{File.basename(startupFile)} is a command line utility to generate Java Code from a UML2 model stored in a UML2/RDF model file.
62
+
63
+ This command line is a front end to OntoMDE generator offering a set of pre-packaged, yet powerfull generation rules.
64
+
65
+ This Java code generator is full featured and covers many UML features (incremental generation, loading of additional MDA transformation rules, ...)
66
+
67
+ #{h3}Example: generate java code from one model file
68
+ $ #{File.basename(startupFile)} --nt myUmlModel.emx.nt
69
+
70
+ #{h3}Example: generate java code in a custom directory
71
+ $ #{File.basename(startupFile)} --nt myUmlModel.emx.nt --target ./src
72
+
73
+ #{h3}Usage:
74
+ #{File.basename(startupFile)} [options]
75
+ ENDHELP
76
+ end
77
+
78
+ def populateSourceAndTarget(opts,options)
79
+ populateAddHeader(opts,"Source and Target options :")
80
+
81
+ opts.on("--nt FILE1.nt,FILE2.nt, ...",Array,": Source UML2 model(s) (exported from a UML case tool)","default: --nt #{options[:nt]}") do |v|
82
+ options[:nt].concat(v)
83
+ end
84
+ opts.separator ""
85
+
86
+ opts.on("--ntList FILE1,FILE2,...",Array,": File containing a list of nt file to be loaded") do |v|
87
+ v.each { |fn| File.open(fn) { |f| f.each_line { |line|
88
+ next if line.empty? || line[0]=='#'[0]
89
+ options[:nt]<<( "#{File.dirname(fn)}/#{line.chomp}" )
90
+ }}}
91
+ end
92
+
93
+ opts.on("-l","--load FILE1.rb,File2.rb",Array,": Optionnal ruby extension or setup file (used as well new datatype declaration mappings, as for any generation customisation)","default: --load #{options[:load]}" ) do |v|
94
+ options[:load].concat(v)
95
+ end
96
+
97
+ opts.on("-l","--loadDir DIRECTORY1,..",Array,": Optionnal ruby extension or setup file","(used as well new datatype declaration mappings, as for any generation customisation)","default: --loadDir " ) do |v|
98
+ v.each { |d|
99
+ Dir.foreach(d) { |f|
100
+ next unless f =~ /\.rb$/
101
+ puts "f=#{f}"
102
+ options[:load]<<("#{d}/#{f}")
103
+ }
104
+ }
105
+ end
106
+
107
+ opts.on("--loadList FILE_list1,FILE_list2, ...",Array,": File containing a list of ruby file to be loaded","(same as --load on each item)") do |v|
108
+ v.each { |fn| File.open(fn) { |f| f.each_line { |line|
109
+ next if line.empty? || line[0]=='#'[0]
110
+ options[:load]<<( "#{File.dirname(fn)}/#{line.chomp}" )
111
+ }}}
112
+ end
113
+
114
+ opts.on("--javaRelativeDir DIRECTORY",": Relative destination directory for generated java files, properties, ...","relative to --targetDir","default: --javaRelativeDir #{options[:javaRelativeDir]}") do |v|
115
+ options[:javaRelativeDir] = v
116
+ end
117
+
118
+ opts.on("--webResourcesDir DIRECTORY",": Relative destination directory for generated Web Resources properties, ...","relative to --targetDir","default: --webResourcesDir #{options[:webResourcesDir]}") do |v|
119
+ options[:webResourcesDir] = v
120
+ end
121
+
122
+ opts.on("--javaFilePathRegexp REGEXP@DIRECTORY",": Relative destination directory for generated java files, properties, ...","relative to --targetDir","default: --javaFilePathRegexp #{options[:javaFilePathRegexp]}") do |v|
123
+ re=Regexp.new(v.split('@')[0])
124
+ p=v.split('@')[1]
125
+ options[:javaFilePathRegexp]<<([re,p])
126
+ end
127
+
128
+ opts.on("--targetDir DIRECTORY",": Target generation root directory","default: --targetDir #{options[:targetDir]}") do |v|
129
+ options[:targetDir] = v
130
+ end
131
+ end
132
+
133
+ def populateModelPreprocessors(opts,options)
134
+ populateAddHeader(opts,"Model pre-processors options :")
135
+
136
+ opts.on("--[no-]withMultipleInheritance",": Apply pattern to map UML model with multiple inheritance to Java compliant model."," (Class inheritance is mapped to interface implementation)",%{default: --#{options[:withMultipleInheritance]?"":"no-"}withMultipleInheritance}) do |v|
137
+ options[:withMultipleInheritance] = v
138
+ end
139
+
140
+ opts.on("--[no-]statemachine",": Apply state Machine genration on State Diagram."," State Machine",%{default: --#{options[:statemachine]?"":"no-"}statemachine}) do |v|
141
+ options[:statemachine] = v
142
+ end
143
+
144
+ opts.on("-p","--[no-]withAutoImplementProperty",": Generate automatically missing property in concrete class implementing an interface uml properties"," (feature introduced for model redondancy reduction)","default: --#{options[:withAutoImplementProperty]?'':'no-'}withAutoImplementProperty") do |v|
145
+ options[:withAutoImplementProperty] = v
146
+ end
147
+
148
+ opts.on("-o","--[no-]withAutoImplementOperation",": Generate automatically missing operations in concrete class implementing an interface"," (feature introduced for model redondancy reduction)","default: --#{options[:withAutoImplementOperation]?'':'no-'}withAutoImplementOperation") do |v|
149
+ options[:withAutoImplementOperation] = v
150
+ end
151
+
152
+ opts.on("--[no-]makeCompositionBiNavigable",": Force compositions to be bi-navigable","(Feature introduced for web persistence handling)",%{default: --#{options[:makeCompositionBiNavigable]?"":"no-"}makeCompositionBiNavigable}) do |v|
153
+ options[:makeCompositionBiNavigable] = v
154
+ end
155
+
156
+ opts.on("--[no-]contextualizeStaticProperties",": (alpha feature) Move static elements to composite owner.","This feature is used in order to have persistent static properties.",%{default: --#{options[:contextualizeStaticProperties]?"":"no-"}contextualizeStaticProperties}) do |v|
157
+ options[:contextualizeStaticProperties] = v
158
+ end
159
+ end
160
+ def populateModelEnhancement(opts,options)
161
+ populateAddHeader(opts,"Model enhancement options:")
162
+
163
+ opts.on("-a","--[no-]withEnumAssignable",": Generates for each class and interfaces an enum containing assignable class","(required for creators)","NOTE: also disable generation of createAndAdd methods",%{default: --#{options[:withEnumAssignable]?"":"no-"}withEnumAssignable}) do |v|
164
+ options[:withEnumAssignable] = v
165
+ end
166
+
167
+ opts.on("--enumAssignableSubPackage SUBDIR",": Directory where enumAssignable artefacts wil be generated",%{default: --enumAssignableSubPackage #{options[:enumAssignableSubPackage]} }) do |v|
168
+ options[:enumAssignableSubPackage] = v
169
+ end
170
+
171
+ opts.on("-f","--[no-]withGenerateMethodForm",": Apply a pattern to generate a form (as a class) for every method of the model.","(Feature introduced for web form handling)",%{default: --#{options[:withGenerateMethodForm]?"":"no-"}withGenerateMethodForm}) do |v|
172
+ options[:withGenerateMethodForm] = v
173
+ end
174
+ end
175
+
176
+ def populatePreJava5(opts,options)
177
+ populateAddHeader(opts,"Pre-Java 5 compatibility options:")
178
+
179
+ opts.on("-e","--[no-]withEnumAsString",": Generate additional string getter and setter","for properties with an enum type, so enums property can be manipulated as if it was a string"," (feature introduced"," for Flex interoperability)","default: --#{options[:withEnumAsString]?'':'no-'}withEnumAsString") do |v|
180
+ options[:withEnumAsString] = v
181
+ end
182
+ end
183
+
184
+ def populateSASS(opts,options)
185
+ populateAddHeader(opts,"Software As A Service (SaaS) options:")
186
+
187
+ opts.on("--[no-]multiTenant",": enable multi-tenant mode which allows shared hosting of an application for multiple tenants.","default: --#{options[:multiTenant]?'':'no-'}multiTenant") do |v|
188
+ options[:multiTenant] = v
189
+ end
190
+
191
+ end
192
+ def populateTests(opts,options)
193
+ populateAddHeader(opts,"Tests Data options:")
194
+
195
+ # opts.on("--updateKB",": Create or update protege 2000 knowledge base project (for creating tests data and junit tests bases on use cases.)","default: --#{options[:updateKB]?'':'no-'}updateKB") do |v|
196
+ # options[:updateKB] = v
197
+ # end
198
+
199
+ # opts.on("--kbTargetfile FILENAME _WITHOUT_EXTENSION",": Protege data test file to be generated or update.","This generates a protege/2000 project file to be used for editing tests data attached to test instances.","default: --kbTargetfile #{options[:kbTargetfile]}") do |v|
200
+ # options[:kbTargetfile] = v
201
+ # end
202
+
203
+
204
+ opts.on("--[no-]excludeNonTestFiles",": Do not generate files which are not test files","junit,data,...","default: --#{options[:excludeNonTestFiles]?'':'no-'}excludeNonTestFiles") do |v|
205
+ options[:excludeNonTestFiles] = v
206
+ end
207
+
208
+ opts.on("--[no-]includeTestFiles",": Include test files in generation","junit,data,...","default: --#{options[:includeTestFiles]?'':'no-'}includeTestFiles") do |v|
209
+ options[:includeTestFiles] = v
210
+ end
211
+
212
+ # opts.on("--[no-]enableTestData","enable data tests options",%{default: --#{options[:enableTestData]?"":"no-"}enableTestData}) do |v|
213
+ # options[:enableData] = v
214
+ # end
215
+
216
+
217
+ end
218
+ def populateAccessControl(opts,options)
219
+ populateAddHeader(opts,"Access control enhancement options:")
220
+
221
+ opts.on("--[no-]security",": Activate authentification and access control",%{default: --#{options[:security]?"":"no-"}security}) do |v|
222
+ options[:security] = v
223
+ end
224
+ end
225
+ def populateScripting(opts,options)
226
+ populateAddHeader(opts,"Runtime scripting options:")
227
+
228
+ opts.on("--[no-]script",": Activate script engine",%{default: --#{options[:script]?"":"no-"}script}) do |v|
229
+ options[:script] = v
230
+ end
231
+ end
232
+ def populateWebService(opts,options)
233
+ populateAddHeader(opts,"WebService options:")
234
+
235
+ opts.on("--[no-]webservice",": Activate Web Service",%{default: --#{options[:webservice]?"":"no-"}webservice}) do |v|
236
+ options[:webservice] = v
237
+ end
238
+ end
239
+ def populateBpm(opts,options)
240
+ populateAddHeader(opts,"BPM enhancement options:")
241
+
242
+ opts.on("--[no-]bpm",": Activate bpm processing",%{default: --#{options[:bpm]?"":"no-"}bpm}) do |v|
243
+ options[:bpm] = v
244
+ # if bpm is set, J2EE is mandatory (spring use is deactivated)
245
+ options[:struts_useSpring]=!v
246
+ end
247
+ # opts.on("--ntBPM FILE1.nt,FILE2.nt, ...",Array,"Source BPM model(s) (exported from a BPM modeling tool in nt format)","default: --ntBPM #{options[:ntBPM]}") do |v|
248
+ # options[:ntBPM].concat(v)
249
+ # end
250
+
251
+ opts.on("--jpdl FILE1.nt,FILE2.nt, ...",Array,": Source jpdl xml BPM model(s)","default: --jpdl #{options[:jpdl]}") do |v|
252
+ options[:bpm]=true
253
+ options[:jpdl].concat(v)
254
+ end
255
+
256
+ opts.on("--jpdlList FILE_list1,FILE_list2, ...",Array,": File containing a list of jpdl file to be loaded") do |v|
257
+ options[:bpm]=true
258
+ v.each { |fn| File.open(fn) { |f| f.each_line { |line|
259
+ next if line.empty? || line[0]=='#'[0]
260
+ options[:jpdl]<<( "#{File.dirname(fn)}/#{line.chomp}" )
261
+ }}}
262
+ end
263
+
264
+ opts.on("--bpm_javaSubPackage [SUBPACKAGE]",": Relative sub package where will be generated service class","(enums for transitions,...)",%{default: --bpm_javaSubPackage #{options[:bpm_javaSubPackage]}}) do |v|
265
+ options[:bpm_javaSubPackage] = v
266
+ end
267
+ end
268
+ def populateCrank(opts,options)
269
+ populateAddHeader(opts,"Crank options")
270
+
271
+ opts.on("--[no-]crank","Enable crank generation.","default: --#{options[:crank]?'':'no-'}crank") do |v|
272
+ options[:crank] = v
273
+ options[:java_addJavaEnumInterface]=true
274
+ end
275
+ end
276
+ def populateFlex(opts,options)
277
+ populateAddHeader(opts,"Flex integration options:")
278
+
279
+ opts.on("--[no-]generateXMLStrutsForm",": Add XML form serializer.","feature introduced for FLEX",%{default: --#{options[:generateXMLStrutsForm]?"":"no-"}generateXMLStrutsForm}) do |v|
280
+ options[:generateXMLStrutsForm] = v
281
+ end
282
+
283
+ opts.on("--[no-]flex",": Generate flex code",%{default: --#{options[:flex]?"":"no-"}flex}) do |v|
284
+ options[:flex] = v
285
+ # force generateXMLStrutsForm if flex is activated
286
+ options[:generateXMLStrutsForm] = v if v
287
+ end
288
+ end
289
+
290
+ def populatePersistence(opts,options)
291
+ populateAddHeader(opts,"Database persistence options:")
292
+
293
+ code_list = (OR_MAPPING_ALIASES.keys + OR_MAPPING).join(',')
294
+ opts.on("-m","--relational_mapping objr", OR_MAPPING, OR_MAPPING_ALIASES, ": Select object/relation library", " (#{code_list})","default: --relation_mapping #{options[:rel_mapping]}") do |encoding|
295
+ options[:rel_mapping] = encoding
296
+ end
297
+
298
+ opts.on("--[no-]db_useStereotypeMarker",": Are persistent capable classes marked with a stereotype",%{default: --#{options[:db_useStereotypeMarker]?"":"no-"}db_useStereotypeMarker}) do |v|
299
+ options[:db_useStereotypeMarker] = v
300
+ end
301
+
302
+ opts.on("--[no-]silentlyTruncateTableName",": Silently truncate generated table name to maximum sgbd allowed length.",%{default: --#{options[:silentlyTruncateTableName]?"":"no-"}silentlyTruncateTableName}) do |v|
303
+ options[:silentlyTruncateTableName] = v
304
+ end
305
+
306
+ opts.on("-d","--ddl_mode [MODE]",": SGBD schema creation mode","(create/update/...)",%{default: --ddl_mode #{options[:ddl_mode]}}) do |v|
307
+ options[:ddl_mode] = v
308
+ end
309
+
310
+ opts.on("-s","--[no-]simulateNotImplementedMethods",": Replace unimplemeted method with a simulation method.",%{default: --#{options[:simulateNotImplementedMethods]?"":"no-"}simulateNotImplementedMethods}) do |v|
311
+ options[:simulateNotImplementedMethods] = v
312
+ end
313
+
314
+ opts.on("-s","--[no-]java_addSuggester",": Add or remove the suggester method.",%{default: --#{options[:java_addSuggester]?"":"no-"}java_addSuggester}) do |v|
315
+ options[:java_addSuggester] = v
316
+ end
317
+
318
+
319
+ code_list2 = (DB_TYPE_DISCRIMINATOR_ALIASES.keys + DB_TYPE_DISCRIMINATOR).join(',')
320
+ opts.on("--dbTypeDiscriminator [objr]", DB_TYPE_DISCRIMINATOR, DB_TYPE_DISCRIMINATOR_ALIASES, ": Column type used to store an object type in database.", " (#{code_list2})","default: --dbTypeDiscriminator #{options[:dbTypeDiscriminator]}") do |encoding|
321
+ options[:dbTypeDiscriminator] = encoding
322
+ end
323
+
324
+ opts.on("--dbDiscriminatorCacheRelFile [RBFILE]",": File where db discriminator will be saved","to allow subsquent generation to use the same ids","NOTE: generated file will not be used, unless specified using --load option",%{default: --dbDiscriminatorCacheRelFile #{options[:dbDiscriminatorCacheRelFile]}}) do |v|
325
+ options[:dbDiscriminatorCacheRelFile] = v
326
+ end
327
+
328
+ opts.on("--[no-]mysql",": Optimize for mysql.",%{default: --#{options[:mysql]?"":"no-"}mysql}) do |v|
329
+ options[:mysql] = v
330
+ end
331
+ opts.on("--[no-]derby",": Optimize for derby.",%{default: --#{options[:derby]?"":"no-"}derby}) do |v|
332
+ options[:derby] = v
333
+ end
334
+ opts.on("--jpaConfigDir JPA_CONFIG_DIR",": Directory for the persistence.xml") do |v|
335
+ options[:jpaConfigDir] = v
336
+ end
337
+ end
338
+
339
+ def populateStruts(opts,options)
340
+ populateAddHeader(opts,"Struts Webapp options:")
341
+
342
+ opts.on("--[no-]struts",": Enable struts generation.","default: --#{options[:struts]?'':'no-'}struts") do |v|
343
+ options[:struts] = v
344
+ options[:java_addJavaEnumInterface]=true
345
+ end
346
+
347
+ opts.on("--[no-]java_addJavaEnumInterface",": Add Enum Interface.","default: --#{options[:java_addJavaEnumInterface]?'':'no-'}java_addJavaEnumInterface") do |v|
348
+ options[:java_addJavaEnumInterface] = v
349
+ end
350
+ opts.on("-u","--[no-]useUnzip",": Use unzip to install resources.","default: --#{options[:useUnzip]?'':'no-'}useUnzip") do |v|
351
+ options[:useUnzip] = v
352
+ end
353
+
354
+ opts.on("-c","--[no-]message-check",": Check message ressources consistency.","default: --#{options[:messageCheck]?'':'no-'}message-check") do |v|
355
+ options[:messageCheck] = v
356
+ end
357
+
358
+ opts.on("--webContentRelativeDir [DIRECTORY]",": Directory where webapp artefacts wil be generated (WEB-INF, META-INF, JSP, ...)",%{default: --webContentRelativeDir #{options[:webContentRelativeDir]}}) do |v|
359
+ options[:webContentRelativeDir] = v
360
+ end
361
+
362
+ opts.on("--strutsActionFormPackage [SUBPACKAGE]",": SubPackage where to generate struts related classes",%{default: --strutsActionFormPackage #{options[:strutsActionFormPackage]}}) do |v|
363
+ options[:strutsActionFormPackage] = v
364
+ end
365
+ end
366
+
367
+ def populateEJB(opts,options)
368
+ populateAddHeader(opts,"EJB options:")
369
+
370
+ opts.on("--[no-]ejb2",": Enable ejb2 experimental processing","default: --#{options[:ejb2]?'':'no-'}ejb2") do |v|
371
+ options[:ejb2] = v
372
+ end
373
+
374
+ opts.on("--[no-]generateComponent",": generate UML component as Java code","default: --#{options[:generateComponent]?'':'no-'}generateComponent") do |v|
375
+ options[:generateComponent] = v
376
+ end
377
+
378
+ opts.on("-t","--target_ejbconf DIRECTORY",": Destination directory for generated files","default: --target_ejbconf #{options[:target_ejbconf]}") do |v|
379
+ options[:target_ejbconf] = v
380
+ end
381
+ end
382
+
383
+ def populateMisc(opts,options)
384
+ populateAddHeader(opts,"Misc. options:")
385
+
386
+ opts.on("--[no-]generateAntBuildFile",": Generates a default ant build file",%{default: --#{options[:generateAntBuildFile]?"":"no-"}generateAntBuildFile}) do |v|
387
+ options[:generateAntBuildFile] = v
388
+ end
389
+ opts.on("--versionSignature version",": Adds a version signature to generated code, so old cold will not compile.","(an implemented interface is added to class and interfaces)","default: --versionSignature #{options[:versionSignature]}") do |v|
390
+ options[:versionSignature] = v
391
+ end
392
+
393
+ opts.on("--[no-]skipNoReverseMarker",": Only write markers when reverse is already set to yes. Usefull to get rid of unused reverse zone and get a better code browsing experience.","default: --#{options[:skipNoReverseMarker]?'':'no-'}skipNoReverseMarker") do |v|
394
+ options[:skipNoReverseMarker] = v
395
+ end
396
+
397
+ opts.on("--globalReverseFile FILE",": File containing all the tags of the reversed files") do |v|
398
+ options[:globalReverseFile] = v
399
+ end
400
+
401
+ opts.on("--[no-]readGlobalReverseFile",": Read the global reverse file for protected code.",%{default: --#{options[:readGlobalReverseFile]?"":"no-"}readGlobalReverseFile}) do |v|
402
+ options[:readGlobalReverseFile] = v
403
+ end
404
+
405
+ opts.on("--[no-]silentlyForceUnknownDatatypeToString",": Silently map an unknown datatype to String. This feature should only be used for testing.",%{default: --#{options[:silentlyForceUnknownDatatypeToString]?"":"no-"}silentlyForceUnknownDatatypeToString}) do |v|
406
+ options[:silentlyForceUnknownDatatypeToString] = v
407
+ end
408
+
409
+ opts.on("--[no-]java_failIfNonUniqueName",": Stop generation immediately when a name unicitiy constraint failure is detected.",%{default: --#{options[:java_failIfNonUniqueName]?"":"no-"}java_failIfNonUniqueName}) do |v|
410
+ options[:java_failIfNonUniqueName] = v
411
+ end
412
+ opts.on("--[no-]groovyExperimental",": Add experimental groovy features (alpha).",%{default: --#{options[:groovyExperimental]?"":"no-"}groovyExperimental}) do |v|
413
+ options[:groovyExperimental] = v
414
+ end
415
+
416
+ opts.on("--[no-]inspector",": start inspector web server at the end of code generation. Inspector is a web application for browsing in-memory scructure. This features is usefull for browsing meta-model structure and meta-model method calls.",%{default: --#{options[:inspector]?"":"no-"}inspector}) do |v|
417
+ options[:inspector] = v
418
+ end
419
+
420
+ opts.on("--[no-]inspectorAfterLoad",": start inspector web server just after loading models in memory. Inspector is a web application for browsing in-memory scructure. This features is usefull for browsing meta-model structure and meta-model method calls.",%{default: --#{options[:inspectorAfterLoad]?"":"no-"}inspectorAfterLoad}) do |v|
421
+ options[:inspectorAfterLoad] = v
422
+ end
423
+
424
+ opts.on("--[no-]generateDebugLauncher",": generates ruby script helper for launching ontomde-java from a ruby debugger. (netbeans, ruby, ...)",%{default: --#{options[:generateDebugLauncher]?"":"no-"}generateDebugLauncher}) do |v|
425
+ options[:generateDebugLauncher] = v
426
+ end
427
+ end
428
+
429
+ def populateDocumentation(opts,options)
430
+ populateAddHeader(opts,"Report generator:")
431
+
432
+ opts.on("--rsm6WebDocURI URL",": Base URL of RSM6 model html export","default: -- #{options[:rsm6WebDocURI]}") do |v|
433
+ options[:rsm6WebDocURI] = v
434
+ end
435
+
436
+ opts.on("--[no-]hideJavadocReverseTag",": Hide javadoc reverse tag.",%{default: --#{options[:hideJavadocReverseTag]?"":"no-"}reverseJavadoc}) do |v|
437
+ options[:hideJavadocReverseTag] = v
438
+ end
439
+
440
+
441
+ opts.on("--[no-]generateCompositionDiagram",": Generate a composition diagram (in graphviz dot file format)",%{default: --#{options[:generateCompositionDiagram]?"":"no-"}generateCompositionDiagram}) do |v|
442
+ options[:generateCompositionDiagram] = v
443
+ end
444
+
445
+ opts.on("--[no-]checkForAbstractAndInheritance",": Check model for abstract class with inheriting classes. Stop generation if an invalid class is encountered.",%{default: --#{options[:checkForAbstractAndInheritance]?"":"no-"}checkForAbstractAndInheritance}) do |v|
446
+ options[:checkForAbstractAndInheritance] = v
447
+ end
448
+ end
449
+ def populateDebug(opts,options)
450
+ populateAddHeader(opts,"Debug options:")
451
+
452
+ opts.on("--[no-]salvage",": Tries to handle highly defective model using best guess.","This feature is only intended for **quick demo** purposes.","Do not use for serious work!",%{default: --#{options[:salvage]?"":"no-"}salvage}) do |v|
453
+ options[:salvage] = v
454
+ end
455
+
456
+ populateAddHeader(opts,"File creation options:")
457
+
458
+ opts.on("--[no-]autoNewFileCreation",": Allows generator to create new file on its own","This feature should be deactivated for project under version control so no new file can be added to a project without a developper approval.","This feature should also be deactivated to help keep track of file rename and allow project refactoring",%{default: --#{options[:autoNewFileCreation]?"":"no-"}autoNewFileCreation}) do |v|
459
+ options[:autoNewFileCreation] = v
460
+ end
461
+
462
+ opts.on("--[no-]allowAutomaticCodeDeletion",": Automatically ignore deleted protected code.","If disabled, generator will halt when reversed code is not reused in file newly created",%{default: --#{options[:allowAutomaticCodeDeletion]?"":"no-"}allowAutomaticCodeDeletion}) do |v|
463
+ options[:allowAutomaticCodeDeletion] = v
464
+ end
465
+
466
+ opts.on("-s","--[no-]dry-run",": Do a dry run without executing actions..","No file will be changed neither created on disk",%{default: --#{options[:dryRun]?"":"no-"}dry-run}) do |v|
467
+ options[:dryRun] = v
468
+ end
469
+
470
+ opts.on("-v", "--[no-]verbose", ":Run in verbose mode",%{default: --#{options[:verbose]?"":"no-"}verbose}) do |v|
471
+ options[:verbose] = v
472
+ end
473
+
474
+ opts.on("-v", "--[no-]benchmark", ": Run in benchmark mode","Feature usefull for optimizing generation time",%{default: --#{options[:benchmark]?"":"no-"}benchmark}) do |v|
475
+ options[:benchmark] = v
476
+ end
477
+
478
+ opts.on("-v", "--[no-]profile", ": Run in profile mode","Feature usefull for optimizing generation time",%{default: --#{options[:profile]?"":"no-"}profile}) do |v|
479
+ options[:profile] = v
480
+ require 'unprof' if options[:profile]
481
+ end
482
+
483
+ opts.on("-v", "--[no-]logFileWrite", ": Log file write access to screen",%{default: --#{options[:logFileWrite]?"":"no-"}logFileWrite}) do |v|
484
+ options[:logFileWrite] = v
485
+ end
486
+
487
+ opts.on("--[no-]selfTestAndExit", ": Self test and exit.","(loads every dependencies)","(Note: used by binary generator)",%{default: --#{options[:selfTestAndExit]?"":"no-"}selfTestAndExit}) do |v|
488
+ options[:selfTestAndExit] = v
489
+ end
490
+
491
+ opts.on("--[no-]backTrace", ": Display back trace on error.",%{default: --#{options[:backTrace]?"":"no-"}backTrace}) do |v|
492
+ options[:backTrace] = v
493
+ end
494
+ end
495
+
496
+ def populateKb(opts,options)
497
+ populateAddHeader(opts,"Knowledge base export options:")
498
+
499
+ opts.on("--[no-]updateTestDataProject", ": update data test file specified by testDataRDFS",%{default: --#{options[:updateTestDataProject]?"":"no-"}updateTestDataProject}) do |v|
500
+ options[:updateTestDataProject] = v
501
+ end
502
+
503
+ opts.on("--testDataProject DATAPROJECT",": load Data from Protege/2000 RDF/RDFS DATAPROJECT (name of project without extension .pprj)") do |v|
504
+ options[:enableTestData] = true
505
+ options[:updateTestDataProject] =true
506
+ options[:testDataProject] = v
507
+ options[:testDataRDF] = v+".rdf"
508
+ options[:testDataRDFS] = v+".rdfs"
509
+ end
510
+ end
511
+
512
+ #Helper for creating a binary option
513
+ def binaryOption(opts,options,symb,help)
514
+ opts.on("--[no-]#{symb}", help ,%{default: --#{options[symb]?"":"no-"}#{symb}}) do |v|
515
+ options[symb] = v
516
+ end
517
+ end
518
+
519
+ def populateXSD(opts,options)
520
+ populateAddHeader(opts,"XML schema export options:")
521
+ binaryOption(opts,options,:generateXSD,": generate XSD schema files")
522
+ end
523
+
524
+ def populateHelp(opts,options)
525
+ # No argument, shows at tail. This will print an options summary.
526
+ # Try it and see!
527
+ opts.on_tail("-h", "--help", ": Show this message") do
528
+ puts opts
529
+ exit 1
530
+ end
531
+
532
+ opts.on_tail("--help-rdoc", ": Show help in rdoc format") do
533
+ #x=opts.to_s.
534
+ #Set very wide columns to disable column wrapping
535
+ opts.summary_indent="~"*300
536
+ opts.summary_width=999
537
+ puts opts.to_s.
538
+ gsub(/^##/,'==').
539
+ gsub(/(default:)/,"\n\n<i>\\1</i>").
540
+ gsub(/^[^a-zA-Z\n]*(-[^:\n]*:)/,"===\\1\n\n").
541
+ gsub(/ */," ").
542
+ gsub(/ */," ").
543
+ gsub(/~~*/,"").
544
+ to_s
545
+
546
+
547
+ #gsub(/^[ \t]*-([a-zA-Z])[ \t]*\n/,'-\1 ,').
548
+ #gsub(/^[ \t]*/,'').
549
+
550
+ #gsub(/(^[^:\n]*--*[^\t\n ]*)/,"<b>\\1</b>").
551
+
552
+
553
+ exit 1
554
+ end
555
+ end