infopark_reactor_migrations 1.5.1
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/.gitignore +5 -0
- data/Gemfile +4 -0
- data/LICENSE +165 -0
- data/README +64 -0
- data/Rakefile +19 -0
- data/infopark_reactor_migrations.gemspec +27 -0
- data/lib/generators/cm/migration/USAGE +8 -0
- data/lib/generators/cm/migration/migration_generator.rb +15 -0
- data/lib/generators/cm/migration/templates/template.rb +7 -0
- data/lib/infopark_reactor_migrations.rb +29 -0
- data/lib/reactor/cm/attribute.rb +84 -0
- data/lib/reactor/cm/bridge.rb +49 -0
- data/lib/reactor/cm/editorial_group.rb +22 -0
- data/lib/reactor/cm/group.rb +270 -0
- data/lib/reactor/cm/language.rb +56 -0
- data/lib/reactor/cm/link.rb +132 -0
- data/lib/reactor/cm/live_group.rb +22 -0
- data/lib/reactor/cm/missing_credentials.rb +7 -0
- data/lib/reactor/cm/obj.rb +402 -0
- data/lib/reactor/cm/obj_class.rb +186 -0
- data/lib/reactor/cm/object_base.rb +164 -0
- data/lib/reactor/cm/user.rb +100 -0
- data/lib/reactor/cm/workflow.rb +40 -0
- data/lib/reactor/cm/xml_attribute.rb +35 -0
- data/lib/reactor/cm/xml_markup.rb +85 -0
- data/lib/reactor/cm/xml_request.rb +82 -0
- data/lib/reactor/cm/xml_request_error.rb +16 -0
- data/lib/reactor/cm/xml_response.rb +41 -0
- data/lib/reactor/configuration.rb +7 -0
- data/lib/reactor/migration.rb +82 -0
- data/lib/reactor/migrations/railtie.rb +10 -0
- data/lib/reactor/migrations/version.rb +5 -0
- data/lib/reactor/plans/common_attribute.rb +32 -0
- data/lib/reactor/plans/common_group.rb +44 -0
- data/lib/reactor/plans/common_obj_class.rb +69 -0
- data/lib/reactor/plans/create_attribute.rb +32 -0
- data/lib/reactor/plans/create_group.rb +34 -0
- data/lib/reactor/plans/create_obj.rb +48 -0
- data/lib/reactor/plans/create_obj_class.rb +28 -0
- data/lib/reactor/plans/delete_attribute.rb +23 -0
- data/lib/reactor/plans/delete_group.rb +28 -0
- data/lib/reactor/plans/delete_obj.rb +22 -0
- data/lib/reactor/plans/delete_obj_class.rb +22 -0
- data/lib/reactor/plans/prepared.rb +15 -0
- data/lib/reactor/plans/rename_group.rb +32 -0
- data/lib/reactor/plans/rename_obj_class.rb +24 -0
- data/lib/reactor/plans/update_attribute.rb +23 -0
- data/lib/reactor/plans/update_group.rb +30 -0
- data/lib/reactor/plans/update_obj.rb +30 -0
- data/lib/reactor/plans/update_obj_class.rb +26 -0
- data/lib/reactor/tools/migrator.rb +135 -0
- data/lib/reactor/tools/response_handler/base.rb +22 -0
- data/lib/reactor/tools/response_handler/string.rb +19 -0
- data/lib/reactor/tools/response_handler/xml_attribute.rb +52 -0
- data/lib/reactor/tools/smart_xml_logger.rb +69 -0
- data/lib/reactor/tools/sower.rb +89 -0
- data/lib/reactor/tools/uploader.rb +131 -0
- data/lib/reactor/tools/versioner.rb +120 -0
- data/lib/reactor/tools/xml_attributes.rb +70 -0
- data/lib/tasks/cm_migrate.rake +8 -0
- data/lib/tasks/cm_seeds.rake +41 -0
- metadata +193 -0
@@ -0,0 +1,32 @@
|
|
1
|
+
module Reactor
|
2
|
+
module Plans
|
3
|
+
class CommonAttribute
|
4
|
+
include Prepared
|
5
|
+
|
6
|
+
ALLOWED_PARAMS = [:callback, :helpText, :maxSize, :minSize,
|
7
|
+
:title, :values]
|
8
|
+
|
9
|
+
def initialize
|
10
|
+
@params = {}
|
11
|
+
end
|
12
|
+
|
13
|
+
def set(key,value)
|
14
|
+
@params[key.to_sym] = value
|
15
|
+
end
|
16
|
+
|
17
|
+
def migrate!
|
18
|
+
raise "#{self.class.name} did not implement migrate!"
|
19
|
+
end
|
20
|
+
|
21
|
+
protected
|
22
|
+
def prepare_params!(attribute=nil)
|
23
|
+
@params.keys.each{|k| error("unknown parameter: #{k}") unless ALLOWED_PARAMS.include? k}
|
24
|
+
end
|
25
|
+
|
26
|
+
def migrate_params!(attribute)
|
27
|
+
@params.each{|k,v|attribute.set(k,v)}
|
28
|
+
attribute.save!
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module Reactor
|
2
|
+
|
3
|
+
module Plans
|
4
|
+
|
5
|
+
class CommonGroup
|
6
|
+
|
7
|
+
include Prepared
|
8
|
+
|
9
|
+
ALLOWED_PARAMS = [
|
10
|
+
:users,
|
11
|
+
:global_permissions,
|
12
|
+
:real_name,
|
13
|
+
:owner,
|
14
|
+
]
|
15
|
+
|
16
|
+
def initialize
|
17
|
+
@params = {}
|
18
|
+
end
|
19
|
+
|
20
|
+
def set(key, value)
|
21
|
+
@params[key.to_sym] = value
|
22
|
+
end
|
23
|
+
|
24
|
+
def migrate!
|
25
|
+
raise "#{self.class.name} did not implement migrate!"
|
26
|
+
end
|
27
|
+
|
28
|
+
protected
|
29
|
+
|
30
|
+
def prepare_params!(group = nil)
|
31
|
+
@params.keys.each { |key| error("unknown parameter: #{key}") unless ALLOWED_PARAMS.include?(key) }
|
32
|
+
end
|
33
|
+
|
34
|
+
def migrate_params!(group)
|
35
|
+
@params.each { |key, value| group.send("#{key}=", value) }
|
36
|
+
|
37
|
+
group.save!
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
module Reactor
|
2
|
+
module Plans
|
3
|
+
class CommonObjClass
|
4
|
+
include Prepared
|
5
|
+
|
6
|
+
ALLOWED_PARAMS = [:completionCheck, :isEnabled, :recordSetCallback, :title,
|
7
|
+
:validContentTypes, :workflowModification]
|
8
|
+
|
9
|
+
def initialize
|
10
|
+
@take_attrs = []
|
11
|
+
@drop_attrs = []
|
12
|
+
@mandatory_attrs = []
|
13
|
+
@mandatory_drop_attrs = []
|
14
|
+
@preset_attrs = {}
|
15
|
+
@params = {}
|
16
|
+
@params_options = {}
|
17
|
+
end
|
18
|
+
|
19
|
+
def set(key, value, options={})
|
20
|
+
@params_options[key.to_sym] = options
|
21
|
+
@params[key.to_sym] = value
|
22
|
+
end
|
23
|
+
|
24
|
+
def take(attr_name, opts={})
|
25
|
+
attr_name = attr_name.to_s
|
26
|
+
@take_attrs << attr_name
|
27
|
+
@drop_attrs.delete(attr_name)
|
28
|
+
@mandatory_attrs << attr_name if opts[:mandatory] == true
|
29
|
+
@mandatory_drop_attrs << attr_name if opts[:mandatory] == false
|
30
|
+
@preset_attrs[attr_name] = opts[:preset] if opts.key? :preset
|
31
|
+
end
|
32
|
+
|
33
|
+
def drop(attr_name, opts={})
|
34
|
+
attr_name = attr_name.to_s
|
35
|
+
@drop_attrs << attr_name
|
36
|
+
@take_attrs.delete(attr_name)
|
37
|
+
@mandatory_attrs.delete(attr_name)
|
38
|
+
@preset_attrs.delete(attr_name)
|
39
|
+
end
|
40
|
+
|
41
|
+
def migrate!
|
42
|
+
raise "#{self.class.name} did not implement migrate!"
|
43
|
+
end
|
44
|
+
|
45
|
+
protected
|
46
|
+
def prepare_attrs!(klass=nil)
|
47
|
+
@take_attrs.each do |attr|
|
48
|
+
error("attribute doesn't exist #{attr}") unless Reactor::Cm::Attribute.exists?(attr)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def prepare_params!(klass=nil)
|
53
|
+
@params.keys.each{|k| error("unknown parameter: #{k}") unless ALLOWED_PARAMS.include? k}
|
54
|
+
end
|
55
|
+
|
56
|
+
def migrate_attrs!(klass)
|
57
|
+
attrs = (klass.attributes + @take_attrs).uniq - @drop_attrs
|
58
|
+
klass.attributes = attrs
|
59
|
+
klass.mandatory_attributes = ((klass.mandatory_attributes + @mandatory_attrs).uniq - @drop_attrs - @mandatory_drop_attrs)
|
60
|
+
end
|
61
|
+
|
62
|
+
def migrate_params!(klass)
|
63
|
+
@params.each{|k,v|klass.set(k,v,@params_options[k])}
|
64
|
+
klass.preset_attributes.merge(@preset_attrs).each{|k,v|klass.preset(k,v)}
|
65
|
+
klass.save!
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'reactor/plans/common_attribute'
|
2
|
+
|
3
|
+
module Reactor
|
4
|
+
module Plans
|
5
|
+
class CreateAttribute < CommonAttribute
|
6
|
+
def initialize(*args)
|
7
|
+
super()
|
8
|
+
(name, type), options = separate_arguments(*args)
|
9
|
+
@name = name || options[:name]
|
10
|
+
@type = type || options[:type]
|
11
|
+
# Default values for attributes:
|
12
|
+
# isSearchableInCM: false
|
13
|
+
# isSearchableInTE: false
|
14
|
+
set(:isSearchableInCM, 0)
|
15
|
+
set(:isSearchableInTE, 0)
|
16
|
+
end
|
17
|
+
|
18
|
+
def prepare!
|
19
|
+
error("name ist nil") if @name.nil?
|
20
|
+
error("type is nil") if @type.nil?
|
21
|
+
# TODO: Type check
|
22
|
+
prepare_params!(nil)
|
23
|
+
end
|
24
|
+
|
25
|
+
def migrate!
|
26
|
+
attrib = Reactor::Cm::Attribute.create(@name, @type)
|
27
|
+
migrate_params!(attrib)
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'reactor/plans/common_group'
|
2
|
+
|
3
|
+
module Reactor
|
4
|
+
|
5
|
+
module Plans
|
6
|
+
|
7
|
+
class CreateGroup < CommonGroup
|
8
|
+
|
9
|
+
def initialize(*args)
|
10
|
+
super()
|
11
|
+
|
12
|
+
(name, _), options = separate_arguments(*args)
|
13
|
+
|
14
|
+
@name = name || options[:name]
|
15
|
+
|
16
|
+
set(:name, @name)
|
17
|
+
end
|
18
|
+
|
19
|
+
def prepare!
|
20
|
+
error('name is nil') if @name.nil?
|
21
|
+
error("group #{@name} already exists") if Reactor::Cm::Group.exists?(@name)
|
22
|
+
|
23
|
+
prepare_params!(nil)
|
24
|
+
end
|
25
|
+
|
26
|
+
def migrate!
|
27
|
+
Reactor::Cm::Group.create(@params)
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
module Reactor
|
2
|
+
module Plans
|
3
|
+
class CreateObj
|
4
|
+
|
5
|
+
def set(key, value)
|
6
|
+
@attrs[key.to_sym] = value
|
7
|
+
end
|
8
|
+
|
9
|
+
def initialize(opts={})
|
10
|
+
@name = opts[:name]
|
11
|
+
@parent = opts[:parent]
|
12
|
+
@objClass = opts[:objClass]
|
13
|
+
@attrs = {}
|
14
|
+
@ignoreExisting = opts[:ignoreExisting]
|
15
|
+
end
|
16
|
+
|
17
|
+
def prepare!
|
18
|
+
raise "#{self.class.name}: name is nil" if @name.nil?
|
19
|
+
raise "#{self.class.name}: parent is nil" if @parent.nil?
|
20
|
+
raise "#{self.class.name}: objClass is nil" if @objClass.nil?
|
21
|
+
raise "#{self.class.name}: parent does not exist" if not Reactor::Cm::Obj.exists?(@parent)
|
22
|
+
raise "#{self.class.name}: obj with name #{@name} already exists" if (!@ignoreExisting) && Reactor::Cm::Obj.exists?(path)
|
23
|
+
=begin
|
24
|
+
raise "#{self.class.name}: objClass #{@objClass} not found" if not Reactor::Cm::ObjClass.exists?(@objClass)
|
25
|
+
@attrs.keys.each do |attr|
|
26
|
+
raise "#{self.class.name}: attr #{attr} not found for objClass #{@objClass}" if not Reactor::Cm::ObjClass.has_attribute?(attr)
|
27
|
+
end
|
28
|
+
=end
|
29
|
+
# ...?
|
30
|
+
end
|
31
|
+
|
32
|
+
def migrate!
|
33
|
+
return true if (@ignoreExisting) && Reactor::Cm::Obj.exists?(path)
|
34
|
+
@obj = Cm::Obj.create(@name, @parent, @objClass)
|
35
|
+
@attrs.each do |key,value|
|
36
|
+
@obj.set(key,value)
|
37
|
+
end
|
38
|
+
@obj.save!
|
39
|
+
@obj.release!
|
40
|
+
end
|
41
|
+
|
42
|
+
def path
|
43
|
+
File.join(@parent, @name)
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'reactor/plans/common_obj_class'
|
2
|
+
|
3
|
+
module Reactor
|
4
|
+
module Plans
|
5
|
+
class CreateObjClass < CommonObjClass
|
6
|
+
def initialize(*args)
|
7
|
+
super()
|
8
|
+
(name, type), options = separate_arguments(*args)
|
9
|
+
@name = name || options[:name]
|
10
|
+
@type = type || options[:objType] || options[:type]
|
11
|
+
end
|
12
|
+
|
13
|
+
def prepare!
|
14
|
+
error("name is nil") if @name.nil?
|
15
|
+
error("type is nil") if @type.nil?
|
16
|
+
error("objClass #{@name} already exists") if Reactor::Cm::ObjClass.exists?(@name)
|
17
|
+
prepare_attrs!(nil)
|
18
|
+
prepare_params!(nil)
|
19
|
+
end
|
20
|
+
|
21
|
+
def migrate!
|
22
|
+
klass = Reactor::Cm::ObjClass.create(@name, @type)
|
23
|
+
migrate_attrs!(klass)
|
24
|
+
migrate_params!(klass)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Reactor
|
2
|
+
module Plans
|
3
|
+
class DeleteAttribute < CommonAttribute
|
4
|
+
def initialize(*args)
|
5
|
+
super()
|
6
|
+
(name, x), options = separate_arguments(*args)
|
7
|
+
@name = name || options[:name]
|
8
|
+
end
|
9
|
+
|
10
|
+
def prepare!
|
11
|
+
error("name is nil") if @name.nil?
|
12
|
+
error("attribute #{@name} does not exist") if not Reactor::Cm::Attribute.exists?(@name)
|
13
|
+
# TODO: check used..
|
14
|
+
end
|
15
|
+
|
16
|
+
def migrate!
|
17
|
+
attrib = Reactor::Cm::Attribute.get(@name)
|
18
|
+
attrib.delete!
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Reactor
|
2
|
+
|
3
|
+
module Plans
|
4
|
+
|
5
|
+
class DeleteGroup < CommonGroup
|
6
|
+
|
7
|
+
def initialize(*args)
|
8
|
+
super()
|
9
|
+
|
10
|
+
(name, _), options = separate_arguments(*args)
|
11
|
+
@name = name || options[:name]
|
12
|
+
end
|
13
|
+
|
14
|
+
def prepare!
|
15
|
+
error('name is nil') if @name.nil?
|
16
|
+
error("group #{@name} does not exist") unless Reactor::Cm::Group.exists?(@name)
|
17
|
+
end
|
18
|
+
|
19
|
+
def migrate!
|
20
|
+
group = Reactor::Cm::Group.get(@name)
|
21
|
+
group.delete!
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'reactor/plans/prepared'
|
2
|
+
|
3
|
+
module Reactor
|
4
|
+
module Plans
|
5
|
+
class DeleteObj
|
6
|
+
include Prepared
|
7
|
+
|
8
|
+
def initialize(opts={})
|
9
|
+
@key = opts[:obj_id] || opts[:path]
|
10
|
+
end
|
11
|
+
|
12
|
+
def prepare!
|
13
|
+
error("object (key=#{@key}) not found") if not Reactor::Cm::Obj.exists?(@key)
|
14
|
+
end
|
15
|
+
|
16
|
+
def migrate!
|
17
|
+
obj = Reactor::Cm::Obj.get(@key)
|
18
|
+
obj.delete!
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Reactor
|
2
|
+
module Plans
|
3
|
+
class DeleteObjClass < CommonObjClass
|
4
|
+
include Prepared
|
5
|
+
|
6
|
+
def initialize(*args)
|
7
|
+
super()
|
8
|
+
(name, x), options = separate_arguments(*args)
|
9
|
+
@name = name || options[:name]
|
10
|
+
end
|
11
|
+
|
12
|
+
def prepare!
|
13
|
+
error("objClass #{@name} not found") if not Reactor::Cm::ObjClass.exists?(@name)
|
14
|
+
end
|
15
|
+
|
16
|
+
def migrate!
|
17
|
+
klass = Reactor::Cm::ObjClass.get(@name)
|
18
|
+
klass.delete!
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Reactor
|
2
|
+
module Plans
|
3
|
+
module Prepared
|
4
|
+
def error(message)
|
5
|
+
"#{self.class.name}: #{message}"
|
6
|
+
end
|
7
|
+
|
8
|
+
def separate_arguments(*args)
|
9
|
+
array_args = args.select {|a| !a.is_a?(Hash) }
|
10
|
+
hash_args = args.select {|a| a.is_a?(Hash) }.reduce({}, &:merge)
|
11
|
+
return array_args, hash_args
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Reactor
|
2
|
+
|
3
|
+
module Plans
|
4
|
+
|
5
|
+
class RenameGroup
|
6
|
+
|
7
|
+
include Prepared
|
8
|
+
|
9
|
+
def initialize(*args)
|
10
|
+
(from, to), options = separate_arguments(*args)
|
11
|
+
|
12
|
+
@from = from || options[:from]
|
13
|
+
@to = to || options[:to]
|
14
|
+
end
|
15
|
+
|
16
|
+
def prepare!
|
17
|
+
error('from is nil') if @from.nil?
|
18
|
+
error('to is nil') if @to.nil?
|
19
|
+
error('from does not exist') unless Reactor::Cm::Group.exists?(@from)
|
20
|
+
error('to does exist') if Reactor::Cm::Group.exists?(@to)
|
21
|
+
end
|
22
|
+
|
23
|
+
def migrate!
|
24
|
+
group = Reactor::Cm::Group.get(@from)
|
25
|
+
group.rename!(@to)
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Reactor
|
2
|
+
module Plans
|
3
|
+
class RenameObjClass
|
4
|
+
include Prepared
|
5
|
+
|
6
|
+
def initialize(*args)
|
7
|
+
(from, to), options = separate_arguments(*args)
|
8
|
+
@from = from || options[:from]
|
9
|
+
@to = to || options[:to]
|
10
|
+
end
|
11
|
+
|
12
|
+
def prepare!
|
13
|
+
error("from is nil") if @from.nil?
|
14
|
+
error("to is nil") if @to.nil?
|
15
|
+
error("from does not exist") if not Reactor::Cm::ObjClass.exists?(@from)
|
16
|
+
error("to does exist") if Reactor::Cm::ObjClass.exists?(@to)
|
17
|
+
end
|
18
|
+
|
19
|
+
def migrate!
|
20
|
+
Reactor::Cm::ObjClass.rename(@from, @to)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Reactor
|
2
|
+
module Plans
|
3
|
+
class UpdateAttribute < CommonAttribute
|
4
|
+
def initialize(*args)
|
5
|
+
super()
|
6
|
+
(name, x), options = separate_arguments(*args)
|
7
|
+
@name = name || options[:name]
|
8
|
+
end
|
9
|
+
|
10
|
+
def prepapre!
|
11
|
+
error("name is nil") if @name.nil?
|
12
|
+
error("attribute #{@name} not found") if not Reactor::Cm::Attribute.exists?(@name)
|
13
|
+
prepare_params!(nil)
|
14
|
+
end
|
15
|
+
|
16
|
+
def migrate!
|
17
|
+
attrib = Reactor::Cm::Attribute.get(@name)
|
18
|
+
migrate_params!(attrib)
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Reactor
|
2
|
+
|
3
|
+
module Plans
|
4
|
+
|
5
|
+
class UpdateGroup < CommonGroup
|
6
|
+
|
7
|
+
def initialize(*args)
|
8
|
+
super()
|
9
|
+
|
10
|
+
(name, _), options = separate_arguments(*args)
|
11
|
+
@name = name || options[:name]
|
12
|
+
end
|
13
|
+
|
14
|
+
def prepapre!
|
15
|
+
error('name is nil') if @name.nil?
|
16
|
+
error("group #{@name} not found") unless Reactor::Cm::Group.exists?(@name)
|
17
|
+
|
18
|
+
prepare_params!(nil)
|
19
|
+
end
|
20
|
+
|
21
|
+
def migrate!
|
22
|
+
group = Reactor::Cm::Group.get(@name)
|
23
|
+
migrate_params!(group)
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Reactor
|
2
|
+
module Plans
|
3
|
+
class UpdateObj
|
4
|
+
include Prepared
|
5
|
+
|
6
|
+
def initialize(opts={})
|
7
|
+
@key = opts[:obj_id] || opts[:path]
|
8
|
+
@attrs = {}
|
9
|
+
end
|
10
|
+
|
11
|
+
def set(key, value)
|
12
|
+
@attrs[key.to_sym] = value
|
13
|
+
end
|
14
|
+
|
15
|
+
def prepare!
|
16
|
+
error("object (key=#{@key}) not found") if not Reactor::Cm::Obj.exists?(@key)
|
17
|
+
#TODO: attribute check
|
18
|
+
end
|
19
|
+
|
20
|
+
def migrate!
|
21
|
+
obj = Reactor::Cm::Obj.get(@key)
|
22
|
+
@attrs.each do |key,value|
|
23
|
+
@obj.set(key,value)
|
24
|
+
end
|
25
|
+
@obj.save!
|
26
|
+
@obj.release!
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Reactor
|
2
|
+
module Plans
|
3
|
+
class UpdateObjClass < CommonObjClass
|
4
|
+
include Prepared
|
5
|
+
|
6
|
+
def initialize(*args)
|
7
|
+
super()
|
8
|
+
(name, x), options = separate_arguments(*args)
|
9
|
+
@name = name || options[:name]
|
10
|
+
end
|
11
|
+
|
12
|
+
def prepare!
|
13
|
+
error("objClass #{@name} not found") if Reactor::Cm::ObjClass.exists?(@name)
|
14
|
+
@klass = Reactor::Cm::ObjClass.get(@name)
|
15
|
+
prepare_attrs!(@klass)
|
16
|
+
prepare_params!(@klass)
|
17
|
+
end
|
18
|
+
|
19
|
+
def migrate!
|
20
|
+
migrate_attrs!(@klass)
|
21
|
+
migrate_params!(@klass)
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|