Module: ComponentTransfer
  
  
  
  
  
    
      - Extended by:
 
      - JSONModel
 
      
    
  
    
      - Includes:
 
      - JSONModel
 
      
    
  
  
  
    - Defined in:
 
    - backend/app/lib/component_transfer.rb
 
  
Defined Under Namespace
  
    
      Modules: ResponseHelpers
    
  
    
  
    
  
  
    
      Class Method Summary
      (collapse)
    
    
  
  
  
  
  
  
  
  
  
  Methods included from JSONModel
  JSONModel, JSONModel, add_error_handler, all, allow_unmapped_enum_value, backend_url, client_mode?, custom_validations, destroy_model, enum_default_value, enum_values, handle_error, init, load_schema, models, models, parse_jsonmodel_ref, parse_reference, repository, repository_for, schema_src, set_repository, strict_mode, strict_mode?, with_repository
  
    Class Method Details
    
      
  
  
    + (Object) deep_transfer(new_resource_id, obj) 
  
  
  
  
    
      
59
60
61
62
63
64
65 
     | 
    
      # File 'backend/app/lib/component_transfer.rb', line 59
def self.deep_transfer(new_resource_id, obj)
  ArchivalObject.this_repo.filter(:root_record_id => obj.root_record_id, :parent_id => obj.id).each do |child|
    deep_transfer(new_resource_id, child)
    child.root_record_id = new_resource_id
    child.save
  end
end
     | 
  
 
    
      
  
  
    + (Object) included(base) 
  
  
  
  
    
      
6
7
8 
     | 
    
      # File 'backend/app/lib/component_transfer.rb', line 6
def self.included(base)
  base.extend(JSONModel)
end
 
     | 
  
 
    
      
  
  
    + (Object) transfer(target_resource_uri, archival_object_uri) 
  
  
  
  
    
      
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 
     | 
    
      # File 'backend/app/lib/component_transfer.rb', line 23
def self.transfer(target_resource_uri, archival_object_uri)
  id = JSONModel(:archival_object).id_for(archival_object_uri)
  obj = ArchivalObject[:id => id]
  
  if obj.nil?
    raise NotFoundException.new("That which does not exist cannot be moved.")
  end
  
  deep_transfer(JSONModel::JSONModel(:resource).id_for(target_resource_uri), obj)
  
  
  json = obj.class.to_jsonmodel(obj)
  json.parent = nil
  source_resource_uri = json['resource']['ref']
  json.resource['ref'] = target_resource_uri
  
  obj.update_from_json(json, {}, false)
  
  event = Event.for_component_transfer(archival_object_uri, source_resource_uri, target_resource_uri)
  
  
  obj.refresh
  
  [obj, event]
end
     |