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.
Files changed (95) hide show
  1. data/History.txt +3 -0
  2. data/Manifest.txt +95 -21
  3. data/README.txt +19 -1
  4. data/Rakefile +1 -1
  5. data/bin/ontomde-inspector +6 -0
  6. data/lib/ontomde-core/clone.rb +1 -1
  7. data/lib/ontomde-core/completion.rb +47 -0
  8. data/lib/ontomde-core/context.rb +32 -11
  9. data/lib/ontomde-core/converter-ea/XMI2RDFS.xslt +805 -0
  10. data/lib/ontomde-core/converter-ea/msxsl.exe +0 -0
  11. data/lib/ontomde-core/custom_method_missing.rb +24 -1
  12. data/lib/ontomde-core/fileLoader.rb +71 -14
  13. data/lib/ontomde-core/fileTypes.rb +7 -0
  14. data/lib/ontomde-core/helper.rb +141 -15
  15. data/lib/ontomde-core/inspector/loader.rb +69 -0
  16. data/lib/ontomde-core/inspector/rails/README +203 -0
  17. data/lib/ontomde-core/inspector/rails/Rakefile +10 -0
  18. data/lib/ontomde-core/inspector/rails/app/controllers/application.rb +10 -0
  19. data/lib/ontomde-core/inspector/rails/app/controllers/mtk_controller.rb +349 -0
  20. data/lib/ontomde-core/inspector/rails/app/helpers/application_helper.rb +3 -0
  21. data/lib/ontomde-core/inspector/rails/app/helpers/mtk_helper.rb +20 -0
  22. data/lib/ontomde-core/inspector/rails/app/views/layouts/mtk.rhtml +161 -0
  23. data/lib/ontomde-core/inspector/rails/app/views/mtk/clear.rhtml +5 -0
  24. data/lib/ontomde-core/inspector/rails/app/views/mtk/index.rhtml +1 -0
  25. data/lib/ontomde-core/inspector/rails/app/views/mtk/last_generated.rhtml +7 -0
  26. data/lib/ontomde-core/inspector/rails/app/views/mtk/model.html.erb +6 -0
  27. data/lib/ontomde-core/inspector/rails/app/views/mtk/not_found.rhtml +2 -0
  28. data/lib/ontomde-core/inspector/rails/app/views/mtk/search_form.rhtml +30 -0
  29. data/lib/ontomde-core/inspector/rails/app/views/mtk/search_result.rhtml +8 -0
  30. data/lib/ontomde-core/inspector/rails/app/views/mtk/setup_form.rhtml +42 -0
  31. data/lib/ontomde-core/inspector/rails/app/views/mtk/show.rhtml +172 -0
  32. data/lib/ontomde-core/inspector/rails/app/views/mtk/show_many.rhtml +25 -0
  33. data/lib/ontomde-core/inspector/rails/config/boot.rb +109 -0
  34. data/lib/ontomde-core/inspector/rails/config/database.yml +19 -0
  35. data/lib/ontomde-core/inspector/rails/config/environment.rb +60 -0
  36. data/lib/ontomde-core/inspector/rails/config/environments/development.rb +18 -0
  37. data/lib/ontomde-core/inspector/rails/config/environments/production.rb +19 -0
  38. data/lib/ontomde-core/inspector/rails/config/environments/test.rb +22 -0
  39. data/lib/ontomde-core/inspector/rails/config/initializers/inflections.rb +10 -0
  40. data/lib/ontomde-core/inspector/rails/config/initializers/mime_types.rb +5 -0
  41. data/lib/ontomde-core/inspector/rails/config/routes.rb +35 -0
  42. data/lib/ontomde-core/inspector/rails/doc/README_FOR_APP +2 -0
  43. data/lib/ontomde-core/inspector/rails/log/development.log +0 -0
  44. data/lib/ontomde-core/inspector/rails/log/production.log +0 -0
  45. data/lib/ontomde-core/inspector/rails/log/server.log +0 -0
  46. data/lib/ontomde-core/inspector/rails/log/test.log +0 -0
  47. data/lib/ontomde-core/inspector/rails/public/.htaccess +40 -0
  48. data/lib/ontomde-core/inspector/rails/public/404.html +30 -0
  49. data/lib/ontomde-core/inspector/rails/public/422.html +30 -0
  50. data/lib/ontomde-core/inspector/rails/public/500.html +30 -0
  51. data/lib/ontomde-core/inspector/rails/public/dispatch.cgi +10 -0
  52. data/lib/ontomde-core/inspector/rails/public/dispatch.fcgi +24 -0
  53. data/lib/ontomde-core/inspector/rails/public/dispatch.rb +10 -0
  54. data/lib/ontomde-core/inspector/rails/public/favicon.ico +0 -0
  55. data/lib/ontomde-core/inspector/rails/public/images/logoMDE.gif +0 -0
  56. data/lib/ontomde-core/inspector/rails/public/images/rails.png +0 -0
  57. data/lib/ontomde-core/inspector/rails/public/javascripts/application.js +2 -0
  58. data/lib/ontomde-core/inspector/rails/public/javascripts/controls.js +963 -0
  59. data/lib/ontomde-core/inspector/rails/public/javascripts/dragdrop.js +972 -0
  60. data/lib/ontomde-core/inspector/rails/public/javascripts/effects.js +1120 -0
  61. data/lib/ontomde-core/inspector/rails/public/javascripts/prototype.js +4225 -0
  62. data/lib/ontomde-core/inspector/rails/public/robots.txt +5 -0
  63. data/lib/ontomde-core/inspector/rails/script/about +3 -0
  64. data/lib/ontomde-core/inspector/rails/script/console +3 -0
  65. data/lib/ontomde-core/inspector/rails/script/destroy +3 -0
  66. data/lib/ontomde-core/inspector/rails/script/generate +3 -0
  67. data/lib/ontomde-core/inspector/rails/script/performance/benchmarker +3 -0
  68. data/lib/ontomde-core/inspector/rails/script/performance/profiler +3 -0
  69. data/lib/ontomde-core/inspector/rails/script/performance/request +3 -0
  70. data/lib/ontomde-core/inspector/rails/script/plugin +3 -0
  71. data/lib/ontomde-core/inspector/rails/script/process/inspector +3 -0
  72. data/lib/ontomde-core/inspector/rails/script/process/reaper +3 -0
  73. data/lib/ontomde-core/inspector/rails/script/process/spawner +3 -0
  74. data/lib/ontomde-core/inspector/rails/script/runner +3 -0
  75. data/lib/ontomde-core/inspector/rails/script/server +3 -0
  76. data/lib/ontomde-core/inspector/rails/test/test_helper.rb +38 -0
  77. data/lib/ontomde-core/inspector/rails/vendor/plugins/auto_complete/README +23 -0
  78. data/lib/ontomde-core/inspector/rails/vendor/plugins/auto_complete/Rakefile +22 -0
  79. data/lib/ontomde-core/inspector/rails/vendor/plugins/auto_complete/init.rb +2 -0
  80. data/lib/ontomde-core/inspector/rails/vendor/plugins/auto_complete/lib/auto_complete.rb +47 -0
  81. data/lib/ontomde-core/inspector/rails/vendor/plugins/auto_complete/lib/auto_complete_macros_helper.rb +143 -0
  82. data/lib/ontomde-core/inspector/rails/vendor/plugins/auto_complete/test/auto_complete_test.rb +67 -0
  83. data/lib/ontomde-core/inspector/setup_rails.sh +39 -0
  84. data/lib/ontomde-core/inspector.rb +21 -0
  85. data/lib/ontomde-core/meta.rb +6 -5
  86. data/lib/ontomde-core/resource.rb +6 -6
  87. data/lib/ontomde-core/resourceSet.rb +7 -6
  88. data/lib/ontomde-core/triplet.rb +2 -0
  89. data/lib/ontomde-core/version.rb +1 -1
  90. data/test/protege/test_demo.rb +1 -1
  91. data/test/test_context.rb +1 -1
  92. data/test/test_protected.rb +11 -11
  93. data/test/test_uri.rb +1 -1
  94. data/test/unit_test_crash.rb +1 -1
  95. metadata +105 -29
