zoom: new TARGET profile setting: SRUVersion
authorAdam Dickmeiss <adam@indexdata.dk>
Mon, 28 Nov 2011 21:19:57 +0000 (22:19 +0100)
committerAdam Dickmeiss <adam@indexdata.dk>
Mon, 28 Nov 2011 21:19:57 +0000 (22:19 +0100)
When set, ZOOM Cs sru_version will be set to its value.

doc/zoom.xml
etc/config-zoom.xml
src/filter_zoom.cpp
xml/schema/filter_zoom.rnc

index 8797de1..e9f44fd 100644 (file)
    </varlistentry>
 
    <varlistentry>
+    <term>SRUVersion</term><listitem>
+    <para>
+     Specifies the SRU version to use. It unset, version 1.2 will be
+     used. Some servers do not support this version, in which case
+     version 1.1 or even 1.0 could be set it.
+    </para>
+   </listitem>
+   </varlistentry>
+
+   <varlistentry>
     <term>transform</term><listitem>
     <para>
      Specifies a XSL stylesheet filename to be used if record
index f0fa876..9d1c713 100644 (file)
@@ -45,6 +45,7 @@
            <cclmap_term>s=al</cclmap_term>
            <cclmap_ti>1=title s=pw t=l,r</cclmap_ti>
            <sru>get</sru>
+           <SRUVersion>1.1</SRUVersion>
            <transform>tmarc.xsl</transform>
            <zurl>localhost:9998/db01</zurl>
             <sortStrategy>embed</sortStrategy>
index 914cde3..3fd7e04 100644 (file)
@@ -64,6 +64,7 @@ namespace metaproxy_1 {
             std::string target;
             std::string query_encoding;
             std::string sru;
+            std::string sru_version;
             std::string request_syntax;
             std::string element_set;
             std::string record_encoding;
@@ -425,6 +426,10 @@ yf::Zoom::SearchablePtr yf::Zoom::Impl::parse_torus_record(const xmlNode *ptr)
         {
             s->sru = mp::xml::get_text(ptr);
         }
+        else if (!strcmp((const char *) ptr->name, "SRUVersion"))
+        {
+            s->sru_version = mp::xml::get_text(ptr);
+        }
         else if (!strcmp((const char *) ptr->name,
                          "queryEncoding"))
         {
@@ -960,6 +965,9 @@ yf::Zoom::BackendPtr yf::Zoom::Frontend::get_backend_from_databases(
     {
         url = "http://" + sptr->target;
         b->set_option("sru", sptr->sru);
+
+        if (sptr->sru_version.length())
+            b->set_option("sru_version", sptr->sru_version);
     }
     else
     {
index 64cd178..3480061 100644 (file)
@@ -29,6 +29,7 @@ filter_zoom =
         element mp:recordEncoding { xsd:string }?,
         element mp:requestSyntax { xsd:string }?,
         element mp:sru { xsd:string }?,
+        element mp:SRUVersion { xsd:string }?,
         element mp:transform { xsd:string }?,
         element mp:literalTransform { xsd:string }?,
         element mp:urlRecipe { xsd:string }?,