[open-ils-commits] r10245 - in trunk/Open-ILS: examples src/perlmods/OpenILS/Application/Search

svn at svn.open-ils.org svn at svn.open-ils.org
Mon Aug 4 02:56:05 EDT 2008


Author: miker
Date: 2008-08-04 02:55:57 -0400 (Mon, 04 Aug 2008)
New Revision: 10245

Modified:
   trunk/Open-ILS/examples/opensrf.xml.example
   trunk/Open-ILS/src/perlmods/OpenILS/Application/Search/Z3950.pm
Log:
add support for xml-based z servers (such as xml-backed zebra without yaz-proxy)

Modified: trunk/Open-ILS/examples/opensrf.xml.example
===================================================================
--- trunk/Open-ILS/examples/opensrf.xml.example	2008-08-04 06:36:18 UTC (rev 10244)
+++ trunk/Open-ILS/examples/opensrf.xml.example	2008-08-04 06:55:57 UTC (rev 10245)
@@ -98,6 +98,11 @@
                     <db>Voyager</db>
                     <!-- fetch the full record with no holdings. FI is the default -->
                     <record_format>FI</record_format> 
+
+                    <!-- Record transmission format from the server.  Supported -->
+                    <!-- formats include usemarc and xml (for marcxml).         -->
+                    <transmission_format>usmarc</transmission_format> 
+
                     <attrs>
                         <tcn><code>12</code><format>1</format></tcn>
                         <isbn><code>7</code><format>6</format></isbn>

Modified: trunk/Open-ILS/src/perlmods/OpenILS/Application/Search/Z3950.pm
===================================================================
--- trunk/Open-ILS/src/perlmods/OpenILS/Application/Search/Z3950.pm	2008-08-04 06:36:18 UTC (rev 10244)
+++ trunk/Open-ILS/src/perlmods/OpenILS/Application/Search/Z3950.pm	2008-08-04 06:55:57 UTC (rev 10245)
@@ -200,6 +200,8 @@
 	my $username = $$args{username} || "";
 	my $password = $$args{password} || "";
 
+    my $tformat = $services{$service}->{transmission_format} || $output;
+
 	my $editor = new_editor(authtoken => $auth);
 	return $editor->event unless $editor->checkauth;
 	return $editor->event unless $editor->allowed('REMOTE_Z3950_QUERY');
@@ -210,7 +212,7 @@
 		user							=> $username,
 		password						=> $password,
 		async							=> $async,
-		preferredRecordSyntax	=> $output, 
+		preferredRecordSyntax	=> $tformat, 
 	);
 
 	if( ! $connection ) {
@@ -256,6 +258,7 @@
 	my $offset	= shift || 0;
     my $service = shift;
 
+    my $tformat = $services{$service}->{transmission_format} || $output;
     my $rformat = $services{$service}->{record_format} || 'FI';
 	$results->option(elementSetName => $rformat);
     $logger->info("z3950: using record format '$rformat'");
@@ -283,7 +286,15 @@
 		try {
 
 			my $rec	= $results->record($_);
-			$marc		= MARC::Record->new_from_usmarc($rec->raw());
+
+            if ($tformat eq 'usmarc') {
+    			$marc		= MARC::Record->new_from_usmarc($rec->raw());
+            } else if ($tformat eq 'xml') {
+    			$marc		= MARC::Record->new_from_xml($rec->raw());
+            } else {
+                die "Unsupported record transmission format $tformat"
+            }
+
 			$marcs	= entityize($marc->as_xml_record);
 			my $doc	= XML::LibXML->new->parse_string($marcs);
 			$marcxml = entityize( $doc->documentElement->toString );



More information about the open-ils-commits mailing list