active_metadata 0.1.9 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,4 @@
1
1
  development:
2
- persists_with: "active_record"
3
2
  history_skip_fields:
4
3
  - 'id'
5
4
  - 'created_at'
@@ -8,7 +7,6 @@ development:
8
7
  attachment_base_url: "/system/metadata_attachments"
9
8
 
10
9
  test:
11
- persists_with: "active_record"
12
10
  history_skip_fields:
13
11
  - 'id'
14
12
  - 'created_at'
Binary file
data/db/test.sqlite3 CHANGED
Binary file
@@ -5,9 +5,7 @@ module ActiveMetadata
5
5
  ## Define ModelMethods
6
6
  module Base
7
7
 
8
- require 'mongoid' if ActiveMetadata::CONFIG['persists_with'] == 'mongoid'
9
- require 'mongoid_paperclip' if ActiveMetadata::CONFIG['persists_with'] == 'mongoid'
10
- require 'paperclip' if ActiveMetadata::CONFIG['persists_with'] == 'active_record'
8
+ require 'paperclip'
11
9
  require "active_metadata/persistence/persistence"
12
10
 
13
11
  def self.included(klass)
@@ -1,13 +1,9 @@
1
1
  module ActiveMetadata::Persistence
2
2
 
3
- PERSISTS_WITH = ActiveMetadata::CONFIG['persists_with']
4
-
5
- require "active_metadata/persistence/mongoid" if PERSISTS_WITH == 'mongoid'
6
- require "active_metadata/persistence/active_record" if PERSISTS_WITH == 'active_record'
3
+ require "active_metadata/persistence/active_record"
7
4
 
8
5
  def self.included(receiver)
9
- persister = PERSISTS_WITH == 'active_record' ? ActiveMetadata::Persistence::ActiveRecord : ActiveMetadata::Persistence::Mongoid
10
- receiver.send :include, persister
6
+ receiver.send :include, ActiveMetadata::Persistence::ActiveRecord
11
7
  end
12
8
 
13
9
  end
@@ -1,3 +1,3 @@
1
1
  module ActiveMetadata
2
- VERSION = "0.1.9"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -62,14 +62,7 @@ describe ActiveMetadata do
62
62
 
63
63
  end
64
64
 
65
- it "should update a note using update_note_for_name", :mongoid => true do
66
- @document.create_note_for(:name, "Very important note!")
67
- id = @document.notes_for(:name).last._id
68
- @document.update_note(id, "New note value!")
69
- @document.notes_for(:name).last.note.should eq "New note value!"
70
- end
71
-
72
- it "should update a note using update_note_for_name", :active_record => true do
65
+ it "should update a note using update_note_for_name" do
73
66
  @document.create_note_for(:name, "Very important note!")
74
67
  id = @document.notes_for(:name).last.id
75
68
  @document.update_note(id, "New note value!")
@@ -107,16 +100,7 @@ describe ActiveMetadata do
107
100
  @document.notes_for(:name).last.updated_at.should be_a_kind_of Time
108
101
  end
109
102
 
110
- it "should update the updated_at field when a note is updated", :mongoid => true do
111
- @document.create_note_for(:name, "Very important note!")
112
- id = @document.notes_for(:name).last._id
113
- sleep 1.seconds
114
- @document.update_note id, "new note value"
115
- note = @document.notes_for(:name).last
116
- note.updated_at.should > note.created_at
117
- end
118
-
119
- it "should update the updated_at field when a note is updated", :active_record => true do
103
+ it "should update the updated_at field when a note is updated" do
120
104
  @document.create_note_for(:name, "Very important note!")
121
105
  id = @document.notes_for(:name).last.id
122
106
  sleep 1.seconds
@@ -125,19 +109,7 @@ describe ActiveMetadata do
125
109
  note.updated_at.should > note.created_at
126
110
  end
127
111
 
