ontomde-java 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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