[open-ils-commits] r12395 - in trunk/Open-ILS/src: extras/import perlmods/OpenILS/Application (miker)

svn at svn.open-ils.org svn at svn.open-ils.org
Tue Mar 3 22:11:04 EST 2009


Author: miker
Date: 2009-03-03 22:11:02 -0500 (Tue, 03 Mar 2009)
New Revision: 12395

Modified:
   trunk/Open-ILS/src/extras/import/direct_ingest.pl
   trunk/Open-ILS/src/perlmods/OpenILS/Application/Ingest.pm
Log:
properly adjust max_cn and max_uri; tabs to spaces in Ingest.pm; only create callnumbers once

Modified: trunk/Open-ILS/src/extras/import/direct_ingest.pl
===================================================================
--- trunk/Open-ILS/src/extras/import/direct_ingest.pl	2009-03-04 03:04:45 UTC (rev 12394)
+++ trunk/Open-ILS/src/extras/import/direct_ingest.pl	2009-03-04 03:11:02 UTC (rev 12395)
@@ -26,13 +26,15 @@
 
 MARC::Charset->ignore_errors(1);
 
-my ($auth, $config, $quiet) =
-	(0, '/openils/conf/opensrf_core.xml');
+my ($max_uri, $max_cn, $auth, $config, $quiet) =
+	(0, 0, 0, '/openils/conf/opensrf_core.xml');
 
 GetOptions(
 	'config=s'	=> \$config,
 	'authority'	=> \$auth,
 	'quiet'		=> \$quiet,
+	'max_uri=i'	=> \$max_uri,	
+	'max_cn=i'	=> \$max_cn,	
 );
 
 my @ses;
@@ -53,9 +55,6 @@
 
 $meth = OpenILS::Application::Ingest->method_lookup( $meth );
 
-my $max_cn = 0;
-my $max_uri = 0;
-
 my $count = 0;
 my $starttime = time;
 while (my $rec = <>) {
@@ -109,8 +108,8 @@
 			$umap->call_number($u->{call_number}->id);
 			print( OpenSRF::Utils::JSON->perl2JSON($umap)."\n" );
 
-			$max_cn = $u->{call_number}->id if $u->{call_number}->isnew;
-			$max_uri = $u->{uri}->id if $u->{uri}->isnew;
+			$max_cn = $u->{call_number}->id + 1 if $u->{call_number}->isnew;
+			$max_uri = $u->{uri}->id + 1 if $u->{uri}->isnew;
 		}
 	}
 