128
- it "should verify that note are saved with the correct model id if metadata_id_from is defined" , :mongoid => true do
129
- # fixtures
130
- @document.create_note_for(:name, "Very important note!")
131
- @section = @document.create_section :title => "new section"
132
- @section.reload
133
- @section.create_note_for(:title, "Very important note for section!")
134
-
135
- # expectations
136
- @document.notes_for(:name).last.label.active_meta.document_id.should eq @document.id
137
- @section.notes_for(:title).last.label.active_meta.document_id.should eq @document.id
138
- end
139
-
140
- it "should verify that note are saved with the correct model id if metadata_id_from is defined" , :active_record => true do
112
+ it "should verify that note are saved with the correct model id if metadata_id_from is defined" do
141
113
  # fixtures
142
114
  @document.create_note_for(:name, "Very important note!")
143
115
  @section = @document.create_section :title => "new section"
@@ -149,45 +121,7 @@ describe ActiveMetadata do
149
121
  @section.notes_for(:title).last.document_id.should eq @document.id
150
122
  end
151
123
 
152
- it "should delete a note passing a bson object as id", :mongoid => true do
153
- #fixtures
154
- 2.times do |i|
155
- @document.create_note_for(:name, "Note number #{i}")
156
- end
157
-
158
- #expectations
159
- notes = @document.notes_for(:name)
160
- notes.count.should eq 2
161
- note_to_be_deleted = notes[0].note
162
-
163
- @document.delete_note_for(:name,notes[0]._id)
164
-
165
- notes = @document.notes_for(:name)
166
- notes.count.should eq 1
167
- notes.first.note.should_not eq note_to_be_deleted
168
-
169
- end
170
-
171
- it "should delete a note passing a string as id", :mongoid => true do
172
- #fixtures
173
- 2.times do |i|
174
- @document.create_note_for(:name, "Note number #{i}")
175
- end
176
-
177
- #expectations
178
- notes = @document.notes_for(:name)
179
- notes.count.should eq 2
180
- note_to_be_deleted = notes[0].note
181
-
182
- @document.delete_note_for(:name,notes[0].id.to_s)
183
-
184
- notes = @document.notes_for(:name)
185
- notes.count.should eq 1
186
- notes.first.note.should_not eq note_to_be_deleted
187
-
188
- end
189
-
190
- it "should delete a note id", :active_record => true do
124
+ it "should delete a note id" do
191
125
  #fixtures
192
126
  2.times do |i|
193
127
  @document.create_note_for(:name, "Note number #{i}")
@@ -218,21 +152,7 @@ describe ActiveMetadata do
218
152
  @document.notes_for(:name).last.note.should eq "Note number 0"
219
153
  end
220
154
 
221
- it "should find a note by id", :mongoid => true, do
222
-
223
- 3.times do |i|
224
- @document.create_note_for(:name, "Note number #{i}")
225
- end
226
-
227
- note = @document.notes_for(:name).last
228
- id = note.id.to_s
229
-
230
- match_note = @document.note_for :name,id
231
- match_note.id.to_s.should eq id
232
-
233
- end
234
-
235
- it "should find a note by id", :active_record => true, do
155
+ it "should find a note by id" do
236
156
 
237
157
  3.times do |i|
238
158
  @document.create_note_for(:name, "Note number #{i}")
@@ -286,20 +206,7 @@ describe ActiveMetadata do
286
206
  @another_doc.history_for(:name).last.value.should eq @another_doc.name
287
207
  end
288
208
 
289
- it "should verify that history is saved with the correct model id if metadata_id_from is defined", :mongoid => true, do
290
- # fixtures
291
- @section = @document.create_section :title => "new section"
292
- @section.reload
293
-
294
- # expectations
295
- @document.history_for(:name).count.should eq(1)
296
- @document.history_for(:name).last.label.active_meta.document_id.should eq @document.id
297
-
298
- @section.history_for(:title).count.should eq(1)
299
- @section.history_for(:title).last.label.active_meta.document_id.should eq @document.id
300
- end
301
-
302
- it "should verify that history is saved with the correct model id if metadata_id_from is defined", :active_record => true, do
209
+ it "should verify that history is saved with the correct model id if metadata_id_from is defined" do
303
210
  # fixtures
304
211
  @section = @document.create_section :title => "new section"
305
212
  @section.reload
@@ -354,12 +261,7 @@ describe ActiveMetadata do
354
261
  @document.attachments_for(:name).should have(1).record
355
262
  end
356
263
 
357
- it "should verify that the attachment metadata id refers to the correct self id", :mongoid => true do
358
- @document.save_attachment_for(:name,@attachment)
359
- @document.attachments_for(:name).last.label.active_meta.document_id.should eq @document.id
360
- end
361
-
362
- it "should verify that the attachment metadata id refers to the correct self id", :active_record => true do
264
+ it "should verify that the attachment metadata id refers to the correct self id" do
363
265
  @document.save_attachment_for(:name,@attachment)
364
266
  @document.attachments_for(:name).last.document_id.should eq @document.id
365
267
  end
@@ -379,68 +281,19 @@ describe ActiveMetadata do
379
281
  @document.attachments_for(:name).last.attach.size.should eq @attachment.size
380
282
  end
381
283
 
382
- it "should verify that the attachment updated_at is correctly saved", :mongoid => true do
383
- @document.save_attachment_for(:name,@attachment)
384
- @document.attachments_for(:name).last.attach.instance_read(:updated_at).should be_a_kind_of DateTime
385
- end
386
-
387
- it "should verify that the attachment updated_at is correctly saved", :active_record => true do
284
+ it "should verify that the attachment updated_at is correctly saved" do
388
285
  @document.save_attachment_for(:name,@attachment)
389
286
  @document.attachments_for(:name).last.attach.instance_read(:updated_at).should be_a_kind_of Time
390
287
  end
391
288
 
392
- it "should verify that the document has been saved in the correct position on filesystem", :active_record => true do
289
+ it "should verify that the document has been saved in the correct position on filesystem" do
393
290
  @document.save_attachment_for(:name,@attachment)
394
291
  att = @document.attachments_for(:name).first
395
292
  expected_path = File.expand_path "#{ActiveMetadata::CONFIG['attachment_base_path']}/#{@document.id}/#{:name.to_s}/#{att.id}/#{@attachment.original_filename}"
396
293
  File.exists?(expected_path).should be_true
397
294
  end
398
295
 
399
- it "should verify that the document has been saved in the correct position on filesystem", :mongoid => true do
400
- @document.save_attachment_for(:name,@attachment)
401
- att = @document.attachments_for(:name).first
402
- expected_path = File.expand_path "#{ActiveMetadata::CONFIG['attachment_base_path']}/#{@document.id}/#{:name.to_s}/#{att.counter}/#{@attachment.original_filename}"
403
- File.exists?(expected_path).should be_true
404
- end
405
-
406
- it "should delete an attachment passing a bson object as id", :mongoid => true do
407
-
408
- #fixtures
409
- 2.times do |i|
410
- @document.save_attachment_for(:name,@attachment)
411
- end
412
-
413
- #expectations
414
- attachments = @document.attachments_for(:name)
415
- attachments.count.should eq 2
416
- attachment_path_to_be_deleted = attachments[0].attach.path
417
-
418
- @document.delete_attachment_for(:name,attachments[0]._id)
419
-
420
- attachments = @document.attachments_for(:name)
421
- attachments.count.should eq 1
422
- attachments.first.attach.path.should_not eq attachment_path_to_be_deleted
423
- end
424
-
425
- it "should delete an attachment passing a string as id", :mongoid => true do
426
- #fixtures
427
- 2.times do |i|
428
- @document.save_attachment_for(:name,@attachment)
429
- end
430
-
431
- #expectations
432
- attachments = @document.attachments_for(:name)
433
- attachments.count.should eq 2
434
- attachment_path_to_be_deleted = attachments[0].attach.path
435
-
436
- @document.delete_attachment_for(:name,attachments[0].id.to_s)
437
-
438
- attachments = @document.attachments_for(:name)
439
- attachments.count.should eq 1
440
- attachments.first.attach.path.should_not eq attachment_path_to_be_deleted
441
- end
442
-
443
- it "should delete an attachment by id", :active_record => true do
296
+ it "should delete an attachment by id" do
444
297
  #fixtures
445
298
  2.times do |i|
446
299
  @document.save_attachment_for(:name,@attachment)
@@ -458,18 +311,7 @@ describe ActiveMetadata do
458
311
  attachments.first.attach.path.should_not eq attachment_path_to_be_deleted
