ontomde-core 2.0.0 → 2.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/Manifest.txt +6 -7
- data/lib/ontomde-core/completion.rb +4 -4
- data/lib/ontomde-core/converter-ea/{XMI2RDFS.xslt → 7_1_829/XMI2RDFS.xslt} +39 -34
- data/lib/ontomde-core/converter-ea/7_1_829/XMI2RDFS_step2.xslt +24 -0
- data/lib/ontomde-core/converter-ea/7_1_833/XMI2RDFS.xslt +817 -0
- data/lib/ontomde-core/converter-ea/7_1_833/XMI2RDFS_step2.xslt +24 -0
- data/lib/ontomde-core/converter-ea/7_5_843/XMI2RDFS.xslt +817 -0
- data/lib/ontomde-core/converter-ea/7_5_843/XMI2RDFS_step2.xslt +24 -0
- data/lib/ontomde-core/customERB.rb +1 -1
- data/lib/ontomde-core/custom_method_missing.rb +6 -6
- data/lib/ontomde-core/fileLoader.rb +49 -34
- data/lib/ontomde-core/fileTypes.rb +10 -10
- data/lib/ontomde-core/helper.rb +46 -21
- data/lib/ontomde-core/inspector.rb +2 -2
- data/lib/ontomde-core/log.rb +1 -1
- data/lib/ontomde-core/meta.rb +15 -15
- data/lib/ontomde-core/resource.rb +12 -10
- data/lib/ontomde-core/resourceSet.rb +3 -1
- data/lib/ontomde-core/triplet.rb +2 -0
- data/lib/ontomde-core/version.rb +1 -1
- metadata +8 -9
- data/lib/ontomde-core/inspector/rails/vendor/plugins/auto_complete/README +0 -23
- data/lib/ontomde-core/inspector/rails/vendor/plugins/auto_complete/Rakefile +0 -22
- data/lib/ontomde-core/inspector/rails/vendor/plugins/auto_complete/init.rb +0 -2
- data/lib/ontomde-core/inspector/rails/vendor/plugins/auto_complete/lib/auto_complete.rb +0 -47
- data/lib/ontomde-core/inspector/rails/vendor/plugins/auto_complete/lib/auto_complete_macros_helper.rb +0 -143
- data/lib/ontomde-core/inspector/rails/vendor/plugins/auto_complete/test/auto_complete_test.rb +0 -67
@@ -0,0 +1,24 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<xsl:stylesheet version="2.0" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:uml="http://schema.omg.org/spec/UML/2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ns0="http://uml/2#">
|
3
|
+
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
|
4
|
+
|
5
|
+
|
6
|
+
<xsl:template match="*|@*">
|
7
|
+
<xsl:copy>
|
8
|
+
<xsl:apply-templates select="@*"/>
|
9
|
+
<xsl:apply-templates select="node()"/>
|
10
|
+
</xsl:copy>
|
11
|
+
</xsl:template>
|
12
|
+
<xsl:template match="@rdf:about[starts-with(.,'EA')]">
|
13
|
+
<xsl:attribute name="rdf:about">
|
14
|
+
<xsl:value-of select="concat('http://EA#',.)"/>
|
15
|
+
</xsl:attribute>
|
16
|
+
</xsl:template>
|
17
|
+
<xsl:template match="@rdf:resource[starts-with(.,'EA')]">
|
18
|
+
<xsl:attribute name="rdf:resource">
|
19
|
+
<xsl:value-of select="concat('http://EA#',.)"/>
|
20
|
+
</xsl:attribute>
|
21
|
+
</xsl:template>
|
22
|
+
|
23
|
+
|
24
|
+
</xsl:stylesheet>
|
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
|
8
8
|
def method_missing(methId,args=nil)
|
9
|
-
objinfo=
|
9
|
+
objinfo='-'
|
10
10
|
if self.kind_of?(Mrdf_Resource)
|
11
11
|
objinfo= <<END
|
12
12
|
**** For ressource of type #{self.class.name}
|
@@ -17,12 +17,12 @@ def method_missing(methId,args=nil)
|
|
17
17
|
END
|
18
18
|
end
|
19
19
|
|
20
|
-
msg=respond_to?(:rdf_uri) ? "#{rdf_uri}" :
|
20
|
+
msg=respond_to?(:rdf_uri) ? "#{rdf_uri}" : 'nil'
|
21
21
|
log.error { "method #{methId} not available for object of class #{self.class.name}, (uri=#{msg})(to_s=#{self}) #{objinfo}" }
|
22
22
|
|
23
23
|
|
24
24
|
|
25
|
-
if msg==
|
25
|
+
if msg=='ukb_null'
|
26
26
|
log.error { <<END
|
27
27
|
********** INVALID MODEL DETECTED **********
|
28
28
|
********** INVALID MODEL DETECTED **********
|
@@ -46,7 +46,7 @@ END
|
|
46
46
|
end
|
47
47
|
|
48
48
|
log.debug {
|
49
|
-
msg=
|
49
|
+
msg=''
|
50
50
|
self.methods.sort{|a,b| a<=>b}.each {|m|
|
51
51
|
msg="#{msg}, #{m}"
|
52
52
|
}
|
@@ -58,10 +58,10 @@ END
|
|
58
58
|
#self.included_modules.each { |m|
|
59
59
|
# #puts "include #{m}"
|
60
60
|
# }
|
61
|
-
puts
|
61
|
+
puts 'end of custom method_missing'
|
62
62
|
#TODO: l'appel au stock method_missing genere des temps de traitements infinis. (cpu a 100%, conso memoire enorme)
|
63
63
|
#super
|
64
|
-
puts
|
64
|
+
puts 'exiting'
|
65
65
|
throw NoMethodError.new("method missing '#{methId}' for object '#{self.class.name}'",methId,args)
|
66
66
|
#exit
|
67
67
|
end
|
@@ -13,7 +13,7 @@ class NTripleFile < NTriple
|
|
13
13
|
def line=(_line)
|
14
14
|
@line=_line
|
15
15
|
@about_uri=@predicat_uri=@value_uri=@value_litteral=nil
|
16
|
-
@split=@line.split(
|
16
|
+
@split=@line.split(' ',3)
|
17
17
|
end
|
18
18
|
|
19
19
|
def about_uri
|
@@ -38,7 +38,7 @@ class NTripleFile < NTriple
|
|
38
38
|
#(A File should not mix CR/LF lines with CR lines)
|
39
39
|
def lineOffset
|
40
40
|
return @litOffset unless @litOffset.nil?
|
41
|
-
i=@split[2].rindex(
|
41
|
+
i=@split[2].rindex('.')
|
42
42
|
l=@split[2].length
|
43
43
|
@litOffset=l-i+3
|
44
44
|
return @litOffset
|
@@ -48,7 +48,7 @@ class NTripleFile < NTriple
|
|
48
48
|
case @split[2][0]
|
49
49
|
when 60 then return true
|
50
50
|
when 34 then return false
|
51
|
-
else raise Warning.new,
|
51
|
+
else raise Warning.new,'Bad ntriple detected'
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
@@ -64,20 +64,20 @@ class NTripleFile < NTriple
|
|
64
64
|
end
|
65
65
|
|
66
66
|
module Mrdf_Repository
|
67
|
-
def loadMetaModelFromFile(fileName,ignoreHeader=true)
|
67
|
+
def loadMetaModelFromFile(fileName,ignoreHeader=true,failOnWarn=false)
|
68
68
|
@updateCount=@updateCount+1
|
69
|
-
raise Exception.new(
|
70
|
-
m=fileName+
|
69
|
+
raise Exception.new('nil fileName passed to loadMetaModelFromFile') if fileName.nil?
|
70
|
+
m=fileName+'.rb'
|
71
71
|
#log.debug "m=#{m}"
|
72
72
|
#TODO: cacheMetaModelFile forced to false
|
73
73
|
# because range handling broke it
|
74
74
|
if( context[:cacheMetaModelFile,false] && File.exists?(m) && File.mtime(m) > File.mtime(fileName) )
|
75
75
|
log.debug "Using cache in #{m}"
|
76
76
|
require(m)
|
77
|
-
loadModelFromFile(fileName,ignoreHeader)
|
77
|
+
loadModelFromFile(fileName,ignoreHeader,failOnWarn)
|
78
78
|
else
|
79
79
|
log.debug "Generating cache in #{m}"
|
80
|
-
loadModelFromFile(fileName,ignoreHeader)
|
80
|
+
loadModelFromFile(fileName,ignoreHeader,failOnWarn)
|
81
81
|
self.generateClassesFromMetamodel(m)
|
82
82
|
end
|
83
83
|
end
|
@@ -93,15 +93,15 @@ module Mrdf_Repository
|
|
93
93
|
# loadModelFromFile("MyUmlModelFile.nt")
|
94
94
|
# loadModelFromFile("MyDslModelFile.nt")
|
95
95
|
# loadModelFromFile("MyDslModelFile.xml")
|
96
|
-
def loadModelFromFile (srcFileName,ignoreHeader=true)
|
96
|
+
def loadModelFromFile (srcFileName,ignoreHeader=true,failOnWarn=false)
|
97
97
|
#Converts from RDF/XML to RDF/NT when needed.
|
98
98
|
fileName=translateToNt(srcFileName)
|
99
99
|
|
100
100
|
@updateCount=@updateCount+1
|
101
101
|
[MODE_parseModelStream_CREATE_INSTANCES,MODE_parseModelStream_POPULATE_FIELDS].each { |modeData|
|
102
102
|
begin
|
103
|
-
File.open(fileName,
|
104
|
-
parseModelStream(aFile,modeData,ignoreHeader)
|
103
|
+
File.open(fileName,'r') { |aFile|
|
104
|
+
parseModelStream(aFile,modeData,ignoreHeader,failOnWarn)
|
105
105
|
}
|
106
106
|
rescue Exception => e
|
107
107
|
raise Exception.new(e.message+"ERROR *** current file is: \"#{fileName}\"\nERROR ***\n")
|
@@ -119,7 +119,7 @@ module Mrdf_Repository
|
|
119
119
|
MODE_parseModelStream_POPULATE_FIELDS=!MODE_parseModelStream_CREATE_INSTANCES
|
120
120
|
|
121
121
|
#Populate model objects and fields from RDF stream.
|
122
|
-
def parseModelStream(stream,modeData,ignoreHeader=false)
|
122
|
+
def parseModelStream(stream,modeData,ignoreHeader=false,failOnWarn=false)
|
123
123
|
aFile=stream
|
124
124
|
i=0
|
125
125
|
nt=NTripleFile.new()
|
@@ -150,6 +150,7 @@ module Mrdf_Repository
|
|
150
150
|
Crdf_Resource.new(self,z.uri)
|
151
151
|
#parse(nt.line,modeData)
|
152
152
|
i=i-1
|
153
|
+
raise z if failOnWarn
|
153
154
|
retry
|
154
155
|
rescue Warning => w
|
155
156
|
log.error "WARNING ["+(modeData ? "data":"res")+" :line "+i.to_s+", "+w.to_s+"]:"+nt.line
|
@@ -158,21 +159,21 @@ module Mrdf_Repository
|
|
158
159
|
}
|
159
160
|
end
|
160
161
|
|
161
|
-
PLATFORM_IS_JAVA=!(RUBY_PLATFORM.index(
|
162
|
-
OS_IS_WINDOWS=!(ENV['OS'].nil? ? true : ENV['OS'].index(
|
162
|
+
PLATFORM_IS_JAVA=!(RUBY_PLATFORM.index('java').nil?)
|
163
|
+
OS_IS_WINDOWS=!(ENV['OS'].nil? ? true : ENV['OS'].index('Windows').nil?)
|
163
164
|
|
164
|
-
puts(%{O/S detected: #{OS_IS_WINDOWS ?
|
165
|
-
puts(%{Ruby platform detected: #{PLATFORM_IS_JAVA ?
|
165
|
+
puts(%{O/S detected: #{OS_IS_WINDOWS ? 'WINDOWS' : '*nix'}})
|
166
|
+
puts(%{Ruby platform detected: #{PLATFORM_IS_JAVA ? 'Java' : 'C'}})
|
166
167
|
|
167
168
|
def rapperRun(param)
|
168
169
|
if ! OS_IS_WINDOWS
|
169
170
|
#we are not under windows
|
170
171
|
#built in rapper cannot be used (it is for windows)
|
171
172
|
#we use rapper available in path.
|
172
|
-
cmd=
|
173
|
+
cmd='rapper '+param
|
173
174
|
elsif PLATFORM_IS_JAVA
|
174
175
|
#We are under windows but under jruby
|
175
|
-
cmd=::Mrdf_Model::WIN_PATH_RAPPER+
|
176
|
+
cmd=::Mrdf_Model::WIN_PATH_RAPPER+' '+param
|
176
177
|
else
|
177
178
|
#We are under windows but under Matz Ruby Implementation (MRI)
|
178
179
|
cmd='"'+::Mrdf_Model::WIN_PATH_RAPPER+'"'+param
|
@@ -180,50 +181,64 @@ module Mrdf_Repository
|
|
180
181
|
return if system(cmd)
|
181
182
|
msg=<<END
|
182
183
|
***
|
183
|
-
*** Error running rapper #{
|
184
|
+
*** Error running rapper #{'external ' if OS_IS_WINDOWS }binary executable.
|
184
185
|
*** #{cmd}
|
185
|
-
*** #{
|
186
|
+
*** #{'UBUNTU user should install raptor-utils package.' if !OS_IS_WINDOWS}
|
186
187
|
***
|
187
188
|
END
|
188
189
|
raise Exception.new(msg)
|
189
190
|
end
|
190
191
|
|
191
192
|
|
192
|
-
def translateEAXMI_to_NT(eaxmifile)
|
193
|
+
def translateEAXMI_to_NT(eaxmifile,ea_version)
|
193
194
|
translatedfile="#{eaxmifile}_tmp.nt"
|
194
|
-
|
195
|
+
param1="#{eaxmifile} -o #{translatedfile}_prestep2 #{File.dirname(__FILE__)}\\converter-ea\\#{ea_version}\\XMI2RDFS.xslt"
|
196
|
+
#step2 is for getting rid of file://xxx
|
197
|
+
param2="#{translatedfile}_prestep2 -o #{translatedfile} #{File.dirname(__FILE__)}\\converter-ea\\#{ea_version}\\XMI2RDFS_step2.xslt"
|
198
|
+
|
195
199
|
if ! OS_IS_WINDOWS
|
196
200
|
#we are not under windows
|
197
201
|
#built in rapper cannot be used (it is for windows)
|
198
202
|
#we use rapper available in path.
|
199
|
-
raise Exception.new(
|
203
|
+
raise Exception.new('TODO: use xslt under linux')
|
200
204
|
elsif PLATFORM_IS_JAVA
|
201
205
|
#We are under windows but under jruby
|
202
|
-
|
206
|
+
cmd1="#{File.dirname(__FILE__)}\\converter-ea\\msxsl.exe "+param1.tr('/','\\\\')
|
207
|
+
cmd2="#{File.dirname(__FILE__)}\\converter-ea\\msxsl.exe "+param2.tr('/','\\\\')
|
203
208
|
else
|
204
209
|
#We are under windows but under Matz Ruby Implementation (MRI)
|
205
|
-
|
210
|
+
cmd1="#{File.dirname(__FILE__)}\\converter-ea\\msxsl.exe "+param1.tr('/','\\\\')
|
211
|
+
cmd2="#{File.dirname(__FILE__)}\\converter-ea\\msxsl.exe "+param2.tr('/','\\\\')
|
206
212
|
end
|
207
|
-
|
208
|
-
|
213
|
+
puts " :starting Enterprise Architect XMI conversion using msxml"
|
214
|
+
[cmd1,cmd2].each { |cmd|
|
215
|
+
ret=system(cmd)
|
216
|
+
raise Exception.new("\n***\n***Error running command\n***\n***#{cmd}\n***Please check that no msxml process is running in background\n***\n") unless ret
|
217
|
+
}
|
218
|
+
puts " :done with Enterprise Architect file conversion"
|
219
|
+
return translateXMLRDF_to_NT(translatedfile)
|
209
220
|
end
|
210
221
|
|
211
222
|
#returns a filename containing a ntriple version of file in srcfilename.
|
212
223
|
def translateToNt(srcFileName)
|
213
224
|
return translateXMLRDF_to_NT(srcFileName) if (srcFileName=~/\.rdfs*$/ )
|
214
|
-
return translateEAXMI_to_NT(srcFileName) if (srcFileName=~/\.
|
225
|
+
return translateEAXMI_to_NT(srcFileName,'7_5_843') if (srcFileName=~/\.ea7_5_843\.xm[il]*$/)
|
226
|
+
return translateEAXMI_to_NT(srcFileName,'7_1_833') if (srcFileName=~/\.ea7_1_833\.xm[il]*$/)
|
227
|
+
return translateEAXMI_to_NT(srcFileName,'7_1_829') if (srcFileName=~/\.ea7_1_829\.xm[il]*$/)
|
215
228
|
|
216
229
|
#no conversion necessary
|
217
230
|
return srcFileName
|
218
231
|
end
|
219
232
|
|
220
233
|
def translateXMLRDF_to_NT(srcFileName)
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
234
|
+
# added version number to avoid cache reuse when upgrading
|
235
|
+
fileName="#{srcFileName}.#{Ontomde::Core::VERSION}.cache.deleteMe.nt"
|
236
|
+
useCache=context[:useTranslateToNtCache,true]
|
237
|
+
mtk_addTempFileToDelete(fileName) unless useCache
|
238
|
+
if( useCache && File.exists?(fileName) && File.mtime(fileName) > File.mtime(srcFileName) )
|
239
|
+
puts "INFO:Using cache in #{fileName}"
|
225
240
|
else
|
226
|
-
raise
|
241
|
+
raise 'white space in rdf file names not supported under windows' if fileName.include?(' ')
|
227
242
|
if !OS_IS_WINDOWS
|
228
243
|
param=' -q -o ntriples -i rdfxml '+srcFileName+' > '+fileName
|
229
244
|
else
|
@@ -235,7 +250,7 @@ END
|
|
235
250
|
end
|
236
251
|
|
237
252
|
def translateToXML(srcFileName,fileName)
|
238
|
-
raise
|
253
|
+
raise 'Blanc dans nom de fichier non supportes sous windows' if fileName.include?(' ') || srcFileName.include?(' ')
|
239
254
|
if !OS_IS_WINDOWS
|
240
255
|
param=' -q -i ntriples -o rdfxml '+srcFileName+' > '+fileName+''
|
241
256
|
else
|
@@ -10,10 +10,10 @@ class FileType
|
|
10
10
|
@@types[type]=self
|
11
11
|
end
|
12
12
|
def writeComment(str,writer)
|
13
|
-
raise Warning.new(),
|
13
|
+
raise Warning.new(), 'Internal error. Undefined method'
|
14
14
|
end
|
15
15
|
def beginMarker(str,id)
|
16
|
-
raise Warning.new(),
|
16
|
+
raise Warning.new(), 'Internal error. Undefined method'
|
17
17
|
end
|
18
18
|
|
19
19
|
#marker placeholder
|
@@ -22,7 +22,7 @@ class FileType
|
|
22
22
|
return "\n"
|
23
23
|
end
|
24
24
|
def endMarker(str)
|
25
|
-
raise Warning.new(),
|
25
|
+
raise Warning.new(), 'Internal error. Undefined method'
|
26
26
|
end
|
27
27
|
|
28
28
|
#marker placeholder
|
@@ -50,7 +50,7 @@ end
|
|
50
50
|
|
51
51
|
class FileTypeJava < FileType
|
52
52
|
include Singleton
|
53
|
-
def initialize(ext=
|
53
|
+
def initialize(ext='.java')
|
54
54
|
super(ext)
|
55
55
|
@re_begin=Regexp.new(/^[ \t]*\/\*[ _]*XMDA[ _]BEGIN[ _]+reverse="(.*)"[ _]uri="(.*)"[ _]*\*\//)
|
56
56
|
@re_end=Regexp.new(/^[ \t]*\/\*[ _]*XMDA[ _]END[ _]+uri="(.*)"[ _]*\*\//)
|
@@ -61,7 +61,7 @@ class FileTypeJava < FileType
|
|
61
61
|
def thinLineComment
|
62
62
|
#return context[:thinLineComment,true] ? ('_'*60) : ''
|
63
63
|
#return "_____________________________________________________________________________________________________________________________________________"
|
64
|
-
return
|
64
|
+
return ''
|
65
65
|
end
|
66
66
|
def beginMarker(uri,reverse)
|
67
67
|
return %{\n/*XMDA_BEGIN_reverse="#{reverse ? 'yes':'no'}"_#{thinLineComment}uri="#{uri}"_*/\n}
|
@@ -76,7 +76,7 @@ FileTypeJava.instance # register
|
|
76
76
|
class FileTypeXML < FileType
|
77
77
|
# a character that can not exist in a URI
|
78
78
|
URI_ESCAPE_CHAR_ONE='°'
|
79
|
-
def initialize(ext=
|
79
|
+
def initialize(ext='.xml')
|
80
80
|
super(ext)
|
81
81
|
@re_begin=/^[ \t]*<\!-- *XMDA BEGIN +reverse="([^"]*)" uri="([^"]*)" *-->/
|
82
82
|
@re_end=/^[ \t]*<\!-- *XMDA END +uri="([^"]*)" *-->/
|
@@ -100,14 +100,14 @@ end
|
|
100
100
|
FileTypeXML.instance # register
|
101
101
|
|
102
102
|
class FileTypeXSD < FileTypeXML
|
103
|
-
def initialize(ext=
|
103
|
+
def initialize(ext='.xsd')
|
104
104
|
super
|
105
105
|
end
|
106
106
|
end
|
107
107
|
FileTypeXSD.instance # register
|
108
108
|
|
109
109
|
class FileTypeJavaProperties < FileType
|
110
|
-
def initialize(ext=
|
110
|
+
def initialize(ext='.properties')
|
111
111
|
super(ext)
|
112
112
|
@re_begin=/^[ \t]*#[_ ]*XMDA_BEGIN_reverse="([^"]*)"_uri="([^"]*)"[ _]*$/
|
113
113
|
@re_end=/^[ \t]*#[ _]*XMDA_END_uri="([^"]*)"[ _]*$/
|
@@ -129,7 +129,7 @@ FileTypeJavaProperties.instance # register
|
|
129
129
|
|
130
130
|
class FileTypeJSP < FileType
|
131
131
|
include Singleton
|
132
|
-
def initialize(ext=
|
132
|
+
def initialize(ext='.jsp')
|
133
133
|
super(ext)
|
134
134
|
@re_begin=Regexp.new(/^[ \t]*<%--*[ _]*XMDA[ _]BEGIN[ _]*reverse="(.*)"[ _]uri="(.*)"[ _]*--%>/)
|
135
135
|
@re_end=Regexp.new(/^[ \t]*<%--[ _]*XMDA[ _]END[ _]*uri="(.*)"[ _]*--%>/)
|
@@ -140,7 +140,7 @@ class FileTypeJSP < FileType
|
|
140
140
|
def thinLineComment
|
141
141
|
#return context[:thinLineComment,true] ? ('_'*60) : ''
|
142
142
|
#return "_____________________________________________________________________________________________________________________________________________"
|
143
|
-
return
|
143
|
+
return ''
|
144
144
|
end
|
145
145
|
def beginMarker(uri,reverse)
|
146
146
|
return %{\n<%--_XMDA_BEGIN_reverse="#{reverse ? 'yes':'no'}"_#{thinLineComment}uri="#{uri}"_--%>\n}
|
data/lib/ontomde-core/helper.rb
CHANGED
@@ -89,7 +89,7 @@ module Mmtk_helper
|
|
89
89
|
end
|
90
90
|
|
91
91
|
#mtk_writeSession temporary file suffix.
|
92
|
-
TEMP_FILE_SUFFIX=
|
92
|
+
TEMP_FILE_SUFFIX='.xmda_toolkit_temporary'
|
93
93
|
|
94
94
|
@@max_file_logged=30
|
95
95
|
|
@@ -123,7 +123,7 @@ module Mmtk_helper
|
|
123
123
|
|
124
124
|
#if a file exist named fileName.mda, then write to this
|
125
125
|
#file instead of fileName
|
126
|
-
divert=fileName+
|
126
|
+
divert=fileName+'.mda'
|
127
127
|
if (File.exists?(divert))
|
128
128
|
fileType=FileType.getFileType(fileName) if fileType.nil?
|
129
129
|
fileName=divert
|
@@ -160,8 +160,8 @@ module Mmtk_helper
|
|
160
160
|
unusedData=protectedReverse.unusedData
|
161
161
|
if(!unusedData.nil?)
|
162
162
|
log.info { "warning: saved code appended to #{fileName}.mtk_save" }
|
163
|
-
msg=
|
164
|
-
File.open(fileName+
|
163
|
+
msg=''
|
164
|
+
File.open(fileName+'.mtk_save',File::CREAT|File::APPEND|File::RDWR, 0644) { |file|
|
165
165
|
unusedData.each {|k|
|
166
166
|
msg=msg+%{\n ** uri="#{k}"}
|
167
167
|
file.write <<END
|
@@ -198,7 +198,7 @@ You must take the appropriate actions before re-running generator.
|
|
198
198
|
***************************************************************
|
199
199
|
}}
|
200
200
|
#exit(1)
|
201
|
-
raise Exception.new(
|
201
|
+
raise Exception.new('potential code loss detected')
|
202
202
|
end
|
203
203
|
|
204
204
|
end
|
@@ -216,7 +216,7 @@ You must take the appropriate actions before re-running generator.
|
|
216
216
|
# We just wait a few seconds and try again.
|
217
217
|
#raise IOException.new(),"KO" if retryCount<2
|
218
218
|
File.rename(fileName+TEMP_FILE_SUFFIX,fileName)
|
219
|
-
puts
|
219
|
+
puts 'Retry succeeded.' if retryCount>0
|
220
220
|
break # exit while
|
221
221
|
rescue => e
|
222
222
|
retryCount=retryCount+1
|
@@ -286,10 +286,20 @@ You must take the appropriate actions before re-running generator.
|
|
286
286
|
#
|
287
287
|
#EXAMPLE.
|
288
288
|
# encloseWrite("<title>","</title>") { write "Today news" }
|
289
|
-
def encloseWrite(beforeStr,afterStr,&middleBlock)
|
290
|
-
|
291
|
-
|
292
|
-
|
289
|
+
def encloseWrite(beforeStr,afterStr,stealth=false,&middleBlock)
|
290
|
+
if(stealth)
|
291
|
+
s=mtk_stss { yield }
|
292
|
+
return false if s.nil? || s.empty?
|
293
|
+
write(beforeStr.to_s)
|
294
|
+
write(s)
|
295
|
+
write(afterStr.to_s)
|
296
|
+
return true
|
297
|
+
else
|
298
|
+
write(beforeStr.to_s)
|
299
|
+
yield
|
300
|
+
write(afterStr.to_s)
|
301
|
+
return nil
|
302
|
+
end
|
293
303
|
end
|
294
304
|
|
295
305
|
# Write string to the current file opened by mtk_writeSession.
|
@@ -339,7 +349,16 @@ END
|
|
339
349
|
if context[:hasGlobalReverse,false]
|
340
350
|
if context[:globalReverseFile]!=fileName
|
341
351
|
return true if context[:reversedFiles].include?(File.basename(fileName))
|
342
|
-
|
352
|
+
if mtk_shouldAlreadyBeenReversed(fileName)
|
353
|
+
msg=<<END
|
354
|
+
|
355
|
+
FILENAME="#{fileName}" File.exists?=#{File.exists?(fileName)}
|
356
|
+
$FILENAME should have been reversed by batch reverse process and it has not.
|
357
|
+
This may be caused by an internal error or a platform limitation.
|
358
|
+
You should know that there is a length limit for paths and your fileName is #{fileName.length} character long. You may consider reducing packages depths and shortening names for reducing global fileName length.
|
359
|
+
END
|
360
|
+
raise Warning.new,msg
|
361
|
+
end
|
343
362
|
else
|
344
363
|
globalFile=true
|
345
364
|
endFilesName=false
|
@@ -360,13 +379,13 @@ END
|
|
360
379
|
|
361
380
|
if globalFile && !endFilesExtension
|
362
381
|
if !endFilesName
|
363
|
-
if line.include?(
|
382
|
+
if line.include?('End_Files_Name')
|
364
383
|
endFilesName=true
|
365
384
|
else
|
366
385
|
context[:reversedFiles].concat(line[0,line.size-1].split(','))
|
367
386
|
end
|
368
387
|
else
|
369
|
-
if line.include?(
|
388
|
+
if line.include?('End_Files_Extension')
|
370
389
|
endFilesExtension=true
|
371
390
|
else
|
372
391
|
context[:requireReverseExtensions].concat(line[0,line.size-1].split(','))
|
@@ -422,7 +441,7 @@ ENDERRORMSG
|
|
422
441
|
qualified_block_uri=block_uri
|
423
442
|
context[:reverseGlobalMap][qualified_block_uri]=buffer
|
424
443
|
end
|
425
|
-
open(
|
444
|
+
open('reverse.log','a') {|r|
|
426
445
|
r.write("\n### reverse #{qualified_block_uri}\n")
|
427
446
|
r.write( "#{buffer} #{buffer.length}")
|
428
447
|
} #unless context[:logFileReverse].nil?
|
@@ -494,15 +513,17 @@ module Mmtk_helper #_Resource
|
|
494
513
|
# }
|
495
514
|
def mtk_protected(initialReverseMode=false,zoneId='0',noMarker=false, &block)
|
496
515
|
#mbu=mtk_block_uri
|
497
|
-
raise Exception.new(
|
516
|
+
raise Exception.new('Bad parameter') if initialReverseMode!=false && initialReverseMode!=true
|
498
517
|
mbu="#{rdf_uri}__#{zoneId}"
|
499
518
|
qualified_uri=rdf_Repository.mtk_qualifyBlockURI(mbu)
|
500
519
|
|
501
520
|
fileType=context[:protectedReverse].fileType
|
502
521
|
|
503
|
-
str=
|
522
|
+
str=nil
|
504
523
|
if context[:hasGlobalReverse,false]
|
505
524
|
str=context[:reverseGlobalMap][qualified_uri]
|
525
|
+
else
|
526
|
+
str=context[:protectedReverse][qualified_uri]
|
506
527
|
end
|
507
528
|
|
508
529
|
reverse= (!str.nil?) || initialReverseMode
|
@@ -557,7 +578,7 @@ module Mmtk_helper #_Resource
|
|
557
578
|
|
558
579
|
def mtk_annotation(initialReverseMode=false,zonesId=['annotations'],noMarker=false)
|
559
580
|
#mbu=mtk_block_uri
|
560
|
-
raise Exception.new(
|
581
|
+
raise Exception.new('Bad parameter') if initialReverseMode!=false && initialReverseMode!=true
|
561
582
|
|
562
583
|
if !noMarker
|
563
584
|
revAnno=''
|
@@ -580,14 +601,18 @@ module Mmtk_helper #_Resource
|
|
580
601
|
if reverse
|
581
602
|
nothingReverse = false
|
582
603
|
revAnno+=del
|
583
|
-
del=','
|
604
|
+
del=', '
|
584
605
|
if zone=='0'
|
585
606
|
revAnno+='code'
|
586
607
|
else
|
587
608
|
if zone=='annoparam0'
|
588
609
|
revAnno+='anno_param'
|
589
610
|
else
|
590
|
-
|
611
|
+
if zone=='custom_code'
|
612
|
+
revAnno+='custom'
|
613
|
+
else
|
614
|
+
revAnno+=zone
|
615
|
+
end
|
591
616
|
end
|
592
617
|
end
|
593
618
|
end
|
@@ -596,8 +621,8 @@ module Mmtk_helper #_Resource
|
|
596
621
|
if nothingReverse then
|
597
622
|
revAnno = 'nothing'
|
598
623
|
end
|
599
|
-
|
600
|
-
write("@OntoMDE(reverse={#{revAnno}},uri
|
624
|
+
write("\t") # good for methods and attributes
|
625
|
+
write("@OntoMDE(reverse = { #{revAnno} }, uri = \"#{rdf_uri}\")\n")
|
601
626
|
end
|
602
627
|
end
|
603
628
|
|
data/lib/ontomde-core/log.rb
CHANGED
data/lib/ontomde-core/meta.rb
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
|
2
2
|
#require "ontomde-core/exceptions.rb"
|
3
|
-
require
|
3
|
+
require 'singleton'
|
4
4
|
|
5
5
|
# Helper methods to handle rdf ressources as object.
|
6
6
|
module IteratorOrSingleElement
|
7
7
|
def to_s
|
8
|
-
r=
|
9
|
-
sep=
|
8
|
+
r=''
|
9
|
+
sep=''
|
10
10
|
self.each{ |elt|
|
11
11
|
r=r+sep+(elt.to_s)
|
12
|
-
sep=
|
12
|
+
sep=' '
|
13
13
|
}
|
14
14
|
return r
|
15
15
|
end
|
@@ -21,7 +21,7 @@ module IteratorOrSingleElement
|
|
21
21
|
return super(array)
|
22
22
|
end
|
23
23
|
|
24
|
-
STRING_TO_BOOLEAN_HASH={
|
24
|
+
STRING_TO_BOOLEAN_HASH={ 'false' => false, 'true' => true}
|
25
25
|
def other_implem_isTrue?
|
26
26
|
return false if length==0
|
27
27
|
raise Warning.new,"bad data for isTrue?(length=#{length}>1)" if length>1
|
@@ -33,8 +33,8 @@ module IteratorOrSingleElement
|
|
33
33
|
#return false if length==0
|
34
34
|
return false if empty?
|
35
35
|
raise Warning.new,"bad data for isTrue?(length=#{length}>1)" if length>1
|
36
|
-
return false if self[0]==
|
37
|
-
return true if self[0]==
|
36
|
+
return false if self[0]=='false'
|
37
|
+
return true if self[0]=='true'
|
38
38
|
raise Warning.new,"bad data for isTrue?(#{self[0]})" if length>1
|
39
39
|
|
40
40
|
end
|
@@ -89,7 +89,7 @@ class ArrayOrSingleElementEmpty #< ArrayOrSingleElement
|
|
89
89
|
|
90
90
|
# returns ""
|
91
91
|
def to_s
|
92
|
-
return
|
92
|
+
return ''
|
93
93
|
end
|
94
94
|
|
95
95
|
#return true
|
@@ -273,12 +273,12 @@ END
|
|
273
273
|
}
|
274
274
|
|
275
275
|
|
276
|
-
range_array=
|
276
|
+
range_array='['; sep=''
|
277
277
|
range.each { |r|
|
278
278
|
range_array+=sep+r.name #.getRubyModuleName
|
279
|
-
sep=
|
279
|
+
sep=','
|
280
280
|
}
|
281
|
-
range_array+=
|
281
|
+
range_array+=']'
|
282
282
|
|
283
283
|
if (true)
|
284
284
|
ret << %{def #{sym_short}_typeOk?(val)
|
@@ -307,7 +307,7 @@ END
|
|
307
307
|
return rdf_getter_one(@#{sym},false,:#{sym_short})
|
308
308
|
end}
|
309
309
|
|
310
|
-
inv=(sym_short.to_s==
|
310
|
+
inv=(sym_short.to_s=='ext_isReferencedBy') ? '' : 'item.ext_isReferencedBy_add(self) if item.respond_to?(:ext_isReferencedBy_add) '
|
311
311
|
|
312
312
|
ret << %{def #{sym_short}=(v)
|
313
313
|
if v.nil?
|
@@ -348,10 +348,10 @@ end
|
|
348
348
|
|
349
349
|
module Mrdf_Repository
|
350
350
|
def mtk_object_message
|
351
|
-
return
|
351
|
+
return ''
|
352
352
|
end
|
353
353
|
def mtk_related_message
|
354
|
-
return
|
354
|
+
return ''
|
355
355
|
end
|
356
356
|
end
|
357
357
|
|
@@ -368,7 +368,7 @@ END
|
|
368
368
|
#return a string describing object related to this object
|
369
369
|
#(used for error log messages)
|
370
370
|
def mtk_related_message
|
371
|
-
related=
|
371
|
+
related=''
|
372
372
|
ext_isReferencedBy.each { |g|
|
373
373
|
related=related+"** (#{g.class.name}) #{g}\n"
|
374
374
|
}
|