Class: Fiona7::TypeRegister
- Inherits:
-
Object
- Object
- Fiona7::TypeRegister
show all
- Includes:
- Singleton
- Defined in:
- lib/fiona7/type_register.rb
Defined Under Namespace
Classes: AdHocTypeDefinition, TypeDefinition
Constant Summary
collapse
- TYPE_MAP =
{
link: :linklist,
reference: :linklist,
referencelist: :linklist,
widgetlist: :linklist,
binary: :linklist,
number: :string,
stringlist: :text
}.freeze
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
Returns a new instance of TypeRegister.
123
124
125
126
|
# File 'lib/fiona7/type_register.rb', line 123
def initialize
self.cms_defs = {}
self.usr_defs = {}
end
|
Instance Attribute Details
#cms_defs ⇒ Object
Returns the value of attribute cms_defs.
120
121
122
|
# File 'lib/fiona7/type_register.rb', line 120
def cms_defs
@cms_defs
end
|
#usr_defs ⇒ Object
Returns the value of attribute usr_defs.
121
122
123
|
# File 'lib/fiona7/type_register.rb', line 121
def usr_defs
@usr_defs
end
|
Instance Method Details
#ad_hoc_synchronize(type_definition) ⇒ Object
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
|
# File 'lib/fiona7/type_register.rb', line 167
def ad_hoc_synchronize(type_definition)
obj_class = type_definition.name
existing_definition = self.usr_defs[obj_class]
if existing_definition
type_definition = existing_definition.merge(type_definition)
else
self.usr_defs[obj_class] = type_definition
end
return if true &&
self.cms_def_present?(obj_class) &&
defs_compatible?(self.cms_defs[obj_class], type_definition)
Rails.logger.warn "Ad hoc synchronization required of #{type_definition.name}"
self.synchronize(obj_class)
self.load(obj_class)
end
|
#add_usr_attr(obj_class, name, type, values = nil) ⇒ Object
162
163
164
165
|
# File 'lib/fiona7/type_register.rb', line 162
def add_usr_attr(obj_class, name, type, values=nil)
self.usr_defs[obj_class] ||= TypeDefinition.new(obj_class)
self.usr_defs[obj_class].add_attr(name, type, nil, nil, values)
end
|
#read(obj_class) ⇒ Object
147
148
149
150
151
152
|
# File 'lib/fiona7/type_register.rb', line 147
def read(obj_class)
if !self.read?(obj_class)
self.load(obj_class)
end
self.cms_defs[obj_class]
end
|
#read?(obj_class) ⇒ Boolean
128
129
130
|
# File 'lib/fiona7/type_register.rb', line 128
def read?(obj_class)
self.cms_def_present?(obj_class)
end
|
#read_all ⇒ Object
132
133
134
|
# File 'lib/fiona7/type_register.rb', line 132
def read_all
self.cms_defs.values
end
|
#read_mangled(obj_class) ⇒ Object
#write(obj_class) ⇒ Object
154
155
156
157
158
159
160
|
# File 'lib/fiona7/type_register.rb', line 154
def write(obj_class)
if !self.write?(obj_class)
self.synchronize(obj_class)
self.load(obj_class)
end
self.cms_defs[obj_class]
end
|
#write?(obj_class) ⇒ Boolean
136
137
138
139
140
141
|
# File 'lib/fiona7/type_register.rb', line 136
def write?(obj_class)
true &&
self.usr_def_present?(obj_class) &&
self.cms_def_present?(obj_class) &&
self.defs_compatible?(self.cms_defs[obj_class], self.usr_defs[obj_class])
end
|