<!-- Actually in the DB -->
<class id="vbq" controller="open-ils.cstore" oils_obj:fieldmapper="vandelay::bib_queue" oils_persist:tablename="vandelay.bib_queue" reporter:label="Import/Overlay Bib Queue">
- <fields oils_persist:primary="code" oils_persist:sequence="">
+ <fields oils_persist:primary="id" oils_persist:sequence="vandelay.queue_id_seq">
<field name="isnew" oils_obj:array_position="0" oils_persist:virtual="true" />
<field name="ischanged" oils_obj:array_position="1" oils_persist:virtual="true" />
<field name="isdeleted" oils_obj:array_position="2" oils_persist:virtual="true" />
<field reporter:label="Name" name="name" oils_obj:array_position="5" oils_persist:virtual="false" reporter:datatype="text" oils_persist:i18n="true"/>
<field reporter:label="Complete" name="complete" oils_obj:array_position="6" oils_persist:virtual="false" reporter:datatype="bool"/>
<field reporter:label="Type" name="queue_type" oils_obj:array_position="7" oils_persist:virtual="false" reporter:datatype="text"/>
- <field reporter:label="Purpose" name="queue_purpose" oils_obj:array_position="8" oils_persist:virtual="false" reporter:datatype="text"/>
</fields>
<links>
<link field="owner" reltype="has_a" key="id" map="" class="aou"/>
</class>
<class id="vqbr" controller="open-ils.cstore" oils_obj:fieldmapper="vandelay::queued_bib_record" oils_persist:tablename="vandelay.queued_bib_record" reporter:label="Queued Bib Record">
- <fields oils_persist:primary="code" oils_persist:sequence="">
+ <fields oils_persist:primary="id" oils_persist:sequence="vandelay.queued_record_id_seq">
<field name="isnew" oils_obj:array_position="0" oils_persist:virtual="true" />
<field name="ischanged" oils_obj:array_position="1" oils_persist:virtual="true" />
<field name="isdeleted" oils_obj:array_position="2" oils_persist:virtual="true" />
<field reporter:label="Queue" name="queue" oils_obj:array_position="7" oils_persist:virtual="false" reporter:datatype="link"/>
<field reporter:label="Bib Source" name="bib_source" oils_obj:array_position="8" oils_persist:virtual="false" reporter:datatype="link"/>
<field reporter:label="Final Target Record" name="imported_as" oils_obj:array_position="9" oils_persist:virtual="false" reporter:datatype="link"/>
+ <field reporter:label="Purpose" name="purpose" oils_obj:array_position="10" oils_persist:virtual="false" reporter:datatype="text"/>
</fields>
<links>
<link field="queue" reltype="has_a" key="id" map="" class="vbq"/>
</class>
<class id="vqbrad" controller="open-ils.cstore" oils_obj:fieldmapper="vandelay::bib_attr_definition" oils_persist:tablename="vandelay.bib_attr_definition" reporter:label="Queued Bib Record Attribute Definition">
- <fields oils_persist:primary="code" oils_persist:sequence="">
+ <fields oils_persist:primary="id" oils_persist:sequence="vandelay.bib_attr_definition_id_seq">
<field name="isnew" oils_obj:array_position="0" oils_persist:virtual="true" />
<field name="ischanged" oils_obj:array_position="1" oils_persist:virtual="true" />
<field name="isdeleted" oils_obj:array_position="2" oils_persist:virtual="true" />
</class>
<class id="vqbra" controller="open-ils.cstore" oils_obj:fieldmapper="vandelay::queued_bib_record_attr" oils_persist:tablename="vandelay.queued_bib_record_attr" reporter:label="Queued Bib Record Attribute">
- <fields oils_persist:primary="code" oils_persist:sequence="">
+ <fields oils_persist:primary="id" oils_persist:sequence="vandelay.queued_bib_record_attr_id_seq">
<field name="isnew" oils_obj:array_position="0" oils_persist:virtual="true" />
<field name="ischanged" oils_obj:array_position="1" oils_persist:virtual="true" />
<field name="isdeleted" oils_obj:array_position="2" oils_persist:virtual="true" />
</class>
<class id="vbm" controller="open-ils.cstore" oils_obj:fieldmapper="vandelay::bib_match" oils_persist:tablename="vandelay.bib_match" reporter:label="Queued Bib Record Match">
- <fields oils_persist:primary="code" oils_persist:sequence="">
+ <fields oils_persist:primary="id" oils_persist:sequence="vandelay.bib_match_id_seq">
<field name="isnew" oils_obj:array_position="0" oils_persist:virtual="true" />
<field name="ischanged" oils_obj:array_position="1" oils_persist:virtual="true" />
<field name="isdeleted" oils_obj:array_position="2" oils_persist:virtual="true" />
</class>
<class id="vaq" controller="open-ils.cstore" oils_obj:fieldmapper="vandelay::authority_queue" oils_persist:tablename="vandelay.authority_queue" reporter:label="Import/Overlay Authority Queue">
- <fields oils_persist:primary="code" oils_persist:sequence="">
+ <fields oils_persist:primary="id" oils_persist:sequence="vandelay.queue_id_seq">
<field name="isnew" oils_obj:array_position="0" oils_persist:virtual="true" />
<field name="ischanged" oils_obj:array_position="1" oils_persist:virtual="true" />
<field name="isdeleted" oils_obj:array_position="2" oils_persist:virtual="true" />
</class>
<class id="vqar" controller="open-ils.cstore" oils_obj:fieldmapper="vandelay::queued_authority_record" oils_persist:tablename="vandelay.queued_authority_record" reporter:label="Queued Authority Record">
- <fields oils_persist:primary="code" oils_persist:sequence="">
+ <fields oils_persist:primary="id" oils_persist:sequence="vandelay.queued_record_id_seq">
<field name="isnew" oils_obj:array_position="0" oils_persist:virtual="true" />
<field name="ischanged" oils_obj:array_position="1" oils_persist:virtual="true" />
<field name="isdeleted" oils_obj:array_position="2" oils_persist:virtual="true" />
<field reporter:label="MARC" name="marc" oils_obj:array_position="6" oils_persist:virtual="false" reporter:datatype="text"/>
<field reporter:label="Queue" name="queue" oils_obj:array_position="7" oils_persist:virtual="false" reporter:datatype="link"/>
<field reporter:label="Final Target Record" name="imported_as" oils_obj:array_position="8" oils_persist:virtual="false" reporter:datatype="link"/>
+ <field reporter:label="Purpose" name="purpose" oils_obj:array_position="9" oils_persist:virtual="false" reporter:datatype="text"/>
</fields>
<links>
<link field="queue" reltype="has_a" key="id" map="" class="vaq"/>
</class>
<class id="vqarad" controller="open-ils.cstore" oils_obj:fieldmapper="vandelay::authority_attr_definition" oils_persist:tablename="vandelay.authority_attr_definition" reporter:label="Queued Authority Record Attribute Definition">
- <fields oils_persist:primary="code" oils_persist:sequence="">
+ <fields oils_persist:primary="id" oils_persist:sequence="vandelay.authority_attr_definition_id_seq">
<field name="isnew" oils_obj:array_position="0" oils_persist:virtual="true" />
<field name="ischanged" oils_obj:array_position="1" oils_persist:virtual="true" />
<field name="isdeleted" oils_obj:array_position="2" oils_persist:virtual="true" />
</class>
<class id="vqara" controller="open-ils.cstore" oils_obj:fieldmapper="vandelay::queued_authority_record_attr" oils_persist:tablename="vandelay.queued_authority_record_attr" reporter:label="Queued Authority Record Attribute">
- <fields oils_persist:primary="code" oils_persist:sequence="">
+ <fields oils_persist:primary="id" oils_persist:sequence="vandelay.queued_authority_record_attr_id_seq">
<field name="isnew" oils_obj:array_position="0" oils_persist:virtual="true" />
<field name="ischanged" oils_obj:array_position="1" oils_persist:virtual="true" />
<field name="isdeleted" oils_obj:array_position="2" oils_persist:virtual="true" />
</class>
<class id="vam" controller="open-ils.cstore" oils_obj:fieldmapper="vandelay::authority_match" oils_persist:tablename="vandelay.authority_match" reporter:label="Queued Authority Record Match">
- <fields oils_persist:primary="code" oils_persist:sequence="">
+ <fields oils_persist:primary="id" oils_persist:sequence="vandelay.authority_match_id_seq">
<field name="isnew" oils_obj:array_position="0" oils_persist:virtual="true" />
<field name="ischanged" oils_obj:array_position="1" oils_persist:virtual="true" />
<field name="isdeleted" oils_obj:array_position="2" oils_persist:virtual="true" />
</permacrud>
</class>
- <class id="cvrfm" controller="open-ils.cstore" oils_obj:fieldmapper="config::videorecording_format_map" oils_persist:tablename="config.videorecording_format_map" reporter:label="Videorecording Format">
+ <class id="cvrfm" controller="open-ils.cstore" oils_obj:fieldmapper="config::videorecording_format_map" oils_persist:tablename="config.videorecording_format_map" reporter:label="Videorecording Format" oils_persist:field_safe="true">
<fields oils_persist:primary="code">
<field name="isnew" oils_obj:array_position="0" oils_persist:virtual="true" />
<field name="ischanged" oils_obj:array_position="1" oils_persist:virtual="true" />
<links/>
<permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
<actions>
- <create permission="CREATE_VR_FORMAT" global_required="true"/>
- <retrieve/>
- <update permission="UPDATE_VR_FORMAT" global_required="true"/>
- <delete permission="DELETE_VR_FORMAT" global_required="true"/>
+ <create permission="CREATE_MARC_CODE" global_required="true"/>
+ <retrieve permission="CREATE_MARC_CODE|UPDATE_MARC_CODE|DELETE_MARC_CODE" global_required="true"/>
+ <update permission="UPDATE_MARC_CODE" global_required="true"/>
+ <delete permission="DELETE_MARC_CODE" global_required="true"/>
</actions>
</permacrud>
</class>
<link field="record" reltype="has_a" key="id" map="" class="are"/>
</links>
</class>
- <class id="clm" controller="open-ils.cstore" oils_obj:fieldmapper="config::language_map" oils_persist:tablename="config.language_map" reporter:label="Language Map">
+ <class id="clm" controller="open-ils.cstore" oils_obj:fieldmapper="config::language_map" oils_persist:tablename="config.language_map" reporter:label="Language Map" oils_persist:field_safe="true">
<fields oils_persist:primary="code" oils_persist:sequence="">
<field name="isnew" oils_obj:array_position="0" oils_persist:virtual="true" />
<field name="ischanged" oils_obj:array_position="1" oils_persist:virtual="true" />
<links/>
<permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
<actions>
- <create permission="CREATE_LANGUAGE" global_required="true"/>
- <retrieve/>
- <update permission="UPDATE_LANGUAGE" global_required="true"/>
- <delete permission="DELETE_LANGUAGE" global_required="true"/>
+ <create permission="CREATE_MARC_CODE" global_required="true"/>
+ <retrieve permission="CREATE_MARC_CODE|UPDATE_MARC_CODE|DELETE_MARC_CODE" global_required="true"/>
+ <update permission="UPDATE_MARC_CODE" global_required="true"/>
+ <delete permission="DELETE_MARC_CODE" global_required="true"/>
</actions>
</permacrud>
</class>
</actions>
</permacrud>
</class>
- <class id="cam" controller="open-ils.cstore" oils_obj:fieldmapper="config::audience_map" oils_persist:tablename="config.audience_map" reporter:label="Audience Map">
+ <class id="cam" controller="open-ils.cstore" oils_obj:fieldmapper="config::audience_map" oils_persist:tablename="config.audience_map" reporter:label="Audience Map" oils_persist:field_safe="true">
<fields oils_persist:primary="code" oils_persist:sequence="">
<field name="isnew" oils_obj:array_position="0" oils_persist:virtual="true" />
<field name="ischanged" oils_obj:array_position="1" oils_persist:virtual="true" />
<links/>
<permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
<actions>
- <create permission="CREATE_AUDIENCE" global_required="true"/>
- <retrieve/>
- <update permission="UPDATE_AUDIENCE" global_required="true"/>
- <delete permission="DELETE_AUDIENCE" global_required="true"/>
+ <create permission="CREATE_MARC_CODE" global_required="true"/>
+ <retrieve permission="CREATE_MARC_CODE|UPDATE_MARC_CODE|DELETE_MARC_CODE" global_required="true"/>
+ <update permission="UPDATE_MARC_CODE" global_required="true"/>
+ <delete permission="DELETE_MARC_CODE" global_required="true"/>
</actions>
</permacrud>
</class>
- <class id="cifm" controller="open-ils.cstore" oils_obj:fieldmapper="config::item_form_map" oils_persist:tablename="config.item_form_map" reporter:label="Item Form Map">
+ <class id="cifm" controller="open-ils.cstore" oils_obj:fieldmapper="config::item_form_map" oils_persist:tablename="config.item_form_map" reporter:label="Item Form Map" oils_persist:field_safe="true">
<fields oils_persist:primary="code" oils_persist:sequence="">
<field name="isnew" oils_obj:array_position="0" oils_persist:virtual="true" />
<field name="ischanged" oils_obj:array_position="1" oils_persist:virtual="true" />
<links/>
<permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
<actions>
- <create permission="CREATE_ITEM_FORM" global_required="true"/>
- <retrieve/>
- <update permission="UPDATE_ITEM_FORM" global_required="true"/>
- <delete permission="DELETE_ITEM_FORM" global_required="true"/>
+ <create permission="CREATE_MARC_CODE" global_required="true"/>
+ <retrieve permission="CREATE_MARC_CODE|UPDATE_MARC_CODE|DELETE_MARC_CODE" global_required="true"/>
+ <update permission="UPDATE_MARC_CODE" global_required="true"/>
+ <delete permission="DELETE_MARC_CODE" global_required="true"/>
</actions>
</permacrud>
</class>
</actions>
</permacrud>
</class>
- <class id="mmrsm" controller="open-ils.cstore" oils_obj:fieldmapper="metabib::metarecord_source_map" oils_persist:tablename="metabib.metarecord_source_map">
+ <class id="mmrsm" controller="open-ils.cstore" oils_obj:fieldmapper="metabib::metarecord_source_map" oils_persist:tablename="metabib.metarecord_source_map" oils_persist:field_safe="true">
<fields oils_persist:primary="id" oils_persist:sequence="metabib.metarecord_source_map_id_seq">
<field name="isnew" oils_obj:array_position="0" oils_persist:virtual="true" />
<field name="ischanged" oils_obj:array_position="1" oils_persist:virtual="true" />
<link field="stat_cat" reltype="has_a" key="id" map="" class="asc"/>
</links>
</class>
- <class id="citm" controller="open-ils.cstore" oils_obj:fieldmapper="config::item_type_map" oils_persist:tablename="config.item_type_map" reporter:label="Item Type Map">
+ <class id="citm" controller="open-ils.cstore" oils_obj:fieldmapper="config::item_type_map" oils_persist:tablename="config.item_type_map" reporter:label="Item Type Map" oils_persist:field_safe="true">
<fields oils_persist:primary="code">
<field name="isnew" oils_obj:array_position="0" oils_persist:virtual="true" />
<field name="ischanged" oils_obj:array_position="1" oils_persist:virtual="true" />
<links/>
<permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
<actions>
- <create permission="CREATE_ITEM_TYPE" global_required="true"/>
- <retrieve/>
- <update permission="UPDATE_ITEM_TYPE" global_required="true"/>
- <delete permission="DELETE_ITEM_TYPE" global_required="true"/>
+ <create permission="CREATE_MARC_CODE" global_required="true"/>
+ <retrieve permission="CREATE_MARC_CODE|UPDATE_MARC_CODE|DELETE_MARC_CODE" global_required="true"/>
+ <update permission="UPDATE_MARC_CODE" global_required="true"/>
+ <delete permission="DELETE_MARC_CODE" global_required="true"/>
</actions>
</permacrud>
</class>
- <class id="cblvl" controller="open-ils.cstore" oils_obj:fieldmapper="config::bib_level_map" oils_persist:tablename="config.bib_level_map" reporter:label="Bib Level Map">
+ <class id="cblvl" controller="open-ils.cstore" oils_obj:fieldmapper="config::bib_level_map" oils_persist:tablename="config.bib_level_map" reporter:label="Bib Level Map" oils_persist:field_safe="true">
<fields oils_persist:primary="code">
<field name="isnew" oils_obj:array_position="0" oils_persist:virtual="true" />
<field name="ischanged" oils_obj:array_position="1" oils_persist:virtual="true" />
<links/>
<permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
<actions>
- <create permission="CREATE_BIB_LEVEL" global_required="true"/>
- <retrieve/>
- <update permission="UPDATE_BIB_LEVEL" global_required="true"/>
- <delete permission="DELETE_BIB_LEVEL" global_required="true"/>
+ <create permission="CREATE_MARC_CODE" global_required="true"/>
+ <retrieve permission="CREATE_MARC_CODE|UPDATE_MARC_CODE|DELETE_MARC_CODE" global_required="true"/>
+ <update permission="UPDATE_MARC_CODE" global_required="true"/>
+ <delete permission="DELETE_MARC_CODE" global_required="true"/>
</actions>
</permacrud>
</class>
<link field="usr" reltype="has_a" key="id" map="" class="au"/>
</links>
</class>
- <class id="clfm" controller="open-ils.cstore" oils_obj:fieldmapper="config::lit_form_map" oils_persist:tablename="config.lit_form_map" reporter:label="Literary Form">
+ <class id="clfm" controller="open-ils.cstore" oils_obj:fieldmapper="config::lit_form_map" oils_persist:tablename="config.lit_form_map" reporter:label="Literary Form" oils_persist:field_safe="true">
<fields oils_persist:primary="code" oils_persist:sequence="">
<field name="isnew" oils_obj:array_position="0" oils_persist:virtual="true" />
<field name="ischanged" oils_obj:array_position="1" oils_persist:virtual="true" />
<field name="isdeleted" oils_obj:array_position="2" oils_persist:virtual="true" />
<field reporter:label="LitF Code" name="code" oils_obj:array_position="3" oils_persist:virtual="false" reporter:datatype="text"/>
- <field reporter:label="LitF Description" name="description" oils_obj:array_position="4" oils_persist:virtual="false" reporter:datatype="text"/>
- <field reporter:label="LitF Name" name="value" oils_obj:array_position="5" oils_persist:virtual="false" reporter:datatype="text"/>
+ <field reporter:label="LitF Description" name="description" oils_obj:array_position="4" oils_persist:virtual="false" reporter:datatype="text" oils_persist:i18n="true"/>
+ <field reporter:label="LitF Name" name="value" oils_obj:array_position="5" oils_persist:virtual="false" reporter:datatype="text" oils_persist:i18n="true"/>
</fields>
<links/>
<permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
<actions>
- <create permission="CREATE_LIT_FORM" global_required="true"/>
- <retrieve/>
- <update permission="UPDATE_LIT_FORM" global_required="true"/>
- <delete permission="DELETE_LIT_FORM" global_required="true"/>
+ <create permission="CREATE_MARC_CODE" global_required="true"/>
+ <retrieve permission="CREATE_MARC_CODE|UPDATE_MARC_CODE|DELETE_MARC_CODE" global_required="true"/>
+ <update permission="UPDATE_MARC_CODE" global_required="true"/>
+ <delete permission="DELETE_MARC_CODE" global_required="true"/>
</actions>
</permacrud>
</class>
use OpenSRF::AppSession;
use OpenSRF::Utils::SettingsClient;
+use OpenSRF::Utils::Cache;
use OpenILS::Utils::Fieldmapper;
use OpenILS::Utils::CStoreEditor qw/:funcs/;
+use MARC::Batch;
use MARC::Record;
use MARC::File::XML;
my $name = shift;
my $owner = shift;
my $type = shift;
- my $purpose = shift;
my $e = new_editor(authtoken => $auth, xact => 1);
my $new_id = $e->create_vandelay_bib_queue( $queue );
$e->die_event unless ($new_id);
+ $e->commit;
$queue->id($new_id);
return $queue;
my $name = shift;
my $owner = shift;
my $type = shift;
- my $purpose = shift;
my $e = new_editor(authtoken => $auth, xact => 1);
my $new_id = $e->create_vandelay_authority_queue( $queue );
$e->die_event unless ($new_id);
+ $e->commit;
$queue->id($new_id);
return $queue;
my $auth = shift;
my $queue = shift;
my $marc = shift;
+ my $purpose = shift;
my $e = new_editor(authtoken => $auth, xact => 1);
- $queue = $e->retrieve_vandelay_bib_queue($queue)
+ $queue = $e->retrieve_vandelay_bib_queue($queue);
return $e->die_event unless $e->checkauth;
return $e->die_event unless
($e->allowed('CREATE_BIB_IMPORT_QUEUE', undef, $queue) ||
$e->allowed('CREATE_BIB_IMPORT_QUEUE', $queue->owner));
- my $rec = new Fieldmapper::vandelay::queued_bib_record();
- $rec->marc( $marc );
- $rec->queue( $queue->id );
+ my $new_id = _add_auth_rec($e, $marc, $queue->id, $purpose);
- my $new_id = $e->create_vandelay_queued_bib_record( $rec );
$e->die_event unless ($new_id);
+ $e->commit;
$rec->id($new_id);
return $rec;
argc => 3,
);
+sub _add_bib_rec {
+ my $e = shift;
+ my $marc = shift;
+ my $queue = shift;
+ my $purpose = shift;
+
+ my $rec = new Fieldmapper::vandelay::queued_bib_record();
+ $rec->marc( $marc );
+ $rec->queue( $queue );
+ $rec->purpose( $purpose ) if ($purpose);
+
+ return $e->create_vandelay_queued_bib_record( $rec );
+}
+
sub add_record_to_authority_queue {
my $self = shift;
my $client = shift;
my $auth = shift;
my $queue = shift;
my $marc = shift;
+ my $purpose = shift;
my $e = new_editor(authtoken => $auth, xact => 1);
- $queue = $e->retrieve_vandelay_authority_queue($queue)
+ $queue = $e->retrieve_vandelay_authority_queue($queue);
return $e->die_event unless $e->checkauth;
return $e->die_event unless
($e->allowed('CREATE_AUTHORITY_IMPORT_QUEUE', undef, $queue) ||
$e->allowed('CREATE_AUTHORITY_IMPORT_QUEUE', $queue->owner));
- my $rec = new Fieldmapper::vandelay::queued_authority_record();
- $rec->marc( $marc );
- $rec->queue( $queue->id );
+ my $new_id = _add_auth_rec($e, $marc, $queue->id, $purpose);
- my $new_id = $e->create_vandelay_queued_authority_record( $rec );
$e->die_event unless ($new_id);
+ $e->commit;
$rec->id($new_id);
return $rec;
}
-__PACKAGE__->register_method(
+__PACKAGE__->register_method(
api_name => "open-ils.vandelay.queued_authority_record.create",
method => "add_record_to_authority_queue",
api_level => 1,
argc => 3,
+);
+
+sub _add_auth_rec {
+ my $e = shift;
+ my $marc = shift;
+ my $queue = shift;
+
+ my $rec = new Fieldmapper::vandelay::queued_authority_record();
+ $rec->marc( $marc );
+ $rec->queue( $queue );
+ $rec->purpose( $purpose ) if ($purpose);
+
+ return $e->create_vandelay_queued_authority_record( $rec );
+}
+
+sub process_spool {
+ my $self = shift;
+ my $client = shift;
+ my $auth = shift;
+ my $fingerprint = shift;
+ my $queue = shift;
+
+ my $e = new_editor(authtoken => $auth, xact => 1);
+
+ if ($self->{record_type} eq 'bib') {
+ return $e->die_event unless $e->checkauth;
+ return $e->die_event unless
+ ($e->allowed('CREATE_BIB_IMPORT_QUEUE', undef, $queue) ||
+ $e->allowed('CREATE_BIB_IMPORT_QUEUE', $queue->owner));
+ } else {
+ return $e->die_event unless $e->checkauth;
+ return $e->die_event unless
+ ($e->allowed('CREATE_AUTHORITY_IMPORT_QUEUE', undef, $queue) ||
+ $e->allowed('CREATE_AUTHORITY_IMPORT_QUEUE', $queue->owner));
+ }
+
+ my $method = 'open-ils.vandelay.queued_'.$self->{record_type}.'_record.create';
+ $method = $self->method_lookup( $method );
+
+ my $cache = new OpenSRF::Utils::Cache();
+
+ my $data = $cache->get_cache('vandelay_import_spool_' . $fingerprint);
+ my $purpose = $data->{purpose};
+ $data = decode_base64($data->{marc});
+
+ my $fh = new IO::Scalar \$data;
+
+ my $batch = new MARC::Batch ( $type, $fh );
+ $batch->strict_off;
+
+ my $count = 0;
+ while (my $r = $batch->next) {
+ try {
+ (my $xml = $rec->as_xml_record()) =~ s/\n//sog;
+ $xml =~ s/^<\?xml.+\?\s*>//go;
+ $xml =~ s/>\s+</></go;
+ $xml =~ s/\p{Cc}//go;
+ $xml = $self->entityize($xml);
+ $xml =~ s/[\x00-\x1f]//go;
+
+ if ($self->{record_type} eq 'bib') {
+ _add_bib_rec( $e, $xml, $queue, $purpose );
+ } else {
+ _add_auth_rec( $e, $xml, $queue, $purpose );
+ }
+ $count++;
+
+ $client->respond( $count );
+ } catch Error with {
+ my $error = shift;
+ $log->warn("Encountered a bad record at Vandelay ingest: ".$error);
+ }
+ }
+
+ $e->commit;
+ return undef;
+}
+__PACKAGE__->register_method(
+ api_name => "open-ils.vandelay.bib.process_spool",
+ method => "process_spool",
+ api_level => 1,
+ argc => 3,
+ record_type => 'bib'
+);
+__PACKAGE__->register_method(
+ api_name => "open-ils.vandelay.auth.process_spool",
+ method => "process_spool",
+ api_level => 1,
+ argc => 3,
+ record_type => 'auth'
);
+
1;