459
312
  end
460
313
 
461
- it "should update an attachment", :mongoid => true do
462
- @document.save_attachment_for(:name,@attachment)
463
- att = @document.attachments_for(:name).last
464
-
465
- @document.update_attachment_for :name,att._id,@attachment2
466
- att2 = @document.attachments_for(:name).last
467
-
468
- File.exists?(att.attach.path).should be_false
469
- File.exists?(att2.attach.path).should be_true
470
- end
471
-
472
- it "should update an attachment", :active_record => true do
314
+ it "should update an attachment" do
473
315
  @document.save_attachment_for(:name,@attachment)
474
316
  att = @document.attachments_for(:name).last
475
317
 
@@ -480,19 +322,7 @@ describe ActiveMetadata do
480
322
  File.exists?(att2.attach.path).should be_true
481
323
  end
482
324
 
483
- it "should verify that field attachment_updated_at is modified after an update", :mongoid => true do
484
- @document.save_attachment_for(:name,@attachment)
485
- att = @document.attachments_for(:name).last
486
-
487
- sleep 1.seconds
488
-
489
- @document.update_attachment_for :name,att._id,@attachment2
490
- att2 = @document.attachments_for(:name).last
491
-
492
- att2.attach.instance_read(:updated_at).should be > att.attach.instance_read(:updated_at)
493
- end
494
-
495
- it "should verify that field attachment_updated_at is modified after an update", :active_record => true do
325
+ it "should verify that field attachment_updated_at is modified after an update" do
496
326
  @document.save_attachment_for(:name,@attachment)
497
327
  att = @document.attachments_for(:name).last
498
328
 
data/spec/spec_helper.rb CHANGED
@@ -4,7 +4,6 @@ require "rails/all"
4
4
  require "logger"
5
5
  require 'rspec/core'
6
6
  require "sqlite3"
7
- require "mongoid"
8
7
  require "rack/test/uploaded_file"
9
8
 
10
9
  $: << File.expand_path(File.dirname(__FILE__) + "/../app")
@@ -26,14 +25,6 @@ ENV["ACTIVE_METADATA_ENV"] ||= 'test'
26
25
  ActiveRecord::Base.establish_connection YAML.load_file("config/database.yml")[ENV["RAILS_ENV"]]
27
26
  ActiveRecord::Base.logger = Logger.new "log/test.log"
28
27
  Rails.logger = ActiveRecord::Base.logger
29
-
30
- #load the config
31
- conf = YAML.load_file('config/active_metadata.yml')[Rails.env]
32
- is_mongo = conf['persists_with'] == 'mongoid'
33
-
34
- if is_mongo
35
- Mongoid.load!("config/mongoid.yml")
36
- end
37
28
 
38
29
  # loading ruby files
39
30
  require "#{File.dirname(__FILE__)}/../lib/engine.rb"
@@ -60,24 +51,12 @@ RSpec.configure do |config|
60
51
  # config.use_transactional_fixtures = true
61
52
 
62
53
 
63
- config.before(:suite) do
64
- if is_mongo
65
- ActiveMeta.create_indexes()
66
- Label.create_indexes()
67
- Note.create_indexes();
68
- end
69
- end
70
-
71
54
  config.before(:each) do
72
55
  Document.delete_all
73
56
  Note.delete_all
74
57
  Watcher.delete_all
75
58
  Attachment.delete_all
76
59
  History.delete_all
77
- if is_mongo
78
- ActiveMeta.delete_all
79
- Label.delete_all
80
- end
81
60
  FileUtils.remove_dir File.expand_path('public/system/') if Dir.exist?(File.expand_path('public/system/'))
82
61
  end
83
62
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_metadata
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2011-10-03 00:00:00.000000000Z
13
+ date: 2011-10-11 00:00:00.000000000Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rspec-rails
17
- requirement: &2157159560 !ruby/object:Gem::Requirement
17
+ requirement: &2156180700 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: '0'
23
23
  type: :development
24
24
  prerelease: false
