Module: ExportHelpers

Included in:
ArchivesSpaceService
Defined in:
backend/app/lib/export.rb

Instance Method Summary (collapse)

Instance Method Details

- (Object) generate_dc(id)



41
42
43
44
45
# File 'backend/app/lib/export.rb', line 41

def generate_dc(id)
  obj = resolve_references(DigitalObject.to_jsonmodel(id), ['repository', 'linked_agents', 'subjects'])
  dc = ASpaceExport.model(:dc).from_digital_object(JSONModel(:digital_object).new(obj))
  ASpaceExport::serialize(dc)
end

- (Object) generate_eac(id, type)



82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# File 'backend/app/lib/export.rb', line 82

def generate_eac(id, type)
  klass = Kernel.const_get(type.camelize)
  events = []

  agent = klass.get_or_die(id)
  relationship_defn = klass.find_relationship(:linked_agents)

  related_records = relationship_defn.find_by_participant(agent).map{|relation|
    related_record = relation.other_referent_than(agent)

    next unless [Resource, ArchivalObject, DigitalObject, DigitalObjectComponent].include?(related_record.class)

    RequestContext.open(:repo_id => related_record.repo_id) do
      {
        :role => BackendEnumSource.values_for_ids(relation[:role_id])[relation[:role_id]],
        :record => related_record.class.to_jsonmodel(related_record, :skip_relationships => true)
      }
    end
  }.compact

  obj = resolve_references(klass.to_jsonmodel(agent), ['related_agents'])

  repo_json = Repository.to_jsonmodel(RequestContext.get(:repo_id))
  repo = JSONModel(:repository).new(repo_json)

  eac = ASpaceExport.model(:eac).from_agent(JSONModel(type.intern).new(obj), events, related_records, repo)
  ASpaceExport::serialize(eac)
end

- (Object) generate_ead(id, include_unpublished, include_daos, use_numbered_c_tags)



69
70
71
72
73
74
75
76
77
78
79
# File 'backend/app/lib/export.rb', line 69

def generate_ead(id, include_unpublished, include_daos, use_numbered_c_tags)
  obj = resolve_references(Resource.to_jsonmodel(id), ['repository', 'linked_agents', 'subjects', 'tree', 'digital_object'])
  opts = {
    :include_unpublished => include_unpublished,
    :include_daos => include_daos,
    :use_numbered_c_tags => use_numbered_c_tags
  }

  ead = ASpaceExport.model(:ead).from_resource(JSONModel(:resource).new(obj), opts)
  ASpaceExport::stream(ead)
end

- (Object) generate_labels(id)



34
35
36
37
38
# File 'backend/app/lib/export.rb', line 34

def generate_labels(id)
  obj = resolve_references(Resource.to_jsonmodel(id), ['tree', 'repository'])
  labels = ASpaceExport.model(:labels).from_resource(JSONModel(:resource).new(obj))
  ASpaceExport::serialize(labels, :serializer => :tsv)
end

- (Object) generate_marc(id)



62
63
64
65
66
# File 'backend/app/lib/export.rb', line 62

def generate_marc(id)
  obj = resolve_references(Resource.to_jsonmodel(id), ['repository', 'linked_agents', 'subjects'])
  marc = ASpaceExport.model(:marc21).from_resource(JSONModel(:resource).new(obj))
  ASpaceExport::serialize(marc)
end

- (Object) generate_mets(id)



48
49
50
51
52
# File 'backend/app/lib/export.rb', line 48

def generate_mets(id)
  obj = resolve_references(DigitalObject.to_jsonmodel(id), ['repository::agent_representation', 'linked_agents', 'subjects', 'tree'])
  mets = ASpaceExport.model(:mets).from_digital_object(JSONModel(:digital_object).new(obj))
  ASpaceExport::serialize(mets)
end

- (Object) generate_mods(id)



55
56
57
58
59
# File 'backend/app/lib/export.rb', line 55

def generate_mods(id)
  obj = resolve_references(DigitalObject.to_jsonmodel(id), ['repository::agent_representation', 'linked_agents', 'subjects', 'tree'])
  mods = ASpaceExport.model(:mods).from_digital_object(JSONModel(:digital_object).new(obj))
  ASpaceExport::serialize(mods)
end

- (Object) generate_pdf_from_ead(ead)



13
14
15
16
17
# File 'backend/app/lib/export.rb', line 13

def generate_pdf_from_ead( ead )
  xml = ""
  ead.each { |e| xml << e  }
  ASFop.new(xml).to_pdf_stream
end

- (Object) pdf_response(pdf)



9
10
11
# File 'backend/app/lib/export.rb', line 9

def pdf_response(pdf)
  [status, {"Content-Type" => "application/pdf"}, pdf ]
end

- (Object) stream_response(streamer)



24
25
26
# File 'backend/app/lib/export.rb', line 24

def stream_response(streamer)
  [status, {"Content-Type" => "application/xml"}, streamer]
end

- (Object) tsv_response(tsv)



29
30
31
# File 'backend/app/lib/export.rb', line 29

def tsv_response(tsv)
  [status, {"Content-Type" => "text/tab-separated-values"}, [tsv + "\n"]]
end

- (Object) xml_response(xml)



19
20
21
# File 'backend/app/lib/export.rb', line 19

def xml_response(xml)
  [status, {"Content-Type" => "application/xml"}, [xml + "\n"]]
end