mongoid_oslc 0.0.9 → 0.1.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/lib/mongoid/oslc/config.rb +2 -9
- data/lib/mongoid/oslc/grammar.rb +2 -2
- data/lib/mongoid/oslc/resources.rb +21 -0
- data/lib/mongoid/oslc/version.rb +1 -1
- data/lib/mongoid/oslc.rb +78 -0
- data/mongoid_oslc.gemspec +1 -0
- metadata +19 -8
data/lib/mongoid/oslc/config.rb
CHANGED
@@ -17,8 +17,7 @@ module Mongoid::Oslc
|
|
17
17
|
# need a Class for 3.0
|
18
18
|
class Configuration #:nodoc:
|
19
19
|
include ActiveSupport::Configurable
|
20
|
-
config_accessor :
|
21
|
-
config_accessor :fields_mapping
|
20
|
+
config_accessor :default_namespaces
|
22
21
|
|
23
22
|
def param_name
|
24
23
|
config.param_name.respond_to?(:call) ? config.param_name.call : config.param_name
|
@@ -32,12 +31,6 @@ module Mongoid::Oslc
|
|
32
31
|
|
33
32
|
# this is ugly. why can't we pass the default value to config_accessor...?
|
34
33
|
configure do |config|
|
35
|
-
config.
|
36
|
-
config.fields_mapping = {
|
37
|
-
"dcterms:title" => "title",
|
38
|
-
"dcterms:description" => "description",
|
39
|
-
"dcterms:created" => "created_at",
|
40
|
-
"oslc_cm:closed" => "closed"
|
41
|
-
}
|
34
|
+
config.default_namespaces = [:rtc]
|
42
35
|
end
|
43
36
|
end
|
data/lib/mongoid/oslc/grammar.rb
CHANGED
@@ -116,8 +116,8 @@ module Mongoid
|
|
116
116
|
private
|
117
117
|
|
118
118
|
def field_for(oslc_field)
|
119
|
-
field = Mongoid::Oslc.
|
120
|
-
field ||= oslc_field.split(":")[1] if
|
119
|
+
field = Mongoid::Oslc.resources.mapping[oslc_field].try(:fetch, :name)
|
120
|
+
field ||= oslc_field.split(":")[1] if Mongoid::Oslc.config.default_namespaces.include?(oslc_field.split(":")[0])
|
121
121
|
field
|
122
122
|
end
|
123
123
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Mongoid
|
2
|
+
module Oslc
|
3
|
+
class Resources < Hash
|
4
|
+
def initialize
|
5
|
+
super{|h, k| h[k] = {fields: {}}}
|
6
|
+
end
|
7
|
+
|
8
|
+
def class_for(rdf_type)
|
9
|
+
self.select{|klass,properties| properties[:describe] == rdf_type}.keys.first
|
10
|
+
end
|
11
|
+
|
12
|
+
def domain(rdf_type)
|
13
|
+
self[class_for(rdf_type)][:domain]
|
14
|
+
end
|
15
|
+
|
16
|
+
def mapping
|
17
|
+
self.inject({}){|hash, klass| hash.merge(klass[1][:fields]) }
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/lib/mongoid/oslc/version.rb
CHANGED
data/lib/mongoid/oslc.rb
CHANGED
@@ -1,19 +1,97 @@
|
|
1
1
|
require 'mongoid'
|
2
|
+
require 'oslc'
|
2
3
|
require 'mongoid/oslc/config'
|
3
4
|
require 'mongoid/oslc/version'
|
4
5
|
require 'mongoid/oslc/exceptions'
|
5
6
|
require 'mongoid/oslc/strategy'
|
7
|
+
require 'mongoid/oslc/resources'
|
6
8
|
require 'active_support/concern'
|
7
9
|
|
8
10
|
module Mongoid
|
9
11
|
module Oslc
|
10
12
|
extend ActiveSupport::Concern
|
11
13
|
|
14
|
+
@@resources = Resources.new
|
15
|
+
|
16
|
+
def self.resources
|
17
|
+
@@resources
|
18
|
+
end
|
19
|
+
|
20
|
+
def domain
|
21
|
+
Mongoid::Oslc.resources[self._type][:domain]
|
22
|
+
end
|
23
|
+
|
24
|
+
def describe
|
25
|
+
Mongoid::Oslc.resources[self._type][:describe]
|
26
|
+
end
|
27
|
+
|
28
|
+
def oslc_value(oslc_name)
|
29
|
+
field_properties = Mongoid::Oslc.resources[self._type][:fields][oslc_name]
|
30
|
+
self[field_properties[:name]]
|
31
|
+
end
|
32
|
+
|
12
33
|
module ClassMethods
|
34
|
+
def domain(name)
|
35
|
+
Mongoid::Oslc.resources[self.to_s].merge!(domain: name)
|
36
|
+
end
|
37
|
+
|
38
|
+
def describe(describe)
|
39
|
+
Mongoid::Oslc.resources[self.to_s].merge!(describe: describe)
|
40
|
+
end
|
41
|
+
|
42
|
+
def oslc_field(name, options = {})
|
43
|
+
oslc_options = options_for_oslc(options)
|
44
|
+
field(name, options)
|
45
|
+
register_oslc_field(name, oslc_options)
|
46
|
+
end
|
47
|
+
|
48
|
+
def oslc_embeds_many(name, options = {})
|
49
|
+
oslc_options = options_for_oslc(options)
|
50
|
+
embeds_many(name, options)
|
51
|
+
register_oslc_field(name, oslc_options.merge(type: Array, embedded: true))
|
52
|
+
end
|
53
|
+
|
54
|
+
def oslc_fields
|
55
|
+
(ancestors - included_modules).inject({}) do |hash, ancestor_class|
|
56
|
+
hash.merge(Mongoid::Oslc.resources[ancestor_class.to_s][:fields])
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
13
60
|
def oslc_where(query)
|
14
61
|
mongoid_query = Strategy.to_query(query)
|
15
62
|
where(mongoid_query)
|
16
63
|
end
|
64
|
+
|
65
|
+
def register_oslc_field(name, options)
|
66
|
+
mandatory = options[:mandatory] || false
|
67
|
+
occurs = if mandatory && options[:type] == Array
|
68
|
+
::Oslc::ONE_OR_MANY
|
69
|
+
elsif mandatory
|
70
|
+
::Oslc::EXACTLY_ONE
|
71
|
+
elsif options[:type] == Array
|
72
|
+
::Oslc::ZERO_OR_MANY
|
73
|
+
else
|
74
|
+
::Oslc::ZERO_OR_ONE
|
75
|
+
end
|
76
|
+
|
77
|
+
Mongoid::Oslc.resources[self.to_s][:fields][options[:mapping]] = {
|
78
|
+
name: name,
|
79
|
+
value_type: ::Oslc::VALUE_TYPES[options[:value_type] || fields[name.to_s].type.to_s],
|
80
|
+
read_only: (options[:read_only] || false),
|
81
|
+
occurs: occurs,
|
82
|
+
allowed_values: (options[:allowed_values] || []),
|
83
|
+
embedded: (options[:embedded] ? relations[name.to_s].class_name.constantize : false),
|
84
|
+
range: (options[:range] || [])
|
85
|
+
}
|
86
|
+
end
|
87
|
+
|
88
|
+
private
|
89
|
+
|
90
|
+
def options_for_oslc(options)
|
91
|
+
[:value_type, :read_only, :allowed_values, :mapping, :mandatory, :range].inject({}) do |hash, field|
|
92
|
+
hash.merge(field => options.delete(field))
|
93
|
+
end.merge(type: options[:type])
|
94
|
+
end
|
17
95
|
end
|
18
96
|
end
|
19
97
|
end
|
data/mongoid_oslc.gemspec
CHANGED
@@ -13,6 +13,7 @@ Gem::Specification.new do |gem|
|
|
13
13
|
gem.add_runtime_dependency 'activesupport', '~> 3.0'
|
14
14
|
gem.add_runtime_dependency 'mongoid', '>= 3.0', '< 4.0'
|
15
15
|
gem.add_runtime_dependency 'treetop'
|
16
|
+
gem.add_runtime_dependency 'oslc'
|
16
17
|
|
17
18
|
gem.add_development_dependency('rake', ['>= 0.9.2'])
|
18
19
|
gem.add_development_dependency('rspec', ['~> 2.8'])
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongoid_oslc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-12-05 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
@@ -65,6 +65,22 @@ dependencies:
|
|
65
65
|
- - ! '>='
|
66
66
|
- !ruby/object:Gem::Version
|
67
67
|
version: '0'
|
68
|
+
- !ruby/object:Gem::Dependency
|
69
|
+
name: oslc
|
70
|
+
requirement: !ruby/object:Gem::Requirement
|
71
|
+
none: false
|
72
|
+
requirements:
|
73
|
+
- - ! '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
none: false
|
80
|
+
requirements:
|
81
|
+
- - ! '>='
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0'
|
68
84
|
- !ruby/object:Gem::Dependency
|
69
85
|
name: rake
|
70
86
|
requirement: !ruby/object:Gem::Requirement
|
@@ -114,6 +130,7 @@ files:
|
|
114
130
|
- lib/mongoid/oslc/exceptions.rb
|
115
131
|
- lib/mongoid/oslc/grammar.rb
|
116
132
|
- lib/mongoid/oslc/grammar.treetop
|
133
|
+
- lib/mongoid/oslc/resources.rb
|
117
134
|
- lib/mongoid/oslc/strategy.rb
|
118
135
|
- lib/mongoid/oslc/version.rb
|
119
136
|
- lib/mongoid_oslc.rb
|
@@ -133,18 +150,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
133
150
|
- - ! '>='
|
134
151
|
- !ruby/object:Gem::Version
|
135
152
|
version: '0'
|
136
|
-
segments:
|
137
|
-
- 0
|
138
|
-
hash: 2215901431613586552
|
139
153
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
140
154
|
none: false
|
141
155
|
requirements:
|
142
156
|
- - ! '>='
|
143
157
|
- !ruby/object:Gem::Version
|
144
158
|
version: '0'
|
145
|
-
segments:
|
146
|
-
- 0
|
147
|
-
hash: 2215901431613586552
|
148
159
|
requirements: []
|
149
160
|
rubyforge_project:
|
150
161
|
rubygems_version: 1.8.24
|