25
- version_requirements: *2157159560
25
+ version_requirements: *2156180700
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: sqlite3
28
- requirement: &2157156760 !ruby/object:Gem::Requirement
28
+ requirement: &2156178420 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
- version_requirements: *2157156760
36
+ version_requirements: *2156178420
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: sqlite3-ruby
39
- requirement: &2157138060 !ruby/object:Gem::Requirement
39
+ requirement: &2156154920 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ! '>='
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: '0'
45
45
  type: :development
46
46
  prerelease: false
47
- version_requirements: *2157138060
47
+ version_requirements: *2156154920
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: cucumber
50
- requirement: &2157135580 !ruby/object:Gem::Requirement
50
+ requirement: &2156100000 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ! '>='
@@ -55,10 +55,10 @@ dependencies:
55
55
  version: '0'
56
56
  type: :development
57
57
  prerelease: false
58
- version_requirements: *2157135580
58
+ version_requirements: *2156100000
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: ci_reporter
61
- requirement: &2157126060 !ruby/object:Gem::Requirement
61
+ requirement: &2156079680 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - ! '>='
@@ -66,10 +66,10 @@ dependencies:
66
66
  version: '0'
67
67
  type: :development
68
68
  prerelease: false
69
- version_requirements: *2157126060
69
+ version_requirements: *2156079680
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: rails
72
- requirement: &2157122780 !ruby/object:Gem::Requirement
72
+ requirement: &2156049960 !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
75
  - - =
@@ -77,10 +77,10 @@ dependencies:
77
77
  version: 3.0.1
78
78
  type: :runtime
79
79
  prerelease: false
80
- version_requirements: *2157122780
80
+ version_requirements: *2156049960
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: activerecord
83
- requirement: &2157120400 !ruby/object:Gem::Requirement
83
+ requirement: &2156032700 !ruby/object:Gem::Requirement
84
84
  none: false
85
85
  requirements:
86
86
  - - =
@@ -88,32 +88,10 @@ dependencies:
88
88
  version: 3.0.1
89
89
  type: :runtime
90
90
  prerelease: false
91
- version_requirements: *2157120400
91
+ version_requirements: *2156032700
92
92
  - !ruby/object:Gem::Dependency
93
- name: mongoid
94
- requirement: &2157119280 !ruby/object:Gem::Requirement
95
- none: false
96
- requirements:
97
- - - =
98
- - !ruby/object:Gem::Version
99
- version: 2.1.4
100
- type: :runtime
101
- prerelease: false
102
- version_requirements: *2157119280
103
- - !ruby/object:Gem::Dependency
104
- name: mongoid-paperclip
105
- requirement: &2157111740 !ruby/object:Gem::Requirement
106
- none: false
107
- requirements:
108
- - - ! '>='
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
- type: :runtime
112
- prerelease: false
113
- version_requirements: *2157111740
114
- - !ruby/object:Gem::Dependency
115
- name: bson_ext
116
- requirement: &2157110820 !ruby/object:Gem::Requirement
93
+ name: paperclip
94
+ requirement: &2156029320 !ruby/object:Gem::Requirement
117
95
  none: false
118
96
  requirements:
119
97
  - - ! '>='
@@ -121,10 +99,10 @@ dependencies:
121
99
  version: '0'
122
100
  type: :runtime
123
101
  prerelease: false
124
- version_requirements: *2157110820
102
+ version_requirements: *2156029320
125
103
  - !ruby/object:Gem::Dependency
126
104
  name: to_xls
127
- requirement: &2157109560 !ruby/object:Gem::Requirement
105
+ requirement: &2156024620 !ruby/object:Gem::Requirement
128
106
  none: false
129
107
  requirements:
130
108
  - - ! '>='
@@ -132,7 +110,7 @@ dependencies:
132
110
  version: '0'
133
111
  type: :runtime
134
112
  prerelease: false
135
- version_requirements: *2157109560
113
+ version_requirements: *2156024620
136
114
  description: First implementation will write metadata on mongodb
137
115
  email:
138
116
  - acampolonghi@gmail.com
@@ -147,11 +125,6 @@ files:
147
125
  - lib/active_metadata/persistence/active_record/note.rb
148
126
  - lib/active_metadata/persistence/active_record/watcher.rb
149
127
  - lib/active_metadata/persistence/active_record.rb
150
- - lib/active_metadata/persistence/mongoid/attachment.rb
151
- - lib/active_metadata/persistence/mongoid/history.rb
152
- - lib/active_metadata/persistence/mongoid/note.rb
153
- - lib/active_metadata/persistence/mongoid/watcher.rb
154
- - lib/active_metadata/persistence/mongoid.rb
155
128
  - lib/active_metadata/persistence/persistence.rb
156
129
  - lib/active_metadata/railtie.rb
157
130
  - lib/active_metadata/version.rb
@@ -1,45 +0,0 @@
1
- module ActiveMetadata::Persistence::Mongoid::Attachment
2
-
3
- def self.included(receiver)
4
- receiver.send :include, InstanceMethods
5
- end
6
-
7
- module InstanceMethods
8
-
9
- def save_attachment_for(field, file)
10
- label = ActiveMeta.find_or_create_by(:document_id => metadata_id).labels.find_or_create_by(:name => field.to_s)
11
- counter = label.attachments.count > 0 ? label.attachments.last.counter : 0
12
- attachment = Attachment.new(:attach => file, :counter => (counter + 1))
13
- label.attachments << attachment
14
- label.save
15
-
16
- self.send(:send_notification, field, "", attachment.attach.original_filename)
17
- end
18
-
19
- def attachments_for(field)
20
- label = ActiveMeta.find_or_create_by(:document_id => metadata_id).labels.find_or_create_by(:name => field.to_s)
21
- label.attachments.desc(:attach_updated_at).to_a
22
- end
23
-
24
- def delete_attachment_for(field,id)
25
- a = ActiveMeta.find_or_create_by(:document_id => metadata_id).labels.find_or_create_by(:name => field.to_s).attachments.find(id)
26
- filename = a.attach.original_filename
27
- a.destroy
28
-
29
- self.send(:send_notification, field, filename, "")
30
- end
31
-
32
- def update_attachment_for(field, id, newfile)
33
- a = ActiveMeta.find_or_create_by(:document_id => metadata_id).labels.find_or_create_by(:name => field.to_s).attachments.find(id)
34
- old_filename = a.attach.original_filename
35
- a.attach = newfile
36
- a.save
37
- new_filename = a.attach.original_filename
38
-
39
- self.send(:send_notification, field, old_filename, new_filename)
40
- end
41
-
42
- end
43
-
44
- end
45
-
@@ -1,26 +0,0 @@
1
- module ActiveMetadata::Persistence::Mongoid::History
2
-
3
- def self.included(receiver)
4
- receiver.send :include, InstanceMethods
5
- end
6
-
7
- module InstanceMethods
8
-
9
- def save_history
10
- self.changes.each do |key, value|
11
- next if ActiveMetadata::CONFIG['history_skip_fields'].include?(key)
12
-
13
- label = ActiveMeta.find_or_create_by(:document_id => metadata_id).labels.find_or_create_by(:name => key.to_s)
14
- label.histories.create!(:value => value[1], :created_at => Time.now.utc)
15
- end
16
- end
17
-
18
- def history_for field
19
- meta = ActiveMeta.find_or_create_by(:document_id => metadata_id)
20
-
21
- label = meta.labels.find_or_create_by(:name => field.to_s)
22
- label.histories.desc(:created_at).to_a
23
- end
24
-
25
- end
26
- end
@@ -1,48 +0,0 @@
1
- module ActiveMetadata::Persistence::Mongoid::Note
2
-
3
- def self.included(receiver)
4
- receiver.send :include, InstanceMethods
5
- end
6
-
7
- module InstanceMethods
8
-
9
- def create_note_for(field, note, created_by=nil)
10
- raise RuntimeError, "The object id MUST be valued" unless self.id
11
- label = ActiveMeta.find_or_create_by(:document_id => metadata_id).labels.find_or_create_by(:name => field.to_s)
12
- label.notes.create!(:note => note, :created_by => created_by, :created_at => Time.now.utc, :updated_at => Time.now.utc)
13
-
14
- # BEWARE: I'm not checking the send_notification method existence
15
- # this notification should be asynch
16
- self.send(:send_notification, field, "", note)
17
- end
18
-
19
- def update_note(id, note, updated_by=nil)
20
- n = ActiveMeta.find_or_create_by(:document_id => metadata_id).labels.find_or_create_by(:name => 'name').notes.find id
21
- old_value = n.note
22
- n.update_attributes :note => note, :updated_by => updated_by, :updated_at => Time.now.utc
23
-
24
- self.send(:send_notification, n.label, old_value, note)
25
- end
26
-
27
- def notes_for(field)
28
- label = ActiveMeta.find_or_create_by(:document_id => metadata_id).labels.find_or_create_by(:name => field.to_s)
29
- label.notes.desc(:updated_at).to_a
30
- end
31
-
32
- def note_for(field,id)
33
- label = ActiveMeta.find_or_create_by(:document_id => metadata_id).labels.find_or_create_by(:name => field.to_s)
34
- label.notes.find(id)
35
- end
36
-
37
- def create_notes_for(field,notes)
38
- notes.each { |note| create_note_for field, note }
39
- end
40
-
41
- def delete_note_for(field,id)
42
- n = ActiveMeta.find_or_create_by(:document_id => metadata_id).labels.find_or_create_by(:name => field.to_s).notes.find(id)
43
- old_value = n.note
44
- n.destroy
45
- self.send(:send_notification, field, old_value, "")
46
- end
47
- end
48
- end
@@ -1,43 +0,0 @@
1
- module ActiveMetadata::Persistence::Mongoid::Watcher
2
-
3
- def self.included(receiver)
4
- receiver.send :include, InstanceMethods
5
- end
6
-
7
- module InstanceMethods
8
- def create_watcher_for(field, owner)
9
- raise RuntimeError, "The object id MUST be valued" unless self.id
10
-
11
- label_path(field).watchers.create!(:owner_id => owner.id, :created_at => Time.now.utc, :updated_at => Time.now.utc)
12
-
13
- owner.create_inbox unless owner.inbox # ensure that an inbox is present
14
- end
15
-
16
- def watchers_for(field)
17
- label_path(field).watchers.asc(:created_at).to_a
18
- end
19
-
20
- def delete_watcher_for(field, owner)
21
- #TODO
22
- end
23
-
24
- def is_watched_by(field,owner)
25
- #TODO
26
- end
27
-
28
- # This is a callback method of the after_save of the ActiveRecord
29
- # object.
30
- # TODO: It should definetly be decoupled in time from the save of
31
- # the alerting system
32
- def on_save_watcher_callback
33
- self.changes.each do |field, values|
34
- send_notification(field, values.first, values.last)
35
- end
36
- end
37
-
38
- def send_notification(field, old_value, new_value)
39
- watchers_for(field).each { |watch| watch.notify_changes(field, old_value, new_value, self.class, self.id) }
40
- end
41
- end
42
-
43
- end
@@ -1,30 +0,0 @@
1
- module ActiveMetadata::Persistence::Mongoid
2
-
3
- require "active_metadata/persistence/mongoid/attachment"
4
- require "active_metadata/persistence/mongoid/note"
5
- require "active_metadata/persistence/mongoid/history"
6
- require "active_metadata/persistence/mongoid/watcher"
7
- require "model/mongoid/active_meta"
8
- require "model/mongoid/label"
9
- require "model/mongoid/note"
10
- require "model/mongoid/history"
11
- require "model/mongoid/attachment"
12
- require "model/mongoid/watcher"
13
-
14
- def self.included(receiver)
15
- receiver.send :include, InstanceMethods
16
- end
17
-
18
- module InstanceMethods
19
-
20
- include ActiveMetadata::Persistence::Mongoid::Note
21
- include ActiveMetadata::Persistence::Mongoid::History
22
- include ActiveMetadata::Persistence::Mongoid::Attachment
23
- include ActiveMetadata::Persistence::Mongoid::Watcher
24
-
25
- def label_path(field_name)
26
- ActiveMeta.find_or_create_by(:document_id => metadata_id).labels.find_or_create_by(:name => field_name.to_s)
27
- end
28
-
29
- end
30
- end