forked from archivesspace/archivesspace
-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
force a marcxml converter that creates accession records
- Loading branch information
1 parent
6a9557b
commit 25eab1e
Showing
3 changed files
with
134 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
require_relative 'marcxml_converter' | ||
|
||
class MarcXMLAccessionConverter < MarcXMLConverter | ||
def self.import_types(show_hidden = false) | ||
[ | ||
{ | ||
:name => "marcxml_accession", | ||
:description => "Import MARC XML records as Accessions" | ||
} | ||
] | ||
end | ||
|
||
def self.instance_for(type, input_file) | ||
if type == "marcxml_accession" | ||
self.new(input_file) | ||
else | ||
nil | ||
end | ||
end | ||
|
||
end | ||
|
||
MarcXMLAccessionConverter.configure do |config| | ||
config["/record"][:obj] = :accession | ||
config["/record"][:map].delete("//controlfield[@tag='008']") | ||
|
||
config["/record"][:map]["self::record"] = -> accession, node { | ||
|
||
if !accession.title && accession['_fallback_titles'] && !accession['_fallback_titles'].empty? | ||
accession.title = accession['_fallback_titles'].shift | ||
end | ||
|
||
if accession.id_0.nil? or accession.id.empty? | ||
accession.id_0 = "imported-#{SecureRandom.uuid}" | ||
end | ||
|
||
accession.accession_date = Time.now.to_s.sub(/\s.*/, '') | ||
} | ||
|
||
["datafield[@tag='210']", "datafield[@tag='222']", "datafield[@tag='240']", "datafield[@tag='242']", "datafield[@tag='246'][@ind2='0']", "datafield[@tag='250']", "datafield[@tag='254']", "datafield[@tag='255']", "datafield[@tag='257']", "datafield[@tag='258']", "datafield[@tag='260']", "datafield[@tag='340']", "datafield[@tag='342']", "datafield[@tag='351']", "datafield[@tag='352']", "datafield[@tag='355']", "datafield[@tag='357']", "datafield[@tag='500']", "datafield[@tag='501']", "datafield[@tag='502']", "datafield[@tag='506']", "datafield[@tag='507']", "datafield[@tag='508']", "datafield[@tag='511']", "datafield[@tag='513']", "datafield[@tag='514']", "datafield[@tag='518']", "datafield[@tag='520'][@ind1!='3' and @ind1!='8']", "datafield[@tag='521'][@ind1!='8']", "datafield[@tag='522']", "datafield[@tag='524']", "datafield[@tag='530']", "datafield[@tag='533']", "datafield[@tag='534']", "datafield[@tag='535']", "datafield[@tag='538']", "datafield[@tag='540']", "datafield[@tag='541']", "datafield[@tag='544']", "datafield[@tag='545']", "datafield[@tag='561']", "datafield[@tag='562']", "datafield[@tag='563']", "datafield[starts-with(@tag, '59')]", "datafield[@tag='740']", "datafield[@tag='256']", "datafield[@tag='306']", "datafield[@tag='343']", "datafield[@tag='520'][@ind1='3']", "datafield[@tag='546']", "datafield[@tag='565']", "datafield[@tag='504']", "datafield[@tag='510']", "datafield[@tag='581']"].each do |note_making_path| | ||
config["/record"][:map].delete(note_making_path) | ||
end | ||
|
||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
require 'spec_helper' | ||
require 'converter_spec_helper' | ||
|
||
require_relative '../app/converters/marcxml_accession_converter' | ||
|
||
describe 'MARCXML Accession converter' do | ||
let(:my_converter) { | ||
MarcXMLAccessionConverter | ||
} | ||
|
||
|
||
describe "Basic MARCXML to Accession Record mappings" do | ||
let (:test_doc_1) { | ||
src = <<END | ||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> | ||
<collection xsi:schemaLocation="http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd" xmlns="http://www.loc.gov/MARC21/slim" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> | ||
<record> | ||
<leader>00000npc a2200000 u 4500</leader> | ||
<controlfield tag="008">130109i19601970xx eng d</controlfield> | ||
<datafield tag="040" ind2=" " ind1=" "> | ||
<subfield code="a">Repositories.Agency Code-AT</subfield> | ||
<subfield code="b">eng</subfield> | ||
<subfield code="c">Repositories.Agency Code-AT</subfield> | ||
<subfield code="e">dacs</subfield> | ||
</datafield> | ||
<datafield tag="041" ind2=" " ind1="0"> | ||
<subfield code="a">eng</subfield> | ||
</datafield> | ||
<datafield tag="099" ind2=" " ind1=" "> | ||
<subfield code="a">Resource.ID.AT</subfield> | ||
</datafield> | ||
<datafield tag="245" ind2=" " ind1="1"> | ||
<subfield code="a">SF A</subfield> | ||
<subfield code="c">SF C</subfield> | ||
<subfield code="h">SF H</subfield> | ||
<subfield code="n">SF N</subfield> | ||
</datafield> | ||
<datafield tag="300" ind2=" " ind1=" "> | ||
<subfield code="a">5.0 Linear feet</subfield> | ||
<subfield code="f">Resource-ContainerSummary-AT</subfield> | ||
</datafield> | ||
<datafield tag="342" ind2="5" ind1="1"> | ||
<subfield code="i">SF I</subfield> | ||
<subfield code="p">SF P</subfield> | ||
<subfield code="q">SF Q</subfield> | ||
</datafield> | ||
<datafield tag="510" ind2=" " ind1="2"> | ||
<subfield code="3">SF 3</subfield> | ||
<subfield code="c">SF C</subfield> | ||
<subfield code="x">SF X</subfield> | ||
</datafield> | ||
<datafield tag="630" ind2=" " ind1="2"> | ||
<subfield code="d">SF D</subfield> | ||
<subfield code="f">SF F</subfield> | ||
<subfield code="x">SF X</subfield> | ||
<subfield code="2">SF 2</subfield> | ||
</datafield> | ||
<datafield tag="691" ind2=" " ind1="2"> | ||
<subfield code="d">SF D</subfield> | ||
<subfield code="a">SF A</subfield> | ||
<subfield code="x">SF X</subfield> | ||
<subfield code="3">SF 3</subfield> | ||
</datafield> | ||
</record> | ||
</collection> | ||
END | ||
|
||
get_tempfile_path(src) | ||
} | ||
|
||
|
||
before(:all) do | ||
parsed = convert(test_doc_1) | ||
@accession = parsed.last | ||
@subjects = parsed.select{|r| r['jsonmodel_type'] == 'subject'} | ||
end | ||
|
||
|
||
it "creates an Accession instead of a Resource" do | ||
@accession['jsonmodel_type'].should eq("accession") | ||
end | ||
|
||
it "maps field 245 to resource['title']" do | ||
@accession['title'].should eq("SF A : [SF H] SF N / SF C") | ||
end | ||
|
||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters