ontomde-core 1.0.6 → 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.
- data/History.txt +3 -0
- data/Manifest.txt +95 -21
- data/README.txt +19 -1
- data/Rakefile +1 -1
- data/bin/ontomde-inspector +6 -0
- data/lib/ontomde-core/clone.rb +1 -1
- data/lib/ontomde-core/completion.rb +47 -0
- data/lib/ontomde-core/context.rb +32 -11
- data/lib/ontomde-core/converter-ea/XMI2RDFS.xslt +805 -0
- data/lib/ontomde-core/converter-ea/msxsl.exe +0 -0
- data/lib/ontomde-core/custom_method_missing.rb +24 -1
- data/lib/ontomde-core/fileLoader.rb +71 -14
- data/lib/ontomde-core/fileTypes.rb +7 -0
- data/lib/ontomde-core/helper.rb +141 -15
- data/lib/ontomde-core/inspector/loader.rb +69 -0
- data/lib/ontomde-core/inspector/rails/README +203 -0
- data/lib/ontomde-core/inspector/rails/Rakefile +10 -0
- data/lib/ontomde-core/inspector/rails/app/controllers/application.rb +10 -0
- data/lib/ontomde-core/inspector/rails/app/controllers/mtk_controller.rb +349 -0
- data/lib/ontomde-core/inspector/rails/app/helpers/application_helper.rb +3 -0
- data/lib/ontomde-core/inspector/rails/app/helpers/mtk_helper.rb +20 -0
- data/lib/ontomde-core/inspector/rails/app/views/layouts/mtk.rhtml +161 -0
- data/lib/ontomde-core/inspector/rails/app/views/mtk/clear.rhtml +5 -0
- data/lib/ontomde-core/inspector/rails/app/views/mtk/index.rhtml +1 -0
- data/lib/ontomde-core/inspector/rails/app/views/mtk/last_generated.rhtml +7 -0
- data/lib/ontomde-core/inspector/rails/app/views/mtk/model.html.erb +6 -0
- data/lib/ontomde-core/inspector/rails/app/views/mtk/not_found.rhtml +2 -0
- data/lib/ontomde-core/inspector/rails/app/views/mtk/search_form.rhtml +30 -0
- data/lib/ontomde-core/inspector/rails/app/views/mtk/search_result.rhtml +8 -0
- data/lib/ontomde-core/inspector/rails/app/views/mtk/setup_form.rhtml +42 -0
- data/lib/ontomde-core/inspector/rails/app/views/mtk/show.rhtml +172 -0
- data/lib/ontomde-core/inspector/rails/app/views/mtk/show_many.rhtml +25 -0
- data/lib/ontomde-core/inspector/rails/config/boot.rb +109 -0
- data/lib/ontomde-core/inspector/rails/config/database.yml +19 -0
- data/lib/ontomde-core/inspector/rails/config/environment.rb +60 -0
- data/lib/ontomde-core/inspector/rails/config/environments/development.rb +18 -0
- data/lib/ontomde-core/inspector/rails/config/environments/production.rb +19 -0
- data/lib/ontomde-core/inspector/rails/config/environments/test.rb +22 -0
- data/lib/ontomde-core/inspector/rails/config/initializers/inflections.rb +10 -0
- data/lib/ontomde-core/inspector/rails/config/initializers/mime_types.rb +5 -0
- data/lib/ontomde-core/inspector/rails/config/routes.rb +35 -0
- data/lib/ontomde-core/inspector/rails/doc/README_FOR_APP +2 -0
- data/lib/ontomde-core/inspector/rails/log/development.log +0 -0
- data/lib/ontomde-core/inspector/rails/log/production.log +0 -0
- data/lib/ontomde-core/inspector/rails/log/server.log +0 -0
- data/lib/ontomde-core/inspector/rails/log/test.log +0 -0
- data/lib/ontomde-core/inspector/rails/public/.htaccess +40 -0
- data/lib/ontomde-core/inspector/rails/public/404.html +30 -0
- data/lib/ontomde-core/inspector/rails/public/422.html +30 -0
- data/lib/ontomde-core/inspector/rails/public/500.html +30 -0
- data/lib/ontomde-core/inspector/rails/public/dispatch.cgi +10 -0
- data/lib/ontomde-core/inspector/rails/public/dispatch.fcgi +24 -0
- data/lib/ontomde-core/inspector/rails/public/dispatch.rb +10 -0
- data/lib/ontomde-core/inspector/rails/public/favicon.ico +0 -0
- data/lib/ontomde-core/inspector/rails/public/images/logoMDE.gif +0 -0
- data/lib/ontomde-core/inspector/rails/public/images/rails.png +0 -0
- data/lib/ontomde-core/inspector/rails/public/javascripts/application.js +2 -0
- data/lib/ontomde-core/inspector/rails/public/javascripts/controls.js +963 -0
- data/lib/ontomde-core/inspector/rails/public/javascripts/dragdrop.js +972 -0
- data/lib/ontomde-core/inspector/rails/public/javascripts/effects.js +1120 -0
- data/lib/ontomde-core/inspector/rails/public/javascripts/prototype.js +4225 -0
- data/lib/ontomde-core/inspector/rails/public/robots.txt +5 -0
- data/lib/ontomde-core/inspector/rails/script/about +3 -0
- data/lib/ontomde-core/inspector/rails/script/console +3 -0
- data/lib/ontomde-core/inspector/rails/script/destroy +3 -0
- data/lib/ontomde-core/inspector/rails/script/generate +3 -0
- data/lib/ontomde-core/inspector/rails/script/performance/benchmarker +3 -0
- data/lib/ontomde-core/inspector/rails/script/performance/profiler +3 -0
- data/lib/ontomde-core/inspector/rails/script/performance/request +3 -0
- data/lib/ontomde-core/inspector/rails/script/plugin +3 -0
- data/lib/ontomde-core/inspector/rails/script/process/inspector +3 -0
- data/lib/ontomde-core/inspector/rails/script/process/reaper +3 -0
- data/lib/ontomde-core/inspector/rails/script/process/spawner +3 -0
- data/lib/ontomde-core/inspector/rails/script/runner +3 -0
- data/lib/ontomde-core/inspector/rails/script/server +3 -0
- data/lib/ontomde-core/inspector/rails/test/test_helper.rb +38 -0
- data/lib/ontomde-core/inspector/rails/vendor/plugins/auto_complete/README +23 -0
- data/lib/ontomde-core/inspector/rails/vendor/plugins/auto_complete/Rakefile +22 -0
- data/lib/ontomde-core/inspector/rails/vendor/plugins/auto_complete/init.rb +2 -0
- data/lib/ontomde-core/inspector/rails/vendor/plugins/auto_complete/lib/auto_complete.rb +47 -0
- data/lib/ontomde-core/inspector/rails/vendor/plugins/auto_complete/lib/auto_complete_macros_helper.rb +143 -0
- data/lib/ontomde-core/inspector/rails/vendor/plugins/auto_complete/test/auto_complete_test.rb +67 -0
- data/lib/ontomde-core/inspector/setup_rails.sh +39 -0
- data/lib/ontomde-core/inspector.rb +21 -0
- data/lib/ontomde-core/meta.rb +6 -5
- data/lib/ontomde-core/resource.rb +6 -6
- data/lib/ontomde-core/resourceSet.rb +7 -6
- data/lib/ontomde-core/triplet.rb +2 -0
- data/lib/ontomde-core/version.rb +1 -1
- data/test/protege/test_demo.rb +1 -1
- data/test/test_context.rb +1 -1
- data/test/test_protected.rb +11 -11
- data/test/test_uri.rb +1 -1
- data/test/unit_test_crash.rb +1 -1
- metadata +105 -29
|
Binary file
|
|
@@ -6,9 +6,22 @@
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
def method_missing(methId,args=nil)
|
|
9
|
+
objinfo="-"
|
|
10
|
+
if self.kind_of?(Mrdf_Resource)
|
|
11
|
+
objinfo= <<END
|
|
12
|
+
**** For ressource of type #{self.class.name}
|
|
13
|
+
**** and uri=#{rdf_uri}
|
|
14
|
+
****
|
|
15
|
+
**** This model element is related to these other model elements:
|
|
16
|
+
#{mtk_related_message}
|
|
17
|
+
END
|
|
18
|
+
end
|
|
19
|
+
|
|
9
20
|
msg=respond_to?(:rdf_uri) ? "#{rdf_uri}" : "nil"
|
|
10
|
-
log.error { "method #{methId} not available for object of class #{self.class.name}, (uri=#{msg})(to_s=#{self})" }
|
|
21
|
+
log.error { "method #{methId} not available for object of class #{self.class.name}, (uri=#{msg})(to_s=#{self}) #{objinfo}" }
|
|
11
22
|
|
|
23
|
+
|
|
24
|
+
|
|
12
25
|
if msg=="ukb_null"
|
|
13
26
|
log.error { <<END
|
|
14
27
|
********** INVALID MODEL DETECTED **********
|
|
@@ -40,6 +53,8 @@ END
|
|
|
40
53
|
"Available methods are: #{msg}"
|
|
41
54
|
}
|
|
42
55
|
|
|
56
|
+
|
|
57
|
+
|
|
43
58
|
#self.included_modules.each { |m|
|
|
44
59
|
# #puts "include #{m}"
|
|
45
60
|
# }
|
|
@@ -50,3 +65,11 @@ END
|
|
|
50
65
|
throw NoMethodError.new("method missing '#{methId}' for object '#{self.class.name}'",methId,args)
|
|
51
66
|
#exit
|
|
52
67
|
end
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
class Crdf_Resource
|
|
71
|
+
def method_missing(methId,args=nil)
|
|
72
|
+
|
|
73
|
+
super
|
|
74
|
+
end
|
|
75
|
+
end
|
|
@@ -59,12 +59,12 @@ class NTripleFile < NTriple
|
|
|
59
59
|
|
|
60
60
|
|
|
61
61
|
def isOntoMDXHeader?
|
|
62
|
-
return @line.to_s=="#!
|
|
62
|
+
return @line.to_s=="#!ontomde\n"
|
|
63
63
|
end
|
|
64
64
|
end
|
|
65
65
|
|
|
66
|
-
module
|
|
67
|
-
def loadMetaModelFromFile(fileName,ignoreHeader=
|
|
66
|
+
module Mrdf_Repository
|
|
67
|
+
def loadMetaModelFromFile(fileName,ignoreHeader=true)
|
|
68
68
|
@updateCount=@updateCount+1
|
|
69
69
|
raise Exception.new("nil fileName passed to loadMetaModelFromFile") if fileName.nil?
|
|
70
70
|
m=fileName+".rb"
|
|
@@ -82,11 +82,23 @@ module Mrdf_Model
|
|
|
82
82
|
end
|
|
83
83
|
end
|
|
84
84
|
|
|
85
|
-
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
# loads a model from srcFileName
|
|
88
|
+
#
|
|
89
|
+
# Source model is in RDF/NT or RDF/XML format.
|
|
90
|
+
#
|
|
91
|
+
# When ignoreHeader=false, presence of a special ontomde header is checked.
|
|
92
|
+
#Example:
|
|
93
|
+
# loadModelFromFile("MyUmlModelFile.nt")
|
|
94
|
+
# loadModelFromFile("MyDslModelFile.nt")
|
|
95
|
+
# loadModelFromFile("MyDslModelFile.xml")
|
|
96
|
+
def loadModelFromFile (srcFileName,ignoreHeader=true)
|
|
97
|
+
#Converts from RDF/XML to RDF/NT when needed.
|
|
86
98
|
fileName=translateToNt(srcFileName)
|
|
99
|
+
|
|
87
100
|
@updateCount=@updateCount+1
|
|
88
|
-
|
|
89
|
-
[false,true].each { |modeData|
|
|
101
|
+
[MODE_parseModelStream_CREATE_INSTANCES,MODE_parseModelStream_POPULATE_FIELDS].each { |modeData|
|
|
90
102
|
begin
|
|
91
103
|
File.open(fileName,"r") { |aFile|
|
|
92
104
|
parseModelStream(aFile,modeData,ignoreHeader)
|
|
@@ -97,6 +109,16 @@ module Mrdf_Model
|
|
|
97
109
|
}
|
|
98
110
|
end
|
|
99
111
|
|
|
112
|
+
|
|
113
|
+
#in this mode, parseModelStream only creates object instances
|
|
114
|
+
#without populating fields
|
|
115
|
+
MODE_parseModelStream_CREATE_INSTANCES=false
|
|
116
|
+
|
|
117
|
+
#In this mode, parseModelSTream does not create new objects instances
|
|
118
|
+
#and only populate model fields.
|
|
119
|
+
MODE_parseModelStream_POPULATE_FIELDS=!MODE_parseModelStream_CREATE_INSTANCES
|
|
120
|
+
|
|
121
|
+
#Populate model objects and fields from RDF stream.
|
|
100
122
|
def parseModelStream(stream,modeData,ignoreHeader=false)
|
|
101
123
|
aFile=stream
|
|
102
124
|
i=0
|
|
@@ -110,11 +132,11 @@ module Mrdf_Model
|
|
|
110
132
|
ignoreHeader=true
|
|
111
133
|
next if nt.isOntoMDXHeader?
|
|
112
134
|
p="\nERROR *** "
|
|
113
|
-
raise Exception.new("#{p}#{p}
|
|
135
|
+
raise Exception.new("#{p}#{p}ontomde was given a model file without#{p}a valid ontomde plugin file header.#{p}If you have used a model file created by a modeler plugin,#{p}upgrade your plugin.#{p}Il you have used a plain RDF or RDFS file,#{p}specify ignoreHeader=true when loading model with loadModel.#{p}\n")
|
|
114
136
|
end
|
|
115
137
|
|
|
116
138
|
next if nt.isComment?
|
|
117
|
-
|
|
139
|
+
parseNT(nt,modeData)
|
|
118
140
|
rescue WarningRubyTypeUndefined => z
|
|
119
141
|
log.error "WARNING ["+(modeData ? "data":"res")+" :nt.line "+i.to_s+", "+z.to_s+", Will create a default type. Possible discrepancies if defined later on. In case of problem, Consider bootstraping]:"+nt.line
|
|
120
142
|
#log.debug "z.res=#{z.res}"
|
|
@@ -137,7 +159,7 @@ module Mrdf_Model
|
|
|
137
159
|
end
|
|
138
160
|
|
|
139
161
|
PLATFORM_IS_JAVA=!(RUBY_PLATFORM.index("java").nil?)
|
|
140
|
-
OS_IS_WINDOWS=!(ENV['OS'].index("Windows").nil?)
|
|
162
|
+
OS_IS_WINDOWS=!(ENV['OS'].nil? ? true : ENV['OS'].index("Windows").nil?)
|
|
141
163
|
|
|
142
164
|
puts(%{O/S detected: #{OS_IS_WINDOWS ? "WINDOWS" : "*nix"}})
|
|
143
165
|
puts(%{Ruby platform detected: #{PLATFORM_IS_JAVA ? "Java" : "C"}})
|
|
@@ -150,23 +172,58 @@ module Mrdf_Model
|
|
|
150
172
|
cmd="rapper "+param
|
|
151
173
|
elsif PLATFORM_IS_JAVA
|
|
152
174
|
#We are under windows but under jruby
|
|
153
|
-
cmd
|
|
175
|
+
cmd=::Mrdf_Model::WIN_PATH_RAPPER+" "+param
|
|
154
176
|
else
|
|
155
177
|
#We are under windows but under Matz Ruby Implementation (MRI)
|
|
156
|
-
cmd='"'
|
|
178
|
+
cmd='"'+::Mrdf_Model::WIN_PATH_RAPPER+'"'+param
|
|
157
179
|
end
|
|
158
180
|
return if system(cmd)
|
|
159
|
-
|
|
181
|
+
msg=<<END
|
|
182
|
+
***
|
|
183
|
+
*** Error running rapper #{"external " if OS_IS_WINDOWS }binary executable.
|
|
184
|
+
*** #{cmd}
|
|
185
|
+
*** #{"UBUNTU user should install raptor-utils package." if !OS_IS_WINDOWS}
|
|
186
|
+
***
|
|
187
|
+
END
|
|
188
|
+
raise Exception.new(msg)
|
|
189
|
+
end
|
|
160
190
|
|
|
191
|
+
|
|
192
|
+
def translateEAXMI_to_NT(eaxmifile)
|
|
193
|
+
translatedfile="#{eaxmifile}_tmp.nt"
|
|
194
|
+
param="#{eaxmifile} -o #{translatedfile} #{File.dirname(__FILE__)}\\converter-ea\\XMI2RDFS.xslt"
|
|
195
|
+
if ! OS_IS_WINDOWS
|
|
196
|
+
#we are not under windows
|
|
197
|
+
#built in rapper cannot be used (it is for windows)
|
|
198
|
+
#we use rapper available in path.
|
|
199
|
+
raise Exception.new("TODO: use xslt under linux")
|
|
200
|
+
elsif PLATFORM_IS_JAVA
|
|
201
|
+
#We are under windows but under jruby
|
|
202
|
+
cmd="#{File.dirname(__FILE__)}\\converter-ea\\msxsl.exe "+param.tr('/','\\\\')
|
|
203
|
+
else
|
|
204
|
+
#We are under windows but under Matz Ruby Implementation (MRI)
|
|
205
|
+
cmd="#{File.dirname(__FILE__)}\\converter-ea\\msxsl.exe "+param.tr('/','\\\\')
|
|
206
|
+
end
|
|
207
|
+
return translateXMLRDF_to_NT(translatedfile) if system(cmd)
|
|
208
|
+
raise Exception.new("\n***\n***Error running command\n***\n***#{cmd}\n***\n")
|
|
161
209
|
end
|
|
210
|
+
|
|
211
|
+
#returns a filename containing a ntriple version of file in srcfilename.
|
|
162
212
|
def translateToNt(srcFileName)
|
|
163
|
-
return srcFileName if
|
|
213
|
+
return translateXMLRDF_to_NT(srcFileName) if (srcFileName=~/\.rdfs*$/ )
|
|
214
|
+
return translateEAXMI_to_NT(srcFileName) if (srcFileName=~/\.ea\.xmi*$/ )
|
|
215
|
+
|
|
216
|
+
#no conversion necessary
|
|
217
|
+
return srcFileName
|
|
218
|
+
end
|
|
164
219
|
|
|
220
|
+
def translateXMLRDF_to_NT(srcFileName)
|
|
165
221
|
fileName="#{srcFileName}.cache.deleteMe.nt"
|
|
222
|
+
mtk_addTempFileToDelete(fileName)
|
|
166
223
|
if( context[:useTranslateToNtCache,false] && File.exists?(fileName) && File.mtime(fileName) > File.mtime(srcFileName) )
|
|
167
224
|
#log.debug "INFO:Using cache in #{fileName}"
|
|
168
225
|
else
|
|
169
|
-
raise "
|
|
226
|
+
raise "white space in rdf file names not supported under windows" if fileName.include?(" ")
|
|
170
227
|
if !OS_IS_WINDOWS
|
|
171
228
|
param=' -q -o ntriples -i rdfxml '+srcFileName+' > '+fileName
|
|
172
229
|
else
|
|
@@ -72,6 +72,7 @@ class FileTypeJava < FileType
|
|
|
72
72
|
end
|
|
73
73
|
FileTypeJava.instance # register
|
|
74
74
|
|
|
75
|
+
|
|
75
76
|
class FileTypeXML < FileType
|
|
76
77
|
# a character that can not exist in a URI
|
|
77
78
|
URI_ESCAPE_CHAR_ONE='°'
|
|
@@ -98,6 +99,12 @@ class FileTypeXML < FileType
|
|
|
98
99
|
end
|
|
99
100
|
FileTypeXML.instance # register
|
|
100
101
|
|
|
102
|
+
class FileTypeXSD < FileTypeXML
|
|
103
|
+
def initialize(ext=".xsd")
|
|
104
|
+
super
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
FileTypeXSD.instance # register
|
|
101
108
|
|
|
102
109
|
class FileTypeJavaProperties < FileType
|
|
103
110
|
def initialize(ext=".properties")
|
data/lib/ontomde-core/helper.rb
CHANGED
|
@@ -27,7 +27,7 @@ class LoadModelLazyWriter
|
|
|
27
27
|
|
|
28
28
|
def [](key)
|
|
29
29
|
if @model.nil?
|
|
30
|
-
@model=
|
|
30
|
+
@model=Crdf_Repository.new
|
|
31
31
|
@model.mtk_retrieveProtected(@fileName,fileType)
|
|
32
32
|
end
|
|
33
33
|
if @usedResources.nil?
|
|
@@ -60,14 +60,14 @@ module Mrdf_Resource
|
|
|
60
60
|
include Mmtk_helper
|
|
61
61
|
end
|
|
62
62
|
|
|
63
|
-
class
|
|
63
|
+
class Crdf_Repository
|
|
64
64
|
include Mmtk_helper
|
|
65
65
|
end
|
|
66
66
|
class Crdf_Resource
|
|
67
67
|
include Mmtk_helper
|
|
68
68
|
end
|
|
69
69
|
|
|
70
|
-
module
|
|
70
|
+
module Mrdf_Repository
|
|
71
71
|
include Mmtk_helper
|
|
72
72
|
end
|
|
73
73
|
module Mmtk_helper
|
|
@@ -120,6 +120,15 @@ module Mmtk_helper
|
|
|
120
120
|
# }
|
|
121
121
|
MTK_WRITE_SESSION_FILE_NAMES=Set.new
|
|
122
122
|
def mtk_writeSession(fileName,fileType=nil)
|
|
123
|
+
|
|
124
|
+
#if a file exist named fileName.mda, then write to this
|
|
125
|
+
#file instead of fileName
|
|
126
|
+
divert=fileName+".mda"
|
|
127
|
+
if (File.exists?(divert))
|
|
128
|
+
fileType=FileType.getFileType(fileName) if fileType.nil?
|
|
129
|
+
fileName=divert
|
|
130
|
+
end
|
|
131
|
+
|
|
123
132
|
# Open or create session
|
|
124
133
|
mtk_writeSessionNameClashErrorDetection(fileName.to_s)
|
|
125
134
|
|
|
@@ -147,7 +156,7 @@ module Mmtk_helper
|
|
|
147
156
|
}
|
|
148
157
|
@@mtk_out=context.get(:mtk_out) # perf
|
|
149
158
|
}
|
|
150
|
-
#
|
|
159
|
+
#Temporary file has been corectly generated.
|
|
151
160
|
unusedData=protectedReverse.unusedData
|
|
152
161
|
if(!unusedData.nil?)
|
|
153
162
|
log.info { "warning: saved code appended to #{fileName}.mtk_save" }
|
|
@@ -324,8 +333,19 @@ END
|
|
|
324
333
|
#
|
|
325
334
|
# Reverse the file currently being written by mtk_writeSession.
|
|
326
335
|
# This method is automaticaly called
|
|
327
|
-
def mtk_retrieveProtected(fileName,fileType)
|
|
336
|
+
def mtk_retrieveProtected(fileName,fileType)
|
|
328
337
|
return false unless File.exists?(fileName)
|
|
338
|
+
globalFile=false
|
|
339
|
+
if context[:hasGlobalReverse,false]
|
|
340
|
+
if context[:globalReverseFile]!=fileName
|
|
341
|
+
return true if context[:reversedFiles].include?(File.basename(fileName))
|
|
342
|
+
raise Warning.new,"#{fileName} hasn't been reverse although this file exist !" if mtk_shouldAlreadyBeenReversed(fileName)
|
|
343
|
+
else
|
|
344
|
+
globalFile=true
|
|
345
|
+
endFilesName=false
|
|
346
|
+
endFilesExtension=false
|
|
347
|
+
end
|
|
348
|
+
end
|
|
329
349
|
|
|
330
350
|
mtk_context(:mtk_fileName=>fileName) {
|
|
331
351
|
File.open(fileName,'r') { |aFile|
|
|
@@ -337,6 +357,24 @@ END
|
|
|
337
357
|
|
|
338
358
|
aFile.each_line { |line|
|
|
339
359
|
i=i+1
|
|
360
|
+
|
|
361
|
+
if globalFile && !endFilesExtension
|
|
362
|
+
if !endFilesName
|
|
363
|
+
if line.include?("End_Files_Name")
|
|
364
|
+
endFilesName=true
|
|
365
|
+
else
|
|
366
|
+
context[:reversedFiles].concat(line[0,line.size-1].split(','))
|
|
367
|
+
end
|
|
368
|
+
else
|
|
369
|
+
if line.include?("End_Files_Extension")
|
|
370
|
+
endFilesExtension=true
|
|
371
|
+
else
|
|
372
|
+
context[:requireReverseExtensions].concat(line[0,line.size-1].split(','))
|
|
373
|
+
end
|
|
374
|
+
end
|
|
375
|
+
next
|
|
376
|
+
end
|
|
377
|
+
|
|
340
378
|
if !reading
|
|
341
379
|
#return if !line.include?("PROTECTED REGION XMDA BEGIN") # optimisation ?
|
|
342
380
|
m=fileType.re_begin.match(line)
|
|
@@ -375,12 +413,18 @@ ENDERRORMSG
|
|
|
375
413
|
end
|
|
376
414
|
reading=false
|
|
377
415
|
#log.debug "block_uri=#{block_uri} protected ->xxxxxxx\n#{buffer}xxxxxxxxxx"
|
|
378
|
-
qualified_block_uri=mtk_qualifyBlockURI(block_uri)
|
|
379
416
|
if reverseMode
|
|
380
|
-
|
|
417
|
+
buffer=buffer[0,buffer.size-1] unless buffer==''
|
|
418
|
+
if (!context[:hasGlobalReverse])
|
|
419
|
+
qualified_block_uri=mtk_qualifyBlockURI(block_uri)
|
|
420
|
+
self[qualified_block_uri]=buffer
|
|
421
|
+
else
|
|
422
|
+
qualified_block_uri=block_uri
|
|
423
|
+
context[:reverseGlobalMap][qualified_block_uri]=buffer
|
|
424
|
+
end
|
|
381
425
|
open("reverse.log","a") {|r|
|
|
382
426
|
r.write("\n### reverse #{qualified_block_uri}\n")
|
|
383
|
-
r.write( "#{
|
|
427
|
+
r.write( "#{buffer} #{buffer.length}")
|
|
384
428
|
} #unless context[:logFileReverse].nil?
|
|
385
429
|
else
|
|
386
430
|
#log.debug "Reverse ignored #{context[:mtk_fileName]}!"
|
|
@@ -391,6 +435,10 @@ ENDERRORMSG
|
|
|
391
435
|
}}
|
|
392
436
|
return true # un fichier a ete retro
|
|
393
437
|
end
|
|
438
|
+
|
|
439
|
+
def mtk_shouldAlreadyBeenReversed(fileName)
|
|
440
|
+
return context[:requireReverseExtensions].include?(File.extname(fileName))
|
|
441
|
+
end
|
|
394
442
|
end
|
|
395
443
|
|
|
396
444
|
#module Mrdf_Resource
|
|
@@ -398,6 +446,7 @@ end
|
|
|
398
446
|
module Mmtk_helper #_Resource
|
|
399
447
|
REVERSE=true
|
|
400
448
|
NOREVERSE=false
|
|
449
|
+
WITHOUT_MARKER=true
|
|
401
450
|
|
|
402
451
|
# mtk_protected is used when generated code can be modified by user and preserved by subsequent generation.
|
|
403
452
|
# The code generated in the block passed as parameter will be generated encolosed between identifiable tags.
|
|
@@ -443,30 +492,39 @@ module Mmtk_helper #_Resource
|
|
|
443
492
|
# write("default code to be redefined by user");
|
|
444
493
|
# }
|
|
445
494
|
# }
|
|
446
|
-
def mtk_protected(initialReverseMode=false,zoneId='0'
|
|
495
|
+
def mtk_protected(initialReverseMode=false,zoneId='0',noMarker=false, &block)
|
|
447
496
|
#mbu=mtk_block_uri
|
|
448
497
|
raise Exception.new("Bad parameter") if initialReverseMode!=false && initialReverseMode!=true
|
|
449
498
|
mbu="#{rdf_uri}__#{zoneId}"
|
|
450
|
-
qualified_uri=
|
|
499
|
+
qualified_uri=rdf_Repository.mtk_qualifyBlockURI(mbu)
|
|
451
500
|
|
|
452
501
|
fileType=context[:protectedReverse].fileType
|
|
502
|
+
|
|
453
503
|
str=context[:protectedReverse][qualified_uri]
|
|
504
|
+
if context[:hasGlobalReverse,false]
|
|
505
|
+
str=context[:reverseGlobalMap][qualified_uri]
|
|
506
|
+
end
|
|
454
507
|
|
|
455
508
|
reverse= (!str.nil?) || initialReverseMode
|
|
456
509
|
|
|
457
|
-
if
|
|
510
|
+
if noMarker
|
|
511
|
+
# do not use marker for this item
|
|
512
|
+
elsif(!reverse) && context[:skipNoReverseMarker,false]
|
|
458
513
|
write(fileType.beginMarkerSkip(mbu,reverse))
|
|
459
514
|
else
|
|
460
515
|
write(fileType.beginMarker(mbu,reverse))
|
|
461
516
|
end
|
|
462
|
-
|
|
463
517
|
if str.nil?
|
|
464
518
|
#log.debug "!!yield block_uri=#{mbu}"
|
|
465
|
-
yield
|
|
519
|
+
ret=yield
|
|
520
|
+
write(ret) if ret.kind_of?(String)
|
|
466
521
|
else
|
|
467
522
|
write(str)
|
|
468
523
|
end
|
|
469
|
-
if
|
|
524
|
+
if noMarker
|
|
525
|
+
write("\n") if !str.nil? && str!=""
|
|
526
|
+
# do not use marker for this item
|
|
527
|
+
elsif (!reverse) && context[:skipNoReverseMarker,false]
|
|
470
528
|
write(fileType.endMarkerSkip(mbu))
|
|
471
529
|
else
|
|
472
530
|
write(fileType.endMarker(mbu))
|
|
@@ -475,16 +533,73 @@ module Mmtk_helper #_Resource
|
|
|
475
533
|
|
|
476
534
|
#Stream to String Session
|
|
477
535
|
def mtk_stss(&block)
|
|
478
|
-
#@
|
|
536
|
+
#@rdf_Repository.mtk_stringWriteSession(&block)
|
|
479
537
|
mtk_stringWriteSession(&block)
|
|
480
538
|
end
|
|
481
539
|
|
|
540
|
+
# same as #mtk_protected but for writes.
|
|
541
|
+
def mtk_wprotected(initialReverseMode=false,zoneId='0',&block)
|
|
542
|
+
mtk_protected(initialReverseMode=false,zoneId='0',&block)
|
|
543
|
+
end
|
|
544
|
+
|
|
545
|
+
# same as #mtk_protected but for string instead of writes.
|
|
546
|
+
def mtk_sprotected(initialReverseMode=false,zoneId='0',&block)
|
|
547
|
+
return mtk_stss { mtk_protected(initialReverseMode,zoneId,&block)}
|
|
548
|
+
|
|
549
|
+
end
|
|
482
550
|
#internal method.
|
|
483
551
|
#
|
|
484
552
|
#Returns file descriptor currently used by mtk_writeSession.
|
|
485
553
|
def mtk_out
|
|
486
554
|
return context[:mtk_out]
|
|
487
555
|
end
|
|
556
|
+
|
|
557
|
+
|
|
558
|
+
def mtk_annotation(initialReverseMode=false,zonesId=['annotations'],noMarker=false)
|
|
559
|
+
#mbu=mtk_block_uri
|
|
560
|
+
raise Exception.new("Bad parameter") if initialReverseMode!=false && initialReverseMode!=true
|
|
561
|
+
|
|
562
|
+
if !noMarker
|
|
563
|
+
revAnno=''
|
|
564
|
+
del=''
|
|
565
|
+
|
|
566
|
+
nothingReverse = true
|
|
567
|
+
|
|
568
|
+
zonesId.each{ |zone|
|
|
569
|
+
mbu="#{rdf_uri}__#{zone}"
|
|
570
|
+
qualified_uri=rdf_Repository.mtk_qualifyBlockURI(mbu)
|
|
571
|
+
if !context[:hasGlobalReverse,false]
|
|
572
|
+
str=context[:protectedReverse][qualified_uri]
|
|
573
|
+
else
|
|
574
|
+
str=context[:reverseGlobalMap][qualified_uri]
|
|
575
|
+
end
|
|
576
|
+
|
|
577
|
+
|
|
578
|
+
reverse= (!str.nil?) || initialReverseMode
|
|
579
|
+
|
|
580
|
+
if reverse
|
|
581
|
+
nothingReverse = false
|
|
582
|
+
revAnno+=del
|
|
583
|
+
del=','
|
|
584
|
+
if zone=='0'
|
|
585
|
+
revAnno+='code'
|
|
586
|
+
else
|
|
587
|
+
if zone=='annoparam0'
|
|
588
|
+
revAnno+='anno_param'
|
|
589
|
+
else
|
|
590
|
+
revAnno+=zone
|
|
591
|
+
end
|
|
592
|
+
end
|
|
593
|
+
end
|
|
594
|
+
}
|
|
595
|
+
|
|
596
|
+
if nothingReverse then
|
|
597
|
+
revAnno = 'nothing'
|
|
598
|
+
end
|
|
599
|
+
|
|
600
|
+
write("@OntoMDE(reverse={#{revAnno}},uri=\"#{rdf_uri}\")\n")
|
|
601
|
+
end
|
|
602
|
+
end
|
|
488
603
|
|
|
489
604
|
end
|
|
490
605
|
|
|
@@ -545,3 +660,14 @@ class NullFileWriter
|
|
|
545
660
|
end
|
|
546
661
|
end
|
|
547
662
|
|
|
663
|
+
|
|
664
|
+
TEMP_FILE_TO_ERASE=[]
|
|
665
|
+
def mtk_addTempFileToDelete(fileName)
|
|
666
|
+
TEMP_FILE_TO_ERASE<<(fileName.to_s)
|
|
667
|
+
end
|
|
668
|
+
|
|
669
|
+
def mtk_deleteTempFiles
|
|
670
|
+
FileUtils.rm TEMP_FILE_TO_ERASE
|
|
671
|
+
end
|
|
672
|
+
|
|
673
|
+
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
require "set"
|
|
2
|
+
|
|
3
|
+
#This class is a singleton used for storing locations of model source files.
|
|
4
|
+
class Crdf_loader
|
|
5
|
+
include Singleton
|
|
6
|
+
attr_reader :rdf_Repository
|
|
7
|
+
attr_reader :availableProfiles,:activeProfiles
|
|
8
|
+
#attr_writer :availableProfiles,:activeProfiles
|
|
9
|
+
attr_reader :sourceFiles
|
|
10
|
+
|
|
11
|
+
def profiles
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# Add fn file to the list of model source files and loads it.
|
|
15
|
+
# Note:
|
|
16
|
+
# source file is stored internaly as full path (expanded)
|
|
17
|
+
# because running program current directory is subject to change
|
|
18
|
+
# especialy when rails server is used.
|
|
19
|
+
def addModelFile(fn)
|
|
20
|
+
fn=File.expand_path(fn)
|
|
21
|
+
@sourceFiles << fn if !@sourceFiles.include?(fn)
|
|
22
|
+
@rdf_Repository.loadModelFromFile(fn)
|
|
23
|
+
#log.debug "fn=#{fn}"
|
|
24
|
+
#TODO: enlever les fragments
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# clear current model and reloads it from file
|
|
28
|
+
def reset
|
|
29
|
+
#@rdf_Repository=Crdf_Repository.new
|
|
30
|
+
#TODO: supprimer adhérence UML
|
|
31
|
+
@rdf_Repository=model_for_inspector
|
|
32
|
+
#@rdf_Repository.loadUml2
|
|
33
|
+
@sourceFiles.each { |fn|
|
|
34
|
+
@rdf_Repository.loadModelFromFile(fn)
|
|
35
|
+
}
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def initialize
|
|
39
|
+
log.debug "Crdf_loader: initialisation singleton"
|
|
40
|
+
|
|
41
|
+
#TODO: REWRITE (currently KO)
|
|
42
|
+
@sourceFiles=Array.new()
|
|
43
|
+
@availableProfiles=Set.new()
|
|
44
|
+
@availableProfiles.add("uml2/uml2.rb")
|
|
45
|
+
@availableProfiles.add("java/java.rb")
|
|
46
|
+
#@availableProfiles[2]="java/hibernate.rb"
|
|
47
|
+
@activeProfiles=Set.new()
|
|
48
|
+
log.debug "Crdf_loader: fin initialisation singleton"
|
|
49
|
+
reset
|
|
50
|
+
end
|
|
51
|
+
## def loadProfile
|
|
52
|
+
## log.warn "TODO: reecrire"
|
|
53
|
+
## return
|
|
54
|
+
## log.debug "loadProfile ...."
|
|
55
|
+
## @availableProfiles.each { |prof|
|
|
56
|
+
## if @activeProfiles.include?(prof)
|
|
57
|
+
## #c=cookies[:user_name]
|
|
58
|
+
## log.debug "load profile #{prof}"
|
|
59
|
+
## require prof
|
|
60
|
+
## else
|
|
61
|
+
## log.debug "skip profile #{prof}"
|
|
62
|
+
## require prof
|
|
63
|
+
## end
|
|
64
|
+
## }
|
|
65
|
+
## load "uml2/uml2.rdfs.nt.rb"
|
|
66
|
+
## end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
#Crdf_loader.instance
|