std::string urlRecipe;
std::string contentConnector;
std::string sortStrategy;
+ std::string rpn2cql_fname;
bool use_turbomarc;
bool piggyback;
CCL_bibset ccl_bibset;
bool enable_explain;
xmlDoc *explain_doc;
std::string m_proxy;
+ cql_transform_t cqlt;
public:
Backend();
~Backend();
xsltFreeStylesheet(xsp);
if (explain_doc)
xmlFreeDoc(explain_doc);
+ cql_transform_close(cqlt);
ZOOM_connection_destroy(m_connection);
ZOOM_resultset_destroy(m_resultset);
}
{
s->sortStrategy = mp::xml::get_text(ptr);
}
+ else if (!strcmp((const char *) ptr->name, "rpn2cql"))
+ s->rpn2cql_fname = mp::xml::get_text(ptr);
}
return s;
}
}
}
+ cql_transform_t cqlt;
+ if (sptr->rpn2cql_fname.length())
+ cqlt = cql_transform_open_fname(sptr->rpn2cql_fname.c_str());
+ else
+ cqlt = cql_transform_create();
+
+ if (!cqlt)
+ {
+ *error = YAZ_BIB1_TEMPORARY_SYSTEM_ERROR;
+ *addinfo = odr_strdup(odr, "Missing/invalid cql2rpn file");
+ BackendPtr b;
+ xsltFreeStylesheet(xsp);
+ return b;
+ }
+
m_backend.reset();
BackendPtr b(new Backend);
+ b->cqlt = cqlt;
b->sptr = sptr;
b->xsp = xsp;
b->m_frontend_database = database;
}
Z_Records *yf::Zoom::Frontend::get_explain_records(
- Package &package,
+ mp::Package &package,
Odr_int start,
Odr_int number_to_present,
int *error,
}
-Z_Records *yf::Zoom::Frontend::get_records(Package &package,
+Z_Records *yf::Zoom::Frontend::get_records(mp::Package &package,
Odr_int start,
Odr_int number_to_present,
int *error,
cql_parser_destroy(cp);
return;
}
- char ccl_buf[1024];
- r = cql_to_ccl_buf(cn, ccl_buf, sizeof(ccl_buf));
+ r = cql_to_ccl(cn, wrbuf_vp_puts, ccl_wrbuf);
if (r)
{
error = YAZ_BIB1_MALFORMED_QUERY;
mp::wrbuf sort_spec_wrbuf;
yaz_srw_sortkeys_to_sort_spec(wrbuf_cstr(sru_sortkeys_wrbuf),
sort_spec_wrbuf);
- wrbuf_puts(ccl_wrbuf, ccl_buf);
-
yaz_tok_cfg_t tc = yaz_tok_cfg_create();
yaz_tok_parse_t tp =
yaz_tok_parse_buf(tc, wrbuf_cstr(sort_spec_wrbuf));
}
else
{
- cql_transform_t cqlt = cql_transform_create();
-
- status = cql_transform_rpn2cql_wrbuf(cqlt, wrb, zquery);
-
- cql_transform_close(cqlt);
+ status = cql_transform_rpn2cql_wrbuf(b->cqlt, wrb, zquery);
}
if (status == 0)
{