@@ -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=="#!ontomdx\n"
62
+ return @line.to_s=="#!ontomde\n"
63
63
  end
64
64
  end
65
65
 
66
- module Mrdf_Model
67
- def loadMetaModelFromFile(fileName,ignoreHeader=false)
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
- def loadModelFromFile (srcFileName,ignoreHeader=false)
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
- #Crdf_Resource.new(self,"xx").initUpdate
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}ontomdx was given a model file without#{p}a valid ontomdx 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")
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
- parse(nt,modeData)
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=WIN_PATH_RAPPER+" "+param
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='"'+WIN_PATH_RAPPER+'"'+param
178
+ cmd='"'+::Mrdf_Model::WIN_PATH_RAPPER+'"'+param
157
179
  end
158
180
  return if system(cmd)
159
- raise Exception.new("\n***\n***Error running command\n***\n***#{cmd}\n***\n")
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 ! (srcFileName=~/.rdfs*$/ )
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 "Blanc dans nom de fichier non supportes sous windows" if fileName.include?(" ")
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")
@@ -27,7 +27,7 @@ class LoadModelLazyWriter
27
27
 
28
28
  def [](key)
29
29
  if @model.nil?
30
- @model=Crdf_Model.new
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 Crdf_Model
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 Mrdf_Model
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
- #Le fichier temporaire a bien �t� g�n�r�.
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
- self[qualified_block_uri]=buffer[0,buffer.size-1]
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( "#{self[qualified_block_uri]} #{self[qualified_block_uri].length}")
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',&block)
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=rdf_model.mtk_qualifyBlockURI(mbu)
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 (!reverse) && context[:skipNoReverseMarker,false]
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 (!reverse) && context[:skipNoReverseMarker,false]
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
- #@rdf_model.mtk_stringWriteSession(&block)
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