Modified: trunk/Open-ILS/src/perlmods/OpenILS/Application/Ingest.pm
===================================================================
--- trunk/Open-ILS/src/perlmods/OpenILS/Application/Ingest.pm	2009-03-04 03:04:45 UTC (rev 12394)
+++ trunk/Open-ILS/src/perlmods/OpenILS/Application/Ingest.pm	2009-03-04 03:11:02 UTC (rev 12395)
@@ -20,21 +20,21 @@
 use Time::HiRes qw(time);
 
 our %supported_formats = (
-	mods32	=> {ns => 'http://www.loc.gov/mods/v3'},
-	mods3	=> {ns => 'http://www.loc.gov/mods/v3'},
-	mods	=> {ns => 'http://www.loc.gov/mods/'},
-	marcxml	=> {ns => 'http://www.loc.gov/MARC21/slim'},
-	srw_dc	=> {ns => 'info:srw/schema/1/dc-schema'},
-	oai_dc	=> {ns => 'http://www.openarchives.org/OAI/2.0/oai_dc/'},
-	rdf_dc	=> {ns => 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'},
-	atom	=> {ns => 'http://www.w3.org/2005/Atom'},
-	rss091	=> {ns => 'http://my.netscape.com/rdf/simple/0.9/'},
-	rss092	=> {ns => ''},
-	rss093	=> {ns => ''},
-	rss094	=> {ns => ''},
-	rss10	=> {ns => 'http://purl.org/rss/1.0/'},
-	rss11	=> {ns => 'http://purl.org/net/rss1.1#'},
-	rss2	=> {ns => ''},
+    mods32    => {ns => 'http://www.loc.gov/mods/v3'},
+    mods3    => {ns => 'http://www.loc.gov/mods/v3'},
+    mods    => {ns => 'http://www.loc.gov/mods/'},
+    marcxml    => {ns => 'http://www.loc.gov/MARC21/slim'},
+    srw_dc    => {ns => 'info:srw/schema/1/dc-schema'},
+    oai_dc    => {ns => 'http://www.openarchives.org/OAI/2.0/oai_dc/'},
+    rdf_dc    => {ns => 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'},
+    atom    => {ns => 'http://www.w3.org/2005/Atom'},
+    rss091    => {ns => 'http://my.netscape.com/rdf/simple/0.9/'},
+    rss092    => {ns => ''},
+    rss093    => {ns => ''},
+    rss094    => {ns => ''},
+    rss10    => {ns => 'http://purl.org/rss/1.0/'},
+    rss11    => {ns => 'http://purl.org/net/rss1.1#'},
+    rss2    => {ns => ''},
 );
 
 
@@ -51,61 +51,61 @@
 
 sub post_init {
 
-	unless (keys %$xpathset) {
-		$log->debug("Running post_init", DEBUG);
+    unless (keys %$xpathset) {
+        $log->debug("Running post_init", DEBUG);
 
-		my $xsldir = OpenSRF::Utils::SettingsClient->new->config_value(dirs => 'xsl');
+        my $xsldir = OpenSRF::Utils::SettingsClient->new->config_value(dirs => 'xsl');
 
-		unless ($supported_formats{mods}{xslt}) {
-			$log->debug("Loading MODS XSLT", DEBUG);
-	 		my $xslt_doc = $parser->parse_file( $xsldir . "/MARC21slim2MODS.xsl");
-			$supported_formats{mods}{xslt} = $xslt->parse_stylesheet( $xslt_doc );
-		}
+        unless ($supported_formats{mods}{xslt}) {
+            $log->debug("Loading MODS XSLT", DEBUG);
+             my $xslt_doc = $parser->parse_file( $xsldir . "/MARC21slim2MODS.xsl");
+            $supported_formats{mods}{xslt} = $xslt->parse_stylesheet( $xslt_doc );
+        }
 
-		unless ($supported_formats{mods3}{xslt}) {
-			$log->debug("Loading MODS v3 XSLT", DEBUG);
-	 		my $xslt_doc = $parser->parse_file( $xsldir . "/MARC21slim2MODS3.xsl");
-			$supported_formats{mods3}{xslt} = $xslt->parse_stylesheet( $xslt_doc );
-		}
+        unless ($supported_formats{mods3}{xslt}) {
+            $log->debug("Loading MODS v3 XSLT", DEBUG);
+             my $xslt_doc = $parser->parse_file( $xsldir . "/MARC21slim2MODS3.xsl");
+            $supported_formats{mods3}{xslt} = $xslt->parse_stylesheet( $xslt_doc );
+        }
 
-		unless ($supported_formats{mods32}{xslt}) {
-			$log->debug("Loading MODS v32 XSLT", DEBUG);
-	 		my $xslt_doc = $parser->parse_file( $xsldir . "/MARC21slim2MODS32.xsl");
-			$supported_formats{mods32}{xslt} = $xslt->parse_stylesheet( $xslt_doc );
-		}
+        unless ($supported_formats{mods32}{xslt}) {
+            $log->debug("Loading MODS v32 XSLT", DEBUG);
+             my $xslt_doc = $parser->parse_file( $xsldir . "/MARC21slim2MODS32.xsl");
+            $supported_formats{mods32}{xslt} = $xslt->parse_stylesheet( $xslt_doc );
+        }
 
-		my $req = OpenSRF::AppSession
-				->create('open-ils.cstore')
-				
-				# XXX testing new metabib field use for faceting
-				#->request( 'open-ils.cstore.direct.config.metabib_field.search.atomic', { id => { '!=' => undef } } )
-				->request( 'open-ils.cstore.direct.config.metabib_field.search.atomic', { search_field => 't' } )
+        my $req = OpenSRF::AppSession
+                ->create('open-ils.cstore')
+                
+                # XXX testing new metabib field use for faceting
+                #->request( 'open-ils.cstore.direct.config.metabib_field.search.atomic', { id => { '!=' => undef } } )
+                ->request( 'open-ils.cstore.direct.config.metabib_field.search.atomic', { search_field => 't' } )
 
-				->gather(1);
+                ->gather(1);
 
-		if (ref $req and @$req) {
-			for my $f (@$req) {
-				$xpathset->{ $f->field_class }->{ $f->name }->{xpath} = $f->xpath;
-				$xpathset->{ $f->field_class }->{ $f->name }->{id} = $f->id;
-				$xpathset->{ $f->field_class }->{ $f->name }->{format} = $f->format;
-				$log->debug("Loaded XPath from DB: ".$f->field_class." => ".$f->name." : ".$f->xpath, DEBUG);
-			}
-		}
-	}
+        if (ref $req and @$req) {
+            for my $f (@$req) {
+                $xpathset->{ $f->field_class }->{ $f->name }->{xpath} = $f->xpath;
+                $xpathset->{ $f->field_class }->{ $f->name }->{id} = $f->id;
+                $xpathset->{ $f->field_class }->{ $f->name }->{format} = $f->format;
+                $log->debug("Loaded XPath from DB: ".$f->field_class." => ".$f->name." : ".$f->xpath, DEBUG);
+            }
+        }
+    }
 }
 
 sub entityize {
-	my $stuff = shift;
-	my $form = shift;
+    my $stuff = shift;
+    my $form = shift;
 
-	if ($form eq 'D') {
-		$stuff = NFD($stuff);
-	} else {
-		$stuff = NFC($stuff);
-	}
+    if ($form eq 'D') {
+        $stuff = NFD($stuff);
+    } else {
+        $stuff = NFC($stuff);
+    }
 
-	$stuff =~ s/([\x{0080}-\x{fffd}])/sprintf('&#x%X;',ord($1))/sgoe;
-	return $stuff;
+    $stuff =~ s/([\x{0080}-\x{fffd}])/sprintf('&#x%X;',ord($1))/sgoe;
+    return $stuff;
 }
 
 # --------------------------------------------------------------------------------
@@ -165,7 +165,7 @@
                 $u->{call_number} = $new_cns_by_owner{$owner};
             } else {
                 $u->{call_number}->clear_id;
-    	        $u->{call_number} = $new_cns_by_owner{$owner} = $cstore->request(
+                $u->{call_number} = $new_cns_by_owner{$owner} = $cstore->request(
                     'open-ils.cstore.direct.asset.call_number.create' => $u->{call_number}
                 )->gather(1);
             }
@@ -173,9 +173,9 @@
 
         if ($u->{uri}->isnew) {
             if ($new_uris_by_owner{$owner}) {
-	            $u->{uri} = $new_uris_by_owner{$owner};
+                $u->{uri} = $new_uris_by_owner{$owner};
             } else {
-	            $u->{uri} = $new_uris_by_owner{$owner} = $cstore->request(
+                $u->{uri} = $new_uris_by_owner{$owner} = $cstore->request(
                     'open-ils.cstore.direct.asset.uri.create' => $u->{uri}
                 )->gather(1);
             }
@@ -185,397 +185,397 @@
         $umap->uri($u->{uri}->id);
         $umap->call_number($u->{call_number}->id);
 
-	    $cstore->request( 'open-ils.cstore.direct.asset.uri_call_number_map.create' => $umap )->gather(1) if (!$tmp);
+        $cstore->request( 'open-ils.cstore.direct.asset.uri_call_number_map.create' => $umap )->gather(1) if (!$tmp);
     }
 
-	# update full_rec stuff ...
-	$tmp = $cstore->request(
-		'open-ils.cstore.direct.metabib.full_rec.id_list.atomic',
-		{ record => $bib->id }
-	)->gather(1);
+    # update full_rec stuff ...
+    $tmp = $cstore->request(
+        'open-ils.cstore.direct.metabib.full_rec.id_list.atomic',
+        { record => $bib->id }
+    )->gather(1);
 
-	$cstore->request( 'open-ils.cstore.direct.metabib.full_rec.delete' => $_ )->gather(1) for (@$tmp);
-	$cstore->request( 'open-ils.cstore.direct.metabib.full_rec.create' => $_ )->gather(1) for (@{ $blob->{full_rec} });
+    $cstore->request( 'open-ils.cstore.direct.metabib.full_rec.delete' => $_ )->gather(1) for (@$tmp);
+    $cstore->request( 'open-ils.cstore.direct.metabib.full_rec.create' => $_ )->gather(1) for (@{ $blob->{full_rec} });
 
-	# update rec_descriptor stuff ...
-	$tmp = $cstore->request(
-		'open-ils.cstore.direct.metabib.record_descriptor.id_list.atomic',
-		{ record => $bib->id }
-	)->gather(1);
+    # update rec_descriptor stuff ...
+    $tmp = $cstore->request(
+        'open-ils.cstore.direct.metabib.record_descriptor.id_list.atomic',
+        { record => $bib->id }
+    )->gather(1);
 
-	$cstore->request( 'open-ils.cstore.direct.metabib.record_descriptor.delete' => $_ )->gather(1) for (@$tmp);
-	$cstore->request( 'open-ils.cstore.direct.metabib.record_descriptor.create' => $blob->{descriptor} )->gather(1);
+    $cstore->request( 'open-ils.cstore.direct.metabib.record_descriptor.delete' => $_ )->gather(1) for (@$tmp);
+    $cstore->request( 'open-ils.cstore.direct.metabib.record_descriptor.create' => $blob->{descriptor} )->gather(1);
 
-	# deal with classed fields...
-	for my $class ( qw/title author subject keyword series/ ) {
-		$tmp = $cstore->request(
-			"open-ils.cstore.direct.metabib.${class}_field_entry.id_list.atomic",
-			{ source => $bib->id }
-		)->gather(1);
+    # deal with classed fields...
+    for my $class ( qw/title author subject keyword series/ ) {
+        $tmp = $cstore->request(
+            "open-ils.cstore.direct.metabib.${class}_field_entry.id_list.atomic",
+            { source => $bib->id }
+        )->gather(1);
 
-		$cstore->request( "open-ils.cstore.direct.metabib.${class}_field_entry.delete" => $_ )->gather(1) for (@$tmp);
-	}
-	for my $obj ( @{ $blob->{field_entries} } ) {
-		my $class = $obj->class_name;
-		$class =~ s/^Fieldmapper:://o;
-		$class =~ s/::/./go;
-		$cstore->request( "open-ils.cstore.direct.$class.create" => $obj )->gather(1);
-	}
+        $cstore->request( "open-ils.cstore.direct.metabib.${class}_field_entry.delete" => $_ )->gather(1) for (@$tmp);
+    }
+    for my $obj ( @{ $blob->{field_entries} } ) {
+        my $class = $obj->class_name;
+        $class =~ s/^Fieldmapper:://o;
+        $class =~ s/::/./go;
+        $cstore->request( "open-ils.cstore.direct.$class.create" => $obj )->gather(1);
+    }
 
-	# update MR map ...
+    # update MR map ...
 
-	$tmp = $cstore->request(
-		'open-ils.cstore.direct.metabib.metarecord_source_map.search.atomic',
-		{ source => $bib->id }
-	)->gather(1);
+    $tmp = $cstore->request(
+        'open-ils.cstore.direct.metabib.metarecord_source_map.search.atomic',
+        { source => $bib->id }
+    )->gather(1);
 
-	$cstore->request( 'open-ils.cstore.direct.metabib.metarecord_source_map.delete' => $_->id )->gather(1) for (@$tmp);
+    $cstore->request( 'open-ils.cstore.direct.metabib.metarecord_source_map.delete' => $_->id )->gather(1) for (@$tmp);
 
-	# get the old MRs
-	my $old_mrs = $cstore->request(
-		'open-ils.cstore.direct.metabib.metarecord.search.atomic' => { id => [map { $_->metarecord } @$tmp] }
-	)->gather(1) if (@$tmp);
+    # get the old MRs
+    my $old_mrs = $cstore->request(
+        'open-ils.cstore.direct.metabib.metarecord.search.atomic' => { id => [map { $_->metarecord } @$tmp] }
+    )->gather(1) if (@$tmp);
 
-	$old_mrs = [] if (!ref($old_mrs));
+    $old_mrs = [] if (!ref($old_mrs));
 
-	my $mr;
-	for my $m (@$old_mrs) {
-		if ($m->fingerprint eq $bib->fingerprint) {
-			$mr = $m;
-		} else {
-			my $others = $cstore->request(
-				'open-ils.cstore.direct.metabib.metarecord_source_map.id_list.atomic' => { metarecord => $m->id }
-			)->gather(1);
+    my $mr;
+    for my $m (@$old_mrs) {
+        if ($m->fingerprint eq $bib->fingerprint) {
+            $mr = $m;
+        } else {
+            my $others = $cstore->request(
+                'open-ils.cstore.direct.metabib.metarecord_source_map.id_list.atomic' => { metarecord => $m->id }
+            )->gather(1);
 
-			if (!@$others) {
-				$cstore->request(
-					'open-ils.cstore.direct.metabib.metarecord.delete' => $m->id
-				)->gather(1);
-			}
+            if (!@$others) {
+                $cstore->request(
+                    'open-ils.cstore.direct.metabib.metarecord.delete' => $m->id
+                )->gather(1);
+            }
 
-			$m->isdeleted(1);
-		}
-	}
+            $m->isdeleted(1);
+        }
+    }
 
-	my $holds;
-	if (!$mr) {
-		# Get the matchin MR, if any.
-		$mr = $cstore->request(
-			'open-ils.cstore.direct.metabib.metarecord.search',
-			{ fingerprint => $bib->fingerprint }
-		)->gather(1);
+    my $holds;
+    if (!$mr) {
+        # Get the matchin MR, if any.
+        $mr = $cstore->request(
+            'open-ils.cstore.direct.metabib.metarecord.search',
+            { fingerprint => $bib->fingerprint }
+        )->gather(1);
 
-		$holds = $cstore->request(
-			'open-ils.cstore.direct.action.hold_request.search.atomic',
-			{ hold_type => 'M', target => [ map { $_->id } grep { $_->isdeleted } @$old_mrs ] }
-		)->gather(1) if (@$old_mrs);
+        $holds = $cstore->request(
+            'open-ils.cstore.direct.action.hold_request.search.atomic',
+            { hold_type => 'M', target => [ map { $_->id } grep { $_->isdeleted } @$old_mrs ] }
+        )->gather(1) if (@$old_mrs);
 
-		if ($mr) {
-			for my $h (@$holds) {
-				$h->target($mr);
-				$cstore->request( 'open-ils.cstore.direct.action.hold_request.update' => $h )->gather(1);
-				$h->ischanged(1);
-			}
-		}
-	}
+        if ($mr) {
+            for my $h (@$holds) {
+                $h->target($mr);
+                $cstore->request( 'open-ils.cstore.direct.action.hold_request.update' => $h )->gather(1);
+                $h->ischanged(1);
+            }
+        }
+    }
 
-	if (!$mr) {
-		$mr = new Fieldmapper::metabib::metarecord;
-		$mr->fingerprint( $bib->fingerprint );
-		$mr->master_record( $bib->id );
-		$mr->id(
-			$cstore->request(
-				"open-ils.cstore.direct.metabib.metarecord.create",
-				$mr => { quiet => 'true' }
-			)->gather(1)
-		);
+    if (!$mr) {
+        $mr = new Fieldmapper::metabib::metarecord;
+        $mr->fingerprint( $bib->fingerprint );
+        $mr->master_record( $bib->id );
+        $mr->id(
+            $cstore->request(
+                "open-ils.cstore.direct.metabib.metarecord.create",
+                $mr => { quiet => 'true' }
+            )->gather(1)
+        );
 
-		for my $h (grep { !$_->ischanged } @$holds) {
-			$h->target($mr);
-			$cstore->request( 'open-ils.cstore.direct.action.hold_request.update' => $h )->gather(1);
-		}
-	} else {
-		my $mrm = $cstore->request(
-			'open-ils.cstore.direct.metabib.metarecord_source_map.search.atomic',
-			{ metarecord => $mr->id }
-		)->gather(1);
+        for my $h (grep { !$_->ischanged } @$holds) {
+            $h->target($mr);
+            $cstore->request( 'open-ils.cstore.direct.action.hold_request.update' => $h )->gather(1);
+        }
+    } else {
+        my $mrm = $cstore->request(
+            'open-ils.cstore.direct.metabib.metarecord_source_map.search.atomic',
+            { metarecord => $mr->id }
+        )->gather(1);
 
-		if (@$mrm) {
-			my $best = $cstore->request(
-				"open-ils.cstore.direct.biblio.record_entry.search",
-				{ id => [ map { $_->source } @$mrm ] },
-				{ 'select'	=> { bre => [ qw/id quality/ ] },
-			  	order_by	=> { bre => "quality desc" },
-			  	limit		=> 1,
-				}
-			)->gather(1);
+        if (@$mrm) {
+            my $best = $cstore->request(
+                "open-ils.cstore.direct.biblio.record_entry.search",
+                { id => [ map { $_->source } @$mrm ] },
+                { 'select'    => { bre => [ qw/id quality/ ] },
+                  order_by    => { bre => "quality desc" },
+                  limit        => 1,
+                }
+            )->gather(1);
 
-			if ($best->quality > $bib->quality) {
-				$mr->master_record($best->id);
-			} else {
-				$mr->master_record($bib->id);
-			}
-		} else {
-			$mr->master_record($bib->id);
-		}
+            if ($best->quality > $bib->quality) {
+                $mr->master_record($best->id);
+            } else {
+                $mr->master_record($bib->id);
+            }
+        } else {
+            $mr->master_record($bib->id);
+        }
 
-		$mr->clear_mods;
+        $mr->clear_mods;
 
-		$cstore->request( 'open-ils.cstore.direct.metabib.metarecord.update' => $mr )->gather(1);
-	}
+        $cstore->request( 'open-ils.cstore.direct.metabib.metarecord.update' => $mr )->gather(1);
+    }
 
-	my $mrm = new Fieldmapper::metabib::metarecord_source_map;
-	$mrm->source($bib->id);
-	$mrm->metarecord($mr->id);
+    my $mrm = new Fieldmapper::metabib::metarecord_source_map;
+    $mrm->source($bib->id);
+    $mrm->metarecord($mr->id);
 
-	$cstore->request( 'open-ils.cstore.direct.metabib.metarecord_source_map.create' => $mrm )->gather(1);
-	$cstore->request( 'open-ils.cstore.direct.biblio.record_entry.update' => $bib )->gather(1);
+    $cstore->request( 'open-ils.cstore.direct.metabib.metarecord_source_map.create' => $mrm )->gather(1);
+    $cstore->request( 'open-ils.cstore.direct.biblio.record_entry.update' => $bib )->gather(1);
 
-	$cstore->request( 'open-ils.cstore.transaction.commit' )->gather(1) || return undef;;
+    $cstore->request( 'open-ils.cstore.transaction.commit' )->gather(1) || return undef;;
     $cstore->disconnect;
 
-	return $bib->id;
+    return $bib->id;
 }
 __PACKAGE__->register_method(  
-	api_name	=> "open-ils.ingest.full.biblio.object",
-	method		=> "rw_biblio_ingest_single_object",
-	api_level	=> 1,
-	argc		=> 1,
+    api_name    => "open-ils.ingest.full.biblio.object",
+    method        => "rw_biblio_ingest_single_object",
+    api_level    => 1,
+    argc        => 1,
 );                      
 
 sub rw_biblio_ingest_single_record {
-	my $self = shift;
-	my $client = shift;
-	my $rec = shift;
+    my $self = shift;
+    my $client = shift;
+    my $rec = shift;
 
-	OpenILS::Application::Ingest->post_init();
-	my $cstore = OpenSRF::AppSession->connect( 'open-ils.cstore' );
-	$cstore->request('open-ils.cstore.transaction.begin')->gather(1);
+    OpenILS::Application::Ingest->post_init();
+    my $cstore = OpenSRF::AppSession->connect( 'open-ils.cstore' );
+    $cstore->request('open-ils.cstore.transaction.begin')->gather(1);
 
-	my $r = $cstore->request( 'open-ils.cstore.direct.biblio.record_entry.retrieve' => $rec )->gather(1);
+    my $r = $cstore->request( 'open-ils.cstore.direct.biblio.record_entry.retrieve' => $rec )->gather(1);
 
-	$cstore->request('open-ils.cstore.transaction.rollback')->gather(1);
-	$cstore->disconnect;
+    $cstore->request('open-ils.cstore.transaction.rollback')->gather(1);
+    $cstore->disconnect;
 
-	return undef unless ($r and @$r);
+    return undef unless ($r and @$r);
 
-	return ($self->method_lookup("open-ils.ingest.full.biblio.object")->run($r))[0];
+    return ($self->method_lookup("open-ils.ingest.full.biblio.object")->run($r))[0];
 }
 __PACKAGE__->register_method(  
-	api_name	=> "open-ils.ingest.full.biblio.record",
-	method		=> "rw_biblio_ingest_single_record",
-	api_level	=> 1,
-	argc		=> 1,
+    api_name    => "open-ils.ingest.full.biblio.record",
+    method        => "rw_biblio_ingest_single_record",
+    api_level    => 1,
+    argc        => 1,
 );                      
 
 sub rw_biblio_ingest_record_list {
-	my $self = shift;
-	my $client = shift;
-	my @rec = ref($_[0]) ? @{ $_[0] } : @_ ;
+    my $self = shift;
+    my $client = shift;
+    my @rec = ref($_[0]) ? @{ $_[0] } : @_ ;
 
-	OpenILS::Application::Ingest->post_init();
-	my $cstore = OpenSRF::AppSession->connect( 'open-ils.cstore' );
-	$cstore->request('open-ils.cstore.transaction.begin')->gather(1);
+    OpenILS::Application::Ingest->post_init();
+    my $cstore = OpenSRF::AppSession->connect( 'open-ils.cstore' );
+    $cstore->request('open-ils.cstore.transaction.begin')->gather(1);
 
-	my $r = $cstore->request( 'open-ils.cstore.direct.biblio.record_entry.search.atomic' => { id => $rec } )->gather(1);
+    my $r = $cstore->request( 'open-ils.cstore.direct.biblio.record_entry.search.atomic' => { id => $rec } )->gather(1);
 
-	$cstore->request('open-ils.cstore.transaction.rollback')->gather(1);
-	$cstore->disconnect;
+    $cstore->request('open-ils.cstore.transaction.rollback')->gather(1);
+    $cstore->disconnect;
 
-	return undef unless ($r and @$r);
+    return undef unless ($r and @$r);
 
-	my $count = 0;
-	$count += ($self->method_lookup("open-ils.ingest.full.biblio.object")->run($_))[0] for (@$r);
+    my $count = 0;
+    $count += ($self->method_lookup("open-ils.ingest.full.biblio.object")->run($_))[0] for (@$r);
 
-	return $count;
+    return $count;
 }
 __PACKAGE__->register_method(  
-	api_name	=> "open-ils.ingest.full.biblio.record_list",
-	method		=> "rw_biblio_ingest_record_list",
-	api_level	=> 1,
-	argc		=> 1,
+    api_name    => "open-ils.ingest.full.biblio.record_list",
+    method        => "rw_biblio_ingest_record_list",
+    api_level    => 1,
+    argc        => 1,
 );                      
 
 sub ro_biblio_ingest_single_object {
-	my $self = shift;
-	my $client = shift;
-	my $bib = shift;
-	my $xml = OpenILS::Application::Ingest::entityize($bib->marc);
+    my $self = shift;
+    my $client = shift;
+    my $bib = shift;
+    my $xml = OpenILS::Application::Ingest::entityize($bib->marc);
     my $max_cn = shift;
     my $max_uri = shift;
 
-	my $cstore = OpenSRF::AppSession->connect( 'open-ils.cstore' );
+    my $cstore = OpenSRF::AppSession->connect( 'open-ils.cstore' );
 
     if (!$max_cn) {
-    	my $cn = $cstore->request( 'open-ils.cstore.direct.asset.call_number.search' => { id => { '!=' => undef } }, { limit => 1, order_by => { acn => 'id desc' } } )->gather(1);
+        my $cn = $cstore->request( 'open-ils.cstore.direct.asset.call_number.search' => { id => { '!=' => undef } }, { limit => 1, order_by => { acn => 'id desc' } } )->gather(1);
         $max_cn = int($cn->id) + 1000;
     }
 
     if (!$max_uri) {
-    	my $cn = $cstore->request( 'open-ils.cstore.direct.asset.call_number.search' => { id => { '!=' => undef } }, { limit => 1, order_by => { acn => 'id desc' } } )->gather(1);
+        my $cn = $cstore->request( 'open-ils.cstore.direct.asset.call_number.search' => { id => { '!=' => undef } }, { limit => 1, order_by => { acn => 'id desc' } } )->gather(1);
         $max_uri = int($cn->id) + 1000;
     }
 
     $cstore->disconnect;
 
-	my $document = $parser->parse_string($xml);
+    my $document = $parser->parse_string($xml);
 
-	my @uris = $self->method_lookup("open-ils.ingest.856_uri.object")->run($bib, $max_cn, $max_uri);
-	my @mfr = $self->method_lookup("open-ils.ingest.flat_marc.biblio.xml")->run($document);
-	my @mXfe = $self->method_lookup("open-ils.ingest.extract.field_entry.all.xml")->run($document);
-	my ($fp) = $self->method_lookup("open-ils.ingest.fingerprint.xml")->run($xml);
-	my ($rd) = $self->method_lookup("open-ils.ingest.descriptor.xml")->run($xml);
+    my @uris = $self->method_lookup("open-ils.ingest.856_uri.object")->run($bib, $max_cn, $max_uri);
+    my @mfr = $self->method_lookup("open-ils.ingest.flat_marc.biblio.xml")->run($document);
+    my @mXfe = $self->method_lookup("open-ils.ingest.extract.field_entry.all.xml")->run($document);
+    my ($fp) = $self->method_lookup("open-ils.ingest.fingerprint.xml")->run($xml);
+    my ($rd) = $self->method_lookup("open-ils.ingest.descriptor.xml")->run($xml);
 
-	$_->source($bib->id) for (@mXfe);
-	$_->record($bib->id) for (@mfr);
-	$rd->record($bib->id) if ($rd);
+    $_->source($bib->id) for (@mXfe);
+    $_->record($bib->id) for (@mfr);
+    $rd->record($bib->id) if ($rd);
 
-	return { full_rec => \@mfr, field_entries => \@mXfe, fingerprint => $fp, descriptor => $rd, uri => \@uris };
+    return { full_rec => \@mfr, field_entries => \@mXfe, fingerprint => $fp, descriptor => $rd, uri => \@uris };
 }
 __PACKAGE__->register_method(  
-	api_name	=> "open-ils.ingest.full.biblio.object.readonly",
-	method		=> "ro_biblio_ingest_single_object",
-	api_level	=> 1,
-	argc		=> 1,
+    api_name    => "open-ils.ingest.full.biblio.object.readonly",
+    method        => "ro_biblio_ingest_single_object",
+    api_level    => 1,
+    argc        => 1,
 );                      
 
 sub ro_biblio_ingest_single_xml {
-	my $self = shift;
-	my $client = shift;
-	my $xml = OpenILS::Application::Ingest::entityize(shift);
+    my $self = shift;
+    my $client = shift;
+    my $xml = OpenILS::Application::Ingest::entityize(shift);
 
-	my $document = $parser->parse_string($xml);
+    my $document = $parser->parse_string($xml);
 
-	my @mfr = $self->method_lookup("open-ils.ingest.flat_marc.biblio.xml")->run($document);
-	my @mXfe = $self->method_lookup("open-ils.ingest.extract.field_entry.all.xml")->run($document);
-	my ($fp) = $self->method_lookup("open-ils.ingest.fingerprint.xml")->run($xml);
-	my ($rd) = $self->method_lookup("open-ils.ingest.descriptor.xml")->run($xml);
+    my @mfr = $self->method_lookup("open-ils.ingest.flat_marc.biblio.xml")->run($document);
+    my @mXfe = $self->method_lookup("open-ils.ingest.extract.field_entry.all.xml")->run($document);
+    my ($fp) = $self->method_lookup("open-ils.ingest.fingerprint.xml")->run($xml);
+    my ($rd) = $self->method_lookup("open-ils.ingest.descriptor.xml")->run($xml);
 
-	return { full_rec => \@mfr, field_entries => \@mXfe, fingerprint => $fp, descriptor => $rd };
+    return { full_rec => \@mfr, field_entries => \@mXfe, fingerprint => $fp, descriptor => $rd };
 }
 __PACKAGE__->register_method(  
-	api_name	=> "open-ils.ingest.full.biblio.xml.readonly",
-	method		=> "ro_biblio_ingest_single_xml",
-	api_level	=> 1,
-	argc		=> 1,
+    api_name    => "open-ils.ingest.full.biblio.xml.readonly",
+    method        => "ro_biblio_ingest_single_xml",
+    api_level    => 1,
+    argc        => 1,
 );                      
 
 sub ro_biblio_ingest_single_record {
-	my $self = shift;
-	my $client = shift;
-	my $rec = shift;
+    my $self = shift;
+    my $client = shift;
+    my $rec = shift;
 
-	OpenILS::Application::Ingest->post_init();
-	my $r = OpenSRF::AppSession
-			->create('open-ils.cstore')
-			->request( 'open-ils.cstore.direct.biblio.record_entry.retrieve' => $rec )
-			->gather(1);
+    OpenILS::Application::Ingest->post_init();
+    my $r = OpenSRF::AppSession
+            ->create('open-ils.cstore')
+            ->request( 'open-ils.cstore.direct.biblio.record_entry.retrieve' => $rec )
+            ->gather(1);
 
-	return undef unless ($r and @$r);
+    return undef unless ($r and @$r);
 
-	my ($res) = $self->method_lookup("open-ils.ingest.full.biblio.xml.readonly")->run($r->marc);
+    my ($res) = $self->method_lookup("open-ils.ingest.full.biblio.xml.readonly")->run($r->marc);
 
-	$_->source($rec) for (@{$res->{field_entries}});
-	$_->record($rec) for (@{$res->{full_rec}});
-	$res->{descriptor}->record($rec);
+    $_->source($rec) for (@{$res->{field_entries}});
+    $_->record($rec) for (@{$res->{full_rec}});
+    $res->{descriptor}->record($rec);
 
-	return $res;
+    return $res;
 }
 __PACKAGE__->register_method(  
-	api_name	=> "open-ils.ingest.full.biblio.record.readonly",
-	method		=> "ro_biblio_ingest_single_record",
-	api_level	=> 1,
-	argc		=> 1,
+    api_name    => "open-ils.ingest.full.biblio.record.readonly",
+    method        => "ro_biblio_ingest_single_record",
+    api_level    => 1,
+    argc        => 1,
 );                      
 
 sub ro_biblio_ingest_stream_record {
-	my $self = shift;
-	my $client = shift;
+    my $self = shift;
+    my $client = shift;
 
-	OpenILS::Application::Ingest->post_init();
+    OpenILS::Application::Ingest->post_init();
 
-	my $ses = OpenSRF::AppSession->create('open-ils.cstore');
+    my $ses = OpenSRF::AppSession->create('open-ils.cstore');
 
-	while (my ($resp) = $client->recv( count => 1, timeout => 5 )) {
-	
-		my $rec = $resp->content;
-		last unless (defined $rec);
+    while (my ($resp) = $client->recv( count => 1, timeout => 5 )) {
+    
+        my $rec = $resp->content;
+        last unless (defined $rec);
 
-		$log->debug("Running open-ils.ingest.full.biblio.record.readonly ...");
-		my ($res) = $self->method_lookup("open-ils.ingest.full.biblio.record.readonly")->run($rec);
+        $log->debug("Running open-ils.ingest.full.biblio.record.readonly ...");
+        my ($res) = $self->method_lookup("open-ils.ingest.full.biblio.record.readonly")->run($rec);
 
-		$_->source($rec) for (@{$res->{field_entries}});
-		$_->record($rec) for (@{$res->{full_rec}});
+        $_->source($rec) for (@{$res->{field_entries}});
+        $_->record($rec) for (@{$res->{full_rec}});
 
-		$client->respond( $res );
-	}
+        $client->respond( $res );
+    }
 
-	return undef;
+    return undef;
 }
 __PACKAGE__->register_method(  
-	api_name	=> "open-ils.ingest.full.biblio.record_stream.readonly",
-	method		=> "ro_biblio_ingest_stream_record",
-	api_level	=> 1,
-	stream		=> 1,
+    api_name    => "open-ils.ingest.full.biblio.record_stream.readonly",
+    method        => "ro_biblio_ingest_stream_record",
+    api_level    => 1,
+    stream        => 1,
 );                      
 
 sub ro_biblio_ingest_stream_xml {
-	my $self = shift;
-	my $client = shift;
+    my $self = shift;
+    my $client = shift;
 
-	OpenILS::Application::Ingest->post_init();
+    OpenILS::Application::Ingest->post_init();
 
-	my $ses = OpenSRF::AppSession->create('open-ils.cstore');
+    my $ses = OpenSRF::AppSession->create('open-ils.cstore');
 
-	while (my ($resp) = $client->recv( count => 1, timeout => 5 )) {
-	
-		my $xml = $resp->content;
-		last unless (defined $xml);
+    while (my ($resp) = $client->recv( count => 1, timeout => 5 )) {
+    
+        my $xml = $resp->content;
+        last unless (defined $xml);
 
-		$log->debug("Running open-ils.ingest.full.biblio.xml.readonly ...");
-		my ($res) = $self->method_lookup("open-ils.ingest.full.biblio.xml.readonly")->run($xml);
+        $log->debug("Running open-ils.ingest.full.biblio.xml.readonly ...");
+        my ($res) = $self->method_lookup("open-ils.ingest.full.biblio.xml.readonly")->run($xml);
 
-		$client->respond( $res );
-	}
+        $client->respond( $res );
+    }
 
-	return undef;
+    return undef;
 }
 __PACKAGE__->register_method(  
-	api_name	=> "open-ils.ingest.full.biblio.xml_stream.readonly",
-	method		=> "ro_biblio_ingest_stream_xml",
-	api_level	=> 1,
-	stream		=> 1,
+    api_name    => "open-ils.ingest.full.biblio.xml_stream.readonly",
+    method        => "ro_biblio_ingest_stream_xml",
+    api_level    => 1,
+    stream        => 1,
 );                      
 
 sub rw_biblio_ingest_stream_import {
-	my $self = shift;
-	my $client = shift;
+    my $self = shift;
+    my $client = shift;
 
-	OpenILS::Application::Ingest->post_init();
+    OpenILS::Application::Ingest->post_init();
 
-	my $ses = OpenSRF::AppSession->create('open-ils.cstore');
+    my $ses = OpenSRF::AppSession->create('open-ils.cstore');
 
-	while (my ($resp) = $client->recv( count => 1, timeout => 5 )) {
-	
-		my $bib = $resp->content;
-		last unless (defined $bib);
+    while (my ($resp) = $client->recv( count => 1, timeout => 5 )) {
+    
+        my $bib = $resp->content;
+        last unless (defined $bib);
 
-		$log->debug("Running open-ils.ingest.full.biblio.xml.readonly ...");
-		my ($res) = $self->method_lookup("open-ils.ingest.full.biblio.xml.readonly")->run($bib->marc);
+        $log->debug("Running open-ils.ingest.full.biblio.xml.readonly ...");
+        my ($res) = $self->method_lookup("open-ils.ingest.full.biblio.xml.readonly")->run($bib->marc);
 
-		$_->source($bib->id) for (@{$res->{field_entries}});
-		$_->record($bib->id) for (@{$res->{full_rec}});
+        $_->source($bib->id) for (@{$res->{field_entries}});
+        $_->record($bib->id) for (@{$res->{full_rec}});
 
-		$client->respond( $res );
-	}
+        $client->respond( $res );
+    }
 
-	return undef;
+    return undef;
 }
 __PACKAGE__->register_method(  
-	api_name	=> "open-ils.ingest.full.biblio.bib_stream.import",
-	method		=> "rw_biblio_ingest_stream_import",
-	api_level	=> 1,
-	stream		=> 1,
+    api_name    => "open-ils.ingest.full.biblio.bib_stream.import",
+    method        => "rw_biblio_ingest_stream_import",
+    api_level    => 1,
+    stream        => 1,
 );                      
 
 
@@ -587,157 +587,157 @@
 use Unicode::Normalize;
 
 sub ro_authority_ingest_single_object {
-	my $self = shift;
-	my $client = shift;
-	my $bib = shift;
-	my $xml = OpenILS::Application::Ingest::entityize($bib->marc);
+    my $self = shift;
+    my $client = shift;
+    my $bib = shift;
+    my $xml = OpenILS::Application::Ingest::entityize($bib->marc);
 
-	my $document = $parser->parse_string($xml);
+    my $document = $parser->parse_string($xml);
 
-	my @mfr = $self->method_lookup("open-ils.ingest.flat_marc.authority.xml")->run($document);
+    my @mfr = $self->method_lookup("open-ils.ingest.flat_marc.authority.xml")->run($document);
 
-	$_->record($bib->id) for (@mfr);
+    $_->record($bib->id) for (@mfr);
 
-	return { full_rec => \@mfr };
+    return { full_rec => \@mfr };
 }
 __PACKAGE__->register_method(  
-	api_name	=> "open-ils.ingest.full.authority.object.readonly",
-	method		=> "ro_authority_ingest_single_object",
-	api_level	=> 1,
-	argc		=> 1,
+    api_name    => "open-ils.ingest.full.authority.object.readonly",
+    method        => "ro_authority_ingest_single_object",
+    api_level    => 1,
+    argc        => 1,
 );                      
 
 sub ro_authority_ingest_single_xml {
-	my $self = shift;
-	my $client = shift;
-	my $xml = OpenILS::Application::Ingest::entityize(shift);
+    my $self = shift;
+    my $client = shift;
+    my $xml = OpenILS::Application::Ingest::entityize(shift);
 
-	my $document = $parser->parse_string($xml);
+    my $document = $parser->parse_string($xml);
 
-	my @mfr = $self->method_lookup("open-ils.ingest.flat_marc.authority.xml")->run($document);
+    my @mfr = $self->method_lookup("open-ils.ingest.flat_marc.authority.xml")->run($document);
 
-	return { full_rec => \@mfr };
+    return { full_rec => \@mfr };
 }
 __PACKAGE__->register_method(  
-	api_name	=> "open-ils.ingest.full.authority.xml.readonly",
-	method		=> "ro_authority_ingest_single_xml",
-	api_level	=> 1,
-	argc		=> 1,
+    api_name    => "open-ils.ingest.full.authority.xml.readonly",
+    method        => "ro_authority_ingest_single_xml",
+    api_level    => 1,
+    argc        => 1,
 );                      
 
 sub ro_authority_ingest_single_record {
-	my $self = shift;
-	my $client = shift;
-	my $rec = shift;
+    my $self = shift;
+    my $client = shift;
+    my $rec = shift;
 
-	OpenILS::Application::Ingest->post_init();
-	my $r = OpenSRF::AppSession
-			->create('open-ils.cstore')
-			->request( 'open-ils.cstore.direct.authority.record_entry.retrieve' => $rec )
-			->gather(1);
+    OpenILS::Application::Ingest->post_init();
+    my $r = OpenSRF::AppSession
+            ->create('open-ils.cstore')
+            ->request( 'open-ils.cstore.direct.authority.record_entry.retrieve' => $rec )
+            ->gather(1);
 
-	return undef unless ($r and @$r);
+    return undef unless ($r and @$r);
 
-	my ($res) = $self->method_lookup("open-ils.ingest.full.authority.xml.readonly")->run($r->marc);
+    my ($res) = $self->method_lookup("open-ils.ingest.full.authority.xml.readonly")->run($r->marc);
 
-	$_->record($rec) for (@{$res->{full_rec}});
-	$res->{descriptor}->record($rec);
+    $_->record($rec) for (@{$res->{full_rec}});
+    $res->{descriptor}->record($rec);
 
-	return $res;
+    return $res;
 }
 __PACKAGE__->register_method(  
-	api_name	=> "open-ils.ingest.full.authority.record.readonly",
-	method		=> "ro_authority_ingest_single_record",
-	api_level	=> 1,
-	argc		=> 1,
+    api_name    => "open-ils.ingest.full.authority.record.readonly",
+    method        => "ro_authority_ingest_single_record",
+    api_level    => 1,
+    argc        => 1,
 );                      
 
 sub ro_authority_ingest_stream_record {
-	my $self = shift;
-	my $client = shift;
+    my $self = shift;
+    my $client = shift;
 
-	OpenILS::Application::Ingest->post_init();
+    OpenILS::Application::Ingest->post_init();
 
-	my $ses = OpenSRF::AppSession->create('open-ils.cstore');
+    my $ses = OpenSRF::AppSession->create('open-ils.cstore');
 
-	while (my ($resp) = $client->recv( count => 1, timeout => 5 )) {
-	
-		my $rec = $resp->content;
-		last unless (defined $rec);
+    while (my ($resp) = $client->recv( count => 1, timeout => 5 )) {
+    
+        my $rec = $resp->content;
+        last unless (defined $rec);
 
-		$log->debug("Running open-ils.ingest.full.authority.record.readonly ...");
-		my ($res) = $self->method_lookup("open-ils.ingest.full.authority.record.readonly")->run($rec);
+        $log->debug("Running open-ils.ingest.full.authority.record.readonly ...");
+        my ($res) = $self->method_lookup("open-ils.ingest.full.authority.record.readonly")->run($rec);
 
-		$_->record($rec) for (@{$res->{full_rec}});
+        $_->record($rec) for (@{$res->{full_rec}});
 
-		$client->respond( $res );
-	}
+        $client->respond( $res );
+    }
 
-	return undef;
+    return undef;
 }
 __PACKAGE__->register_method(  
-	api_name	=> "open-ils.ingest.full.authority.record_stream.readonly",
-	method		=> "ro_authority_ingest_stream_record",
-	api_level	=> 1,
-	stream		=> 1,
+    api_name    => "open-ils.ingest.full.authority.record_stream.readonly",
+    method        => "ro_authority_ingest_stream_record",
+    api_level    => 1,
+    stream        => 1,
 );                      
 
 sub ro_authority_ingest_stream_xml {
-	my $self = shift;
-	my $client = shift;
+    my $self = shift;
+    my $client = shift;
 
-	OpenILS::Application::Ingest->post_init();
+    OpenILS::Application::Ingest->post_init();
 
-	my $ses = OpenSRF::AppSession->create('open-ils.cstore');
+    my $ses = OpenSRF::AppSession->create('open-ils.cstore');
 
-	while (my ($resp) = $client->recv( count => 1, timeout => 5 )) {
-	
-		my $xml = $resp->content;
-		last unless (defined $xml);
+    while (my ($resp) = $client->recv( count => 1, timeout => 5 )) {
+    
+        my $xml = $resp->content;
+        last unless (defined $xml);
 
-		$log->debug("Running open-ils.ingest.full.authority.xml.readonly ...");
-		my ($res) = $self->method_lookup("open-ils.ingest.full.authority.xml.readonly")->run($xml);
+        $log->debug("Running open-ils.ingest.full.authority.xml.readonly ...");
+        my ($res) = $self->method_lookup("open-ils.ingest.full.authority.xml.readonly")->run($xml);
 
-		$client->respond( $res );
-	}
+        $client->respond( $res );
+    }
 
-	return undef;
+    return undef;
 }
 __PACKAGE__->register_method(  
-	api_name	=> "open-ils.ingest.full.authority.xml_stream.readonly",
-	method		=> "ro_authority_ingest_stream_xml",
-	api_level	=> 1,
-	stream		=> 1,
+    api_name    => "open-ils.ingest.full.authority.xml_stream.readonly",
+    method        => "ro_authority_ingest_stream_xml",
+    api_level    => 1,
+    stream        => 1,
 );                      
 
 sub rw_authority_ingest_stream_import {
-	my $self = shift;
-	my $client = shift;
+    my $self = shift;
+    my $client = shift;
 
-	OpenILS::Application::Ingest->post_init();
+    OpenILS::Application::Ingest->post_init();
 
-	my $ses = OpenSRF::AppSession->create('open-ils.cstore');
+    my $ses = OpenSRF::AppSession->create('open-ils.cstore');
 
-	while (my ($resp) = $client->recv( count => 1, timeout => 5 )) {
-	
-		my $bib = $resp->content;
-		last unless (defined $bib);
+    while (my ($resp) = $client->recv( count => 1, timeout => 5 )) {
+    
+        my $bib = $resp->content;
+        last unless (defined $bib);
 
-		$log->debug("Running open-ils.ingest.full.authority.xml.readonly ...");
-		my ($res) = $self->method_lookup("open-ils.ingest.full.authority.xml.readonly")->run($bib->marc);
+        $log->debug("Running open-ils.ingest.full.authority.xml.readonly ...");
+        my ($res) = $self->method_lookup("open-ils.ingest.full.authority.xml.readonly")->run($bib->marc);
 
-		$_->record($bib->id) for (@{$res->{full_rec}});
+        $_->record($bib->id) for (@{$res->{full_rec}});
 
-		$client->respond( $res );
-	}
+        $client->respond( $res );
+    }
 
-	return undef;
+    return undef;
 }
 __PACKAGE__->register_method(  
-	api_name	=> "open-ils.ingest.full.authority.bib_stream.import",
-	method		=> "rw_authority_ingest_stream_import",
-	api_level	=> 1,
-	stream		=> 1,
+    api_name    => "open-ils.ingest.full.authority.bib_stream.import",
+    method        => "rw_authority_ingest_stream_import",
+    api_level    => 1,
+    stream        => 1,
 );                      
 
 
@@ -750,168 +750,168 @@
 
 # give this an XML documentElement and an XPATH expression
 sub xpath_to_string {
-	my $xml = shift;
-	my $xpath = shift;
-	my $ns_uri = shift;
-	my $ns_prefix = shift;
-	my $unique = shift;
+    my $xml = shift;
+    my $xpath = shift;
+    my $ns_uri = shift;
+    my $ns_prefix = shift;
+    my $unique = shift;
 
-	$xml->setNamespace( $ns_uri, $ns_prefix, 1 ) if ($ns_uri && $ns_prefix);
+    $xml->setNamespace( $ns_uri, $ns_prefix, 1 ) if ($ns_uri && $ns_prefix);
 
-	my $string = "";
+    my $string = "";
 
-	# grab the set of matching nodes
-	my @nodes = $xml->findnodes( $xpath );
-	for my $value (@nodes) {
+    # grab the set of matching nodes
+    my @nodes = $xml->findnodes( $xpath );
+    for my $value (@nodes) {
 
-		# grab all children of the node
-		my @children = $value->childNodes();
-		for my $child (@children) {
+        # grab all children of the node
+        my @children = $value->childNodes();
+        for my $child (@children) {
 
-			# add the childs content to the growing buffer
-			my $content = quotemeta($child->textContent);
-			next if ($unique && $string =~ /$content/);  # uniquify the values
-			$string .= $child->textContent . " ";
-		}
-		if( ! @children ) {
-			$string .= $value->textContent . " ";
-		}
-	}
+            # add the childs content to the growing buffer
+            my $content = quotemeta($child->textContent);
+            next if ($unique && $string =~ /$content/);  # uniquify the values
+            $string .= $child->textContent . " ";
+        }
+        if( ! @children ) {
+            $string .= $value->textContent . " ";
+        }
+    }
 
     $string =~ s/(\w+)\/(\w+)/$1 $2/sgo;
     $string =~ s/(\d{4})-(\d{4})/$1 $2/sgo;
 
-	return NFD($string);
+    return NFD($string);
 }
 
 sub class_index_string_xml {
-	my $self = shift;
-	my $client = shift;
-	my $xml = shift;
-	my @classes = @_;
+    my $self = shift;
+    my $client = shift;
+    my $xml = shift;
+    my @classes = @_;
 
-	OpenILS::Application::Ingest->post_init();
-	$xml = $parser->parse_string(OpenILS::Application::Ingest::entityize($xml)) unless (ref $xml);
+    OpenILS::Application::Ingest->post_init();
+    $xml = $parser->parse_string(OpenILS::Application::Ingest::entityize($xml)) unless (ref $xml);
 
-	my %transform_cache;
-	
-	for my $class (@classes) {
-		my $class_constructor = "Fieldmapper::metabib::${class}_field_entry";
-		for my $type ( keys %{ $xpathset->{$class} } ) {
+    my %transform_cache;
+    
+    for my $class (@classes) {
+        my $class_constructor = "Fieldmapper::metabib::${class}_field_entry";
+        for my $type ( keys %{ $xpathset->{$class} } ) {
 
-			my $def = $xpathset->{$class}->{$type};
-			my $sf = $OpenILS::Application::Ingest::supported_formats{$def->{format}};
+            my $def = $xpathset->{$class}->{$type};
+            my $sf = $OpenILS::Application::Ingest::supported_formats{$def->{format}};
 
-			my $document = $xml;
+            my $document = $xml;
 
-			if ($sf->{xslt}) {
-				$document = $transform_cache{$def->{format}} || $sf->{xslt}->transform($xml);
-				$transform_cache{$def->{format}} = $document;
-			}
+            if ($sf->{xslt}) {
+                $document = $transform_cache{$def->{format}} || $sf->{xslt}->transform($xml);
+                $transform_cache{$def->{format}} = $document;
+            }
 
-			my $value =  xpath_to_string(
-					$document->documentElement	=> $def->{xpath},
-					$sf->{ns}			=> $def->{format},
-					1
-			);
+            my $value =  xpath_to_string(
+                    $document->documentElement    => $def->{xpath},
+                    $sf->{ns}            => $def->{format},
+                    1
+            );
 
-			next unless $value;
+            next unless $value;
 
-			$value = NFD($value);
-			$value =~ s/\pM+//sgo;
-			$value =~ s/\pC+//sgo;
-			$value =~ s/\W+$//sgo;
+            $value = NFD($value);
+            $value =~ s/\pM+//sgo;
+            $value =~ s/\pC+//sgo;
+            $value =~ s/\W+$//sgo;
 
-			$value =~ s/\b\.+\b//sgo;
-			$value = lc($value);
+            $value =~ s/\b\.+\b//sgo;
+            $value = lc($value);
 
-			my $fm = $class_constructor->new;
-			$fm->value( $value );
-			$fm->field( $xpathset->{$class}->{$type}->{id} );
-			$client->respond($fm);
-		}
-	}
-	return undef;
+            my $fm = $class_constructor->new;
+            $fm->value( $value );
+            $fm->field( $xpathset->{$class}->{$type}->{id} );
+            $client->respond($fm);
+        }
+    }
+    return undef;
 }
 __PACKAGE__->register_method(  
-	api_name	=> "open-ils.ingest.field_entry.class.xml",
-	method		=> "class_index_string_xml",
-	api_level	=> 1,
-	argc		=> 2,
-	stream		=> 1,
+    api_name    => "open-ils.ingest.field_entry.class.xml",
+    method        => "class_index_string_xml",
+    api_level    => 1,
+    argc        => 2,
+    stream        => 1,
 );                      
 
 sub class_index_string_record {
-	my $self = shift;
-	my $client = shift;
-	my $rec = shift;
-	my @classes = shift;
+    my $self = shift;
+    my $client = shift;
+    my $rec = shift;
+    my @classes = shift;
 
-	OpenILS::Application::Ingest->post_init();
-	my $r = OpenSRF::AppSession
-			->create('open-ils.cstore')
-			->request( 'open-ils.cstore.direct.authority.record_entry.retrieve' => $rec )
-			->gather(1);
+    OpenILS::Application::Ingest->post_init();
+    my $r = OpenSRF::AppSession
+            ->create('open-ils.cstore')
+            ->request( 'open-ils.cstore.direct.authority.record_entry.retrieve' => $rec )
+            ->gather(1);
 
-	return undef unless ($r and @$r);
+    return undef unless ($r and @$r);
 
-	for my $fm ($self->method_lookup("open-ils.ingest.field_entry.class.xml")->run($r->marc, @classes)) {
-		$fm->source($rec);
-		$client->respond($fm);
-	}
-	return undef;
+    for my $fm ($self->method_lookup("open-ils.ingest.field_entry.class.xml")->run($r->marc, @classes)) {
+        $fm->source($rec);
+        $client->respond($fm);
+    }
+    return undef;
 }
 __PACKAGE__->register_method(  
-	api_name	=> "open-ils.ingest.field_entry.class.record",
-	method		=> "class_index_string_record",
-	api_level	=> 1,
-	argc		=> 2,
-	stream		=> 1,
+    api_name    => "open-ils.ingest.field_entry.class.record",
+    method        => "class_index_string_record",
+    api_level    => 1,
+    argc        => 2,
+    stream        => 1,
 );                      
 
 sub all_index_string_xml {
-	my $self = shift;
-	my $client = shift;
-	my $xml = shift;
+    my $self = shift;
+    my $client = shift;
+    my $xml = shift;
 
-	for my $fm ($self->method_lookup("open-ils.ingest.field_entry.class.xml")->run($xml, keys(%$xpathset))) {
-		$client->respond($fm);
-	}
-	return undef;
+    for my $fm ($self->method_lookup("open-ils.ingest.field_entry.class.xml")->run($xml, keys(%$xpathset))) {
+        $client->respond($fm);
+    }
+    return undef;
 }
 __PACKAGE__->register_method(  
-	api_name	=> "open-ils.ingest.extract.field_entry.all.xml",
-	method		=> "all_index_string_xml",
-	api_level	=> 1,
-	argc		=> 1,
-	stream		=> 1,
+    api_name    => "open-ils.ingest.extract.field_entry.all.xml",
+    method        => "all_index_string_xml",
+    api_level    => 1,
+    argc        => 1,
+    stream        => 1,
 );                      
 
 sub all_index_string_record {
-	my $self = shift;
-	my $client = shift;
-	my $rec = shift;
+    my $self = shift;
+    my $client = shift;
+    my $rec = shift;
 
-	OpenILS::Application::Ingest->post_init();
-	my $r = OpenSRF::AppSession
-			->create('open-ils.cstore')
-			->request( 'open-ils.cstore.direct.biblio.record_entry.retrieve' => $rec )
-			->gather(1);
+    OpenILS::Application::Ingest->post_init();
+    my $r = OpenSRF::AppSession
+            ->create('open-ils.cstore')
+            ->request( 'open-ils.cstore.direct.biblio.record_entry.retrieve' => $rec )
+            ->gather(1);
 
-	return undef unless ($r and @$r);
+    return undef unless ($r and @$r);
 
-	for my $fm ($self->method_lookup("open-ils.ingest.field_entry.class.xml")->run($r->marc, keys(%$xpathset))) {
-		$fm->source($rec);
-		$client->respond($fm);
-	}
-	return undef;
+    for my $fm ($self->method_lookup("open-ils.ingest.field_entry.class.xml")->run($r->marc, keys(%$xpathset))) {
+        $fm->source($rec);
+        $client->respond($fm);
+    }
+    return undef;
 }
 __PACKAGE__->register_method(  
-	api_name	=> "open-ils.ingest.extract.field_entry.all.record",
-	method		=> "all_index_string_record",
-	api_level	=> 1,
-	argc		=> 1,
-	stream		=> 1,
+    api_name    => "open-ils.ingest.extract.field_entry.all.record",
+    method        => "all_index_string_record",
+    api_level    => 1,
+    argc        => 1,
+    stream        => 1,
 );                      
 
 # --------------------------------------------------------------------------------
@@ -924,174 +924,174 @@
 
 sub _marcxml_to_full_rows {
 
-	my $marcxml = shift;
-	my $xmltype = shift || 'metabib';
+    my $marcxml = shift;
+    my $xmltype = shift || 'metabib';
 
-	my $type = "Fieldmapper::${xmltype}::full_rec";
+    my $type = "Fieldmapper::${xmltype}::full_rec";
 
-	my @ns_list;
-	
-	my ($root) = $marcxml->findnodes('//*[local-name()="record"]');
+    my @ns_list;
+    
+    my ($root) = $marcxml->findnodes('//*[local-name()="record"]');
 
-	for my $tagline ( @{$root->getChildrenByTagName("leader")} ) {
-		next unless $tagline;
+    for my $tagline ( @{$root->getChildrenByTagName("leader")} ) {
+        next unless $tagline;
 
-		my $ns = $type->new;
+        my $ns = $type->new;
 
-		$ns->tag( 'LDR' );
-		my $val = $tagline->textContent;
-		$val = NFD($val);
-		$val =~ s/\pM+//sgo;
-		$val =~ s/\pC+//sgo;
-		$val =~ s/\W+$//sgo;
-		$ns->value( $val );
+        $ns->tag( 'LDR' );
+        my $val = $tagline->textContent;
+        $val = NFD($val);
+        $val =~ s/\pM+//sgo;
+        $val =~ s/\pC+//sgo;
+        $val =~ s/\W+$//sgo;
+        $ns->value( $val );
 
-		push @ns_list, $ns;
-	}
+        push @ns_list, $ns;
+    }
 
-	for my $tagline ( @{$root->getChildrenByTagName("controlfield")} ) {
-		next unless $tagline;
+    for my $tagline ( @{$root->getChildrenByTagName("controlfield")} ) {
+        next unless $tagline;
 
-		my $ns = $type->new;
+        my $ns = $type->new;
 
-		$ns->tag( $tagline->getAttribute( "tag" ) );
-		my $val = $tagline->textContent;
-		$val = NFD($val);
-		$val =~ s/\pM+//sgo;
-		$val =~ s/\pC+//sgo;
-		$val =~ s/\W+$//sgo;
-		$ns->value( $val );
+        $ns->tag( $tagline->getAttribute( "tag" ) );
+        my $val = $tagline->textContent;
+        $val = NFD($val);
+        $val =~ s/\pM+//sgo;
+        $val =~ s/\pC+//sgo;
+        $val =~ s/\W+$//sgo;
+        $ns->value( $val );
 
-		push @ns_list, $ns;
-	}
+        push @ns_list, $ns;
+    }
 
-	for my $tagline ( @{$root->getChildrenByTagName("datafield")} ) {
-		next unless $tagline;
+    for my $tagline ( @{$root->getChildrenByTagName("datafield")} ) {
+        next unless $tagline;
 
-		my $tag = $tagline->getAttribute( "tag" );
-		my $ind1 = $tagline->getAttribute( "ind1" );
-		my $ind2 = $tagline->getAttribute( "ind2" );
+        my $tag = $tagline->getAttribute( "tag" );
+        my $ind1 = $tagline->getAttribute( "ind1" );
+        my $ind2 = $tagline->getAttribute( "ind2" );
 
-		for my $data ( @{$tagline->getChildrenByTagName('subfield')} ) {
-			next unless $data;
+        for my $data ( @{$tagline->getChildrenByTagName('subfield')} ) {
+            next unless $data;
 
-			my $ns = $type->new;
+            my $ns = $type->new;
 
-			$ns->tag( $tag );
-			$ns->ind1( $ind1 );
-			$ns->ind2( $ind2 );
-			$ns->subfield( $data->getAttribute( "code" ) );
-			my $val = $data->textContent;
-			$val = NFD($val);
-			$val =~ s/\pM+//sgo;
-			$val =~ s/\pC+//sgo;
-			$val =~ s/\W+$//sgo;
+            $ns->tag( $tag );
+            $ns->ind1( $ind1 );
+            $ns->ind2( $ind2 );
+            $ns->subfield( $data->getAttribute( "code" ) );
+            my $val = $data->textContent;
+            $val = NFD($val);
+            $val =~ s/\pM+//sgo;
+            $val =~ s/\pC+//sgo;
+            $val =~ s/\W+$//sgo;
             $val =~ s/(\d{4})-(\d{4})/$1 $2/sgo;
             $val =~ s/(\w+)\/(\w+)/$1 $2/sgo;
-			$ns->value( lc($val) );
+            $ns->value( lc($val) );
 
-			push @ns_list, $ns;
-		}
+            push @ns_list, $ns;
+        }
 
         if ($xmltype eq 'metabib' and $tag eq '245') {
-       		$tag = 'tnf';
+               $tag = 'tnf';
     
-    		for my $data ( @{$tagline->getChildrenByTagName('subfield')} ) {
-    			next unless ($data and $data->getAttribute( "code" ) eq 'a');
+            for my $data ( @{$tagline->getChildrenByTagName('subfield')} ) {
+                next unless ($data and $data->getAttribute( "code" ) eq 'a');
     
-    			$ns = $type->new;
+                $ns = $type->new;
     
-    			$ns->tag( $tag );
-    			$ns->ind1( $ind1 );
-    			$ns->ind2( $ind2 );
-    			$ns->subfield( $data->getAttribute( "code" ) );
-    			my $val = substr( $data->textContent, $ind2 );
-    			$val = NFD($val);
-    			$val =~ s/\pM+//sgo;
-    			$val =~ s/\pC+//sgo;
-    			$val =~ s/\W+$//sgo;
+                $ns->tag( $tag );
+                $ns->ind1( $ind1 );
+                $ns->ind2( $ind2 );
+                $ns->subfield( $data->getAttribute( "code" ) );
+                my $val = substr( $data->textContent, $ind2 );
+                $val = NFD($val);
+                $val =~ s/\pM+//sgo;
+                $val =~ s/\pC+//sgo;
+                $val =~ s/\W+$//sgo;
                 $val =~ s/(\w+)\/(\w+)/$1 $2/sgo;
                 $val =~ s/(\d{4})-(\d{4})/$1 $2/sgo;
-    			$ns->value( lc($val) );
+                $ns->value( lc($val) );
     
-    			push @ns_list, $ns;
-    		}
+                push @ns_list, $ns;
+            }
         }
-	}
+    }
 
-	$log->debug("Returning ".scalar(@ns_list)." Fieldmapper nodes from $xmltype xml");
-	return @ns_list;
+    $log->debug("Returning ".scalar(@ns_list)." Fieldmapper nodes from $xmltype xml");
+    return @ns_list;
 }
 
 sub flat_marc_xml {
-	my $self = shift;
-	my $client = shift;
-	my $xml = shift;
+    my $self = shift;
+    my $client = shift;
+    my $xml = shift;
 
-	$log->debug("processing [$xml]");
+    $log->debug("processing [$xml]");
 
-	$xml = $parser->parse_string(OpenILS::Application::Ingest::entityize($xml)) unless (ref $xml);
+    $xml = $parser->parse_string(OpenILS::Application::Ingest::entityize($xml)) unless (ref $xml);
 
-	my $type = 'metabib';
-	$type = 'authority' if ($self->api_name =~ /authority/o);
+    my $type = 'metabib';
+    $type = 'authority' if ($self->api_name =~ /authority/o);
 
-	OpenILS::Application::Ingest->post_init();
+    OpenILS::Application::Ingest->post_init();
 
-	$client->respond($_) for (_marcxml_to_full_rows($xml, $type));
-	return undef;
+    $client->respond($_) for (_marcxml_to_full_rows($xml, $type));
+    return undef;
 }
 __PACKAGE__->register_method(  
-	api_name	=> "open-ils.ingest.flat_marc.authority.xml",
-	method		=> "flat_marc_xml",
-	api_level	=> 1,
-	argc		=> 1,
-	stream		=> 1,
+    api_name    => "open-ils.ingest.flat_marc.authority.xml",
+    method        => "flat_marc_xml",
+    api_level    => 1,
+    argc        => 1,
+    stream        => 1,
 );                      
 __PACKAGE__->register_method(  
-	api_name	=> "open-ils.ingest.flat_marc.biblio.xml",
-	method		=> "flat_marc_xml",
-	api_level	=> 1,
-	argc		=> 1,
-	stream		=> 1,
+    api_name    => "open-ils.ingest.flat_marc.biblio.xml",
+    method        => "flat_marc_xml",
+    api_level    => 1,
+    argc        => 1,
+    stream        => 1,
 );                      
 
 sub flat_marc_record {
-	my $self = shift;
-	my $client = shift;
-	my $rec = shift;
+    my $self = shift;
+    my $client = shift;
+    my $rec = shift;
 
-	my $type = 'biblio';
-	$type = 'authority' if ($self->api_name =~ /authority/o);
+    my $type = 'biblio';
+    $type = 'authority' if ($self->api_name =~ /authority/o);
 
-	OpenILS::Application::Ingest->post_init();
-	my $r = OpenSRF::AppSession
-			->create('open-ils.cstore')
-			->request( "open-ils.cstore.direct.${type}.record_entry.retrieve" => $rec )
-			->gather(1);
+    OpenILS::Application::Ingest->post_init();
+    my $r = OpenSRF::AppSession
+            ->create('open-ils.cstore')
+            ->request( "open-ils.cstore.direct.${type}.record_entry.retrieve" => $rec )
+            ->gather(1);
 
 
-	return undef unless ($r and $r->marc);
+    return undef unless ($r and $r->marc);
 
-	my @rows = $self->method_lookup("open-ils.ingest.flat_marc.$type.xml")->run($r->marc);
-	for my $row (@rows) {
-		$client->respond($row);
-		$log->debug(OpenSRF::Utils::JSON->perl2JSON($row), DEBUG);
-	}
-	return undef;
+    my @rows = $self->method_lookup("open-ils.ingest.flat_marc.$type.xml")->run($r->marc);
+    for my $row (@rows) {
+        $client->respond($row);
+        $log->debug(OpenSRF::Utils::JSON->perl2JSON($row), DEBUG);
+    }
+    return undef;
 }
 __PACKAGE__->register_method(  
-	api_name	=> "open-ils.ingest.flat_marc.biblio.record_entry",
-	method		=> "flat_marc_record",
-	api_level	=> 1,
-	argc		=> 1,
-	stream		=> 1,
+    api_name    => "open-ils.ingest.flat_marc.biblio.record_entry",
+    method        => "flat_marc_record",
+    api_level    => 1,
+    argc        => 1,
+    stream        => 1,
 );                      
 __PACKAGE__->register_method(  
-	api_name	=> "open-ils.ingest.flat_marc.authority.record_entry",
-	method		=> "flat_marc_record",
-	api_level	=> 1,
-	argc		=> 1,
-	stream		=> 1,
+    api_name    => "open-ils.ingest.flat_marc.authority.record_entry",
+    method        => "flat_marc_record",
+    api_level    => 1,
+    argc        => 1,
+    stream        => 1,
 );                      
 
 
@@ -1107,18 +1107,20 @@
 sub _extract_856_uris {
 
     my $rec   = shift;
-	my $max_cn = shift;
-	my $max_uri = shift;
-	my @objects;
-	
+    my $max_cn = shift;
+    my $max_uri = shift;
+    my @objects;
+    
     my $recid = $rec->id;
     my $marcxml = $rec->marc;
 
-	my $document = $parser->parse_string($marcxml);
-	my @nodes = $document->findnodes('//*[local-name()="datafield" and @tag="856" and (@ind1="4" or @ind1="1") and (@ind2="0" or @ind2="1")]');
+    my $document = $parser->parse_string($marcxml);
+    my @nodes = $document->findnodes('//*[local-name()="datafield" and @tag="856" and (@ind1="4" or @ind1="1") and (@ind2="0" or @ind2="1")]');
 
     my $cstore = OpenSRF::AppSession->connect('open-ils.cstore');
 
+    my %cn_cache;
+
     for my $node (@nodes) {
         # first, is there a URI?
         my $href = $node->findvalue('*[local-name()="subfield" and @code="u"]/text()');
@@ -1144,16 +1146,16 @@
         # no owner? skip it :(
         next unless ($owner);
 
-    	my $org = $cstore
+        my $org = $cstore
             ->request( 'open-ils.cstore.direct.actor.org_unit.search' => { shortname => $owner} )
-			->gather(1);
+            ->gather(1);
 
         next unless ($org);
 
         # now we can construct the uri object
-    	my $uri = $cstore
+        my $uri = $cstore
             ->request( 'open-ils.cstore.direct.asset.uri.search' => { label => $label, href => $href, use_restriction => $use, active => 't' } )
-			->gather(1);
+            ->gather(1);
 
         if (!$uri) {
             $uri = Fieldmapper::asset::uri->new;
@@ -1166,9 +1168,13 @@
         }
 
         # see if we need to create a call number
-    	my $cn = $cstore
+        my $cn = $cn_cache{$org->id};
+        $cn = $cn->clone if ($cn);
+        $cn->clear_isnew if ($cn);
+
+	$cn ||= $cstore
             ->request( 'open-ils.cstore.direct.asset.call_number.search' => { owning_lib => $org->id, record => $recid, label => '##URI##' } )
-			->gather(1);
+            ->gather(1);
 
         if (!$cn) {
             $cn = Fieldmapper::asset::call_number->new;
@@ -1184,55 +1190,57 @@
             $cn->label( '##URI##' );
         }
 
+        $cn_cache{$org->id} = $cn;
+
         push @objects, { uri => $uri, call_number => $cn };
     }
 
-	$log->debug("Returning ".scalar(@objects)." URI nodes for record $recid");
-	return @objects;
+    $log->debug("Returning ".scalar(@objects)." URI nodes for record $recid");
+    return @objects;
 }
 
 sub get_uris_record {
-	my $self = shift;
-	my $client = shift;
-	my $rec = shift;
+    my $self = shift;
+    my $client = shift;
+    my $rec = shift;
 
-	OpenILS::Application::Ingest->post_init();
-	my $r = OpenSRF::AppSession
-			->create('open-ils.cstore')
-			->request( "open-ils.cstore.direct.biblio.record_entry.retrieve" => $rec )
-			->gather(1);
+    OpenILS::Application::Ingest->post_init();
+    my $r = OpenSRF::AppSession
+            ->create('open-ils.cstore')
+            ->request( "open-ils.cstore.direct.biblio.record_entry.retrieve" => $rec )
+            ->gather(1);
 
-	return undef unless ($r and $r->marc);
+    return undef unless ($r and $r->marc);
 
-	$client->respond($_) for (_extract_856_uris($r));
-	return undef;
+    $client->respond($_) for (_extract_856_uris($r));
+    return undef;
 }
 __PACKAGE__->register_method(  
-	api_name	=> "open-ils.ingest.856_uri.record",
-	method		=> "get_uris_record",
-	api_level	=> 1,
-	argc		=> 1,
-	stream		=> 1,
+    api_name    => "open-ils.ingest.856_uri.record",
+    method        => "get_uris_record",
+    api_level    => 1,
+    argc        => 1,
+    stream        => 1,
 );                      
 
 sub get_uris_object {
-	my $self = shift;
-	my $client = shift;
-	my $obj = shift;
-	my $max_cn = shift;
-	my $max_uri = shift;
+    my $self = shift;
+    my $client = shift;
+    my $obj = shift;
+    my $max_cn = shift;
+    my $max_uri = shift;
 
-	return undef unless ($obj and $obj->marc);
+    return undef unless ($obj and $obj->marc);
 
-	$client->respond($_) for (_extract_856_uris($obj, \$max_cn, \$max_uri));
-	return undef;
+    $client->respond($_) for (_extract_856_uris($obj, \$max_cn, \$max_uri));
+    return undef;
 }
 __PACKAGE__->register_method(  
-	api_name	=> "open-ils.ingest.856_uri.object",
-	method		=> "get_uris_object",
-	api_level	=> 1,
-	argc		=> 1,
-	stream		=> 1,
+    api_name    => "open-ils.ingest.856_uri.object",
+    method        => "get_uris_object",
+    api_level    => 1,
+    argc        => 1,
+    stream        => 1,
 );                      
 
 
@@ -1245,99 +1253,99 @@
 use OpenSRF::EX qw/:try/;
 
 sub biblio_fingerprint_record {
-	my $self = shift;
-	my $client = shift;
-	my $rec = shift;
+    my $self = shift;
+    my $client = shift;
+    my $rec = shift;
 
-	OpenILS::Application::Ingest->post_init();
+    OpenILS::Application::Ingest->post_init();
 
-	my $r = OpenSRF::AppSession
-			->create('open-ils.cstore')
-			->request( 'open-ils.cstore.direct.biblio.record_entry.retrieve' => $rec )
-			->gather(1);
+    my $r = OpenSRF::AppSession
+            ->create('open-ils.cstore')
+            ->request( 'open-ils.cstore.direct.biblio.record_entry.retrieve' => $rec )
+            ->gather(1);
 
-	return undef unless ($r and $r->marc);
+    return undef unless ($r and $r->marc);
 
-	my ($fp) = $self->method_lookup('open-ils.ingest.fingerprint.xml')->run($r->marc);
-	$log->debug("Returning [$fp] as fingerprint for record $rec", INFO);
-	$fp->{quality} = int($fp->{quality});
-	return $fp;
+    my ($fp) = $self->method_lookup('open-ils.ingest.fingerprint.xml')->run($r->marc);
+    $log->debug("Returning [$fp] as fingerprint for record $rec", INFO);
+    $fp->{quality} = int($fp->{quality});
+    return $fp;
 }
 __PACKAGE__->register_method(  
-	api_name	=> "open-ils.ingest.fingerprint.record",
-	method		=> "biblio_fingerprint_record",
-	api_level	=> 1,
-	argc		=> 1,
+    api_name    => "open-ils.ingest.fingerprint.record",
+    method        => "biblio_fingerprint_record",
+    api_level    => 1,
+    argc        => 1,
 );                      
 
 our $fp_script;
 sub biblio_fingerprint {
-	my $self = shift;
-	my $client = shift;
-	my $xml = OpenILS::Application::Ingest::entityize(shift);
+    my $self = shift;
+    my $client = shift;
+    my $xml = OpenILS::Application::Ingest::entityize(shift);
 
-	$log->internal("Got MARC [$xml]");
+    $log->internal("Got MARC [$xml]");
 
-	if(!$fp_script) {
-		my @pfx = ( "apps", "open-ils.ingest","app_settings" );
-		my $conf = OpenSRF::Utils::SettingsClient->new;
+    if(!$fp_script) {
+        my @pfx = ( "apps", "open-ils.ingest","app_settings" );
+        my $conf = OpenSRF::Utils::SettingsClient->new;
 
-		my $libs        = $conf->config_value(@pfx, 'script_path');
-		my $script_file = $conf->config_value(@pfx, 'scripts', 'biblio_fingerprint');
-		my $script_libs = (ref($libs)) ? $libs : [$libs];
+        my $libs        = $conf->config_value(@pfx, 'script_path');
+        my $script_file = $conf->config_value(@pfx, 'scripts', 'biblio_fingerprint');
+        my $script_libs = (ref($libs)) ? $libs : [$libs];
 
-		$log->debug("Loading script $script_file for biblio fingerprinting...");
-		
-		$fp_script = new OpenILS::Utils::ScriptRunner
-			( file		=> $script_file,
-			  paths		=> $script_libs,
-			  reset_count	=> 100 );
-	}
+        $log->debug("Loading script $script_file for biblio fingerprinting...");
+        
+        $fp_script = new OpenILS::Utils::ScriptRunner
+            ( file        => $script_file,
+              paths        => $script_libs,
+              reset_count    => 100 );
+    }
 
-	$fp_script->insert('environment' => {marc => $xml} => 1);
+    $fp_script->insert('environment' => {marc => $xml} => 1);
 
-	my $res = $fp_script->run || ($log->error( "Fingerprint script died!  $@" ) && return undef);
-	$log->debug("Script for biblio fingerprinting completed successfully...");
+    my $res = $fp_script->run || ($log->error( "Fingerprint script died!  $@" ) && return undef);
+    $log->debug("Script for biblio fingerprinting completed successfully...");
 
-	return $res;
+    return $res;
 }
 __PACKAGE__->register_method(  
-	api_name	=> "open-ils.ingest.fingerprint.xml",
-	method		=> "biblio_fingerprint",
-	api_level	=> 1,
-	argc		=> 1,
+    api_name    => "open-ils.ingest.fingerprint.xml",
+    method        => "biblio_fingerprint",
+    api_level    => 1,
+    argc        => 1,
 );                      
 
 our $rd_script;
 sub biblio_descriptor {
-	my $self = shift;
-	my $client = shift;
-	my $xml = OpenILS::Application::Ingest::entityize(shift);
+    my $self = shift;
+    my $client = shift;
+    my $xml = OpenILS::Application::Ingest::entityize(shift);
 
-	$log->internal("Got MARC [$xml]");
+    $log->internal("Got MARC [$xml]");
 
-	if(!$rd_script) {
-		my @pfx = ( "apps", "open-ils.ingest","app_settings" );
-		my $conf = OpenSRF::Utils::SettingsClient->new;
+    if(!$rd_script) {
+        my @pfx = ( "apps", "open-ils.ingest","app_settings" );
+        my $conf = OpenSRF::Utils::SettingsClient->new;
 
-		my $libs        = $conf->config_value(@pfx, 'script_path');
-		my $script_file = $conf->config_value(@pfx, 'scripts', 'biblio_descriptor');
-		my $script_libs = (ref($libs)) ? $libs : [$libs];
+        my $libs        = $conf->config_value(@pfx, 'script_path');
+        my $script_file = $conf->config_value(@pfx, 'scripts', 'biblio_descriptor');
+        my $script_libs = (ref($libs)) ? $libs : [$libs];
 
-		$log->debug("Loading script $script_file for biblio descriptor extraction...");
-		
-		$rd_script = new OpenILS::Utils::ScriptRunner
-			( file		=> $script_file,
-			  paths		=> $script_libs,
-			  reset_count	=> 100 );
-	}
+        $log->debug("Loading script $script_file for biblio descriptor extraction...");
+        
+        $rd_script = new OpenILS::Utils::ScriptRunner
+            ( file        => $script_file,
+              paths        => $script_libs,
+              reset_count    => 100 );
+    }
 
-	$log->debug("Setting up environment for descriptor extraction script...");
-	$rd_script->insert('environment.marc' => $xml => 1);
-	$log->debug("Environment building complete...");
+    $log->debug("Setting up environment for descriptor extraction script...");
+    $rd_script->insert('environment.marc' => $xml => 1);
+    $log->debug("Environment building complete...");
 
-	my $res = $rd_script->run || ($log->error( "Descriptor script died!  $@" ) && return undef);
-	$log->debug("Script for biblio descriptor extraction completed successfully");
+    my $res = $rd_script->run || ($log->error( "Descriptor script died!  $@" ) && return undef);
+    $log->debug("Script for biblio descriptor extraction completed successfully");
 
     my $d1 = $res->date1;
     if ($d1 && $d1 ne '    ') {
@@ -1351,13 +1359,13 @@
         $res->date2( $d2 );
     }
 
-	return $res;
+    return $res;
 }
 __PACKAGE__->register_method(  
-	api_name	=> "open-ils.ingest.descriptor.xml",
-	method		=> "biblio_descriptor",
-	api_level	=> 1,
-	argc		=> 1,
+    api_name    => "open-ils.ingest.descriptor.xml",
+    method        => "biblio_descriptor",
+    api_level    => 1,
+    argc        => 1,
 );                      
 
 



More information about the open-ils-commits mailing list