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