* Sebastian Hammer, Adam Dickmeiss
*
* $Log: client.c,v $
- * Revision 1.102 2000-05-18 11:57:04 adam
+ * Revision 1.103 2000-08-10 08:41:26 adam
+ * Fixes for ILL.
+ *
+ * Revision 1.102 2000/05/18 11:57:04 adam
* Client display time elapsed.
*
* Revision 1.101 2000/04/05 07:39:54 adam
const char *get_ill_element (void *clientData, const char *element)
{
- /* printf ("asking for %s\n", element); */
- if (!strcmp (element, "ill,transaction-id,transaction-group-qualifier"))
- return "1";
- if (!strcmp (element, "ill,transaction-id,transaction-qualifier"))
- return "1";
+ printf ("%s\n", element);
return 0;
}
ctl.f = get_ill_element;
req = ill_get_ItemRequest(&ctl, "ill", 0);
-
+ if (!req)
+ printf ("ill_get_ItemRequest failed\n");
+
if (!ill_ItemRequest (out, &req, 0, 0))
{
if (apdu_file)
(int *) odr_malloc(out, sizeof(int));
*r->u.itemOrder->u.esRequest->notToKeep->resultSetItem->item = itemno;
- switch (*type)
+ if (!strcmp (type, "item") || !strcmp(type, "2"))
{
- case '2':
printf ("using item-request\n");
r->u.itemOrder->u.esRequest->notToKeep->itemRequest =
create_external_itemRequest();
- break;
- case '1':
+ }
+ else if (!strcmp(type, "ill") || !strcmp(type, "1"))
+ {
printf ("using ILL-request\n");
r->u.itemOrder->u.esRequest->notToKeep->itemRequest =
create_external_ILLRequest();
- break;
- default:
- r->u.itemOrder->u.esRequest->notToKeep->itemRequest = 0;
}
+ else
+ r->u.itemOrder->u.esRequest->notToKeep->itemRequest = 0;
return r;
}
{"attributeset", cmd_attributeset, "<attrset>"},
{"querytype", cmd_querytype, "<type>"},
{"refid", cmd_refid, "<id>"},
- {"itemorder", cmd_itemorder, "1|2 <item>"},
+ {"itemorder", cmd_itemorder, "ill|item <itemno>"},
{"update", cmd_update, "<item>"},
#ifdef ASN_COMPILED
/* Server Admin Functions */
* See the file LICENSE for details.
*
* $Log: ill-get.c,v $
- * Revision 1.5 2000-02-24 08:52:01 adam
+ * Revision 1.6 2000-08-10 08:41:26 adam
+ * Fixes for ILL.
+ *
+ * Revision 1.5 2000/02/24 08:52:01 adam
* Bug fix.
*
* Revision 1.4 2000/02/04 11:01:15 adam
return ill_get_int(gc, name, sub, val);
}
-ILL_String *ill_get_ILL_String (struct ill_get_ctl *gc, const char *name,
- const char *sub)
+ILL_String *ill_get_ILL_String_x (struct ill_get_ctl *gc, const char *name,
+ const char *sub, const char *vdefault)
{
ILL_String *r = (ILL_String *) odr_malloc (gc->odr, sizeof(*r));
char element[128];
}
v = (gc->f)(gc->clientData, element);
if (!v)
+ v = vdefault;
+ if (!v)
return 0;
r->which = ILL_String_GeneralString;
r->u.GeneralString = odr_strdup (gc->odr, v);
return r;
}
+ILL_String *ill_get_ILL_String(struct ill_get_ctl *gc, const char *name,
+ const char *sub)
+{
+ return ill_get_ILL_String_x (gc, name, sub, 0);
+}
ILL_ISO_Date *ill_get_ILL_ISO_Date (struct ill_get_ctl *gc, const char *name,
const char *sub, const char *val)
r->initial_requester_id =
ill_get_System_Id (gc, element, "initial-requester-id");
r->transaction_group_qualifier =
- ill_get_ILL_String (gc, element, "transaction-group-qualifier");
+ ill_get_ILL_String_x (gc, element, "transaction-group-qualifier", "");
r->transaction_qualifier =
- ill_get_ILL_String (gc, element, "transaction-qualifier");
+ ill_get_ILL_String_x (gc, element, "transaction-qualifier", "");
r->sub_transaction_qualifier =
ill_get_ILL_String (gc, element, "sub-transaction-qualifier");
return r;
ill_get_ILL_String(gc, element, "publication-date-of-component");
r->author_of_article = ill_get_ILL_String(gc, element,
"author-of-article");
- r->title_of_article = ill_get_ILL_String(gc, element, "title-or-article");
+ r->title_of_article = ill_get_ILL_String(gc, element, "title-of-article");
r->pagination = ill_get_ILL_String(gc, element, "pagination");
r->national_bibliography_no = 0;
r->iSBN = ill_get_ILL_String(gc, element, "ISBN");
return r;
}
-ILL_ItemRequest *ill_get_ItemRequest (
- struct ill_get_ctl *gc, const char *name, const char *sub)
-{
- ODR o = gc->odr;
- ILL_ItemRequest *r = (ILL_ItemRequest *)odr_malloc(o, sizeof(*r));
- return 0;
-}
-
ILL_Client_Id *ill_get_Client_Id (
struct ill_get_ctl *gc, const char *name, const char *sub)
r->requester_optional_messages =
ill_get_Requester_Optional_Messages_Type (
gc, element,"requester-optional-messages");
- r->search_type = 0; /* TODO */
+ r->search_type = ill_get_Search_Type(gc, element, "search-type");
+ r->num_supply_medium_info_type = 0;
+ r->supply_medium_info_type = 0;
+
+ r->place_on_hold = ill_get_enumerated (
+ gc, element, "place-on-hold",
+ ILL_Place_On_Hold_Type_according_to_responder_policy);
+ r->client_id = ill_get_Client_Id (gc, element, "client-id");
+
+ r->item_id = ill_get_Item_Id (gc, element, "item-id");
+ r->supplemental_item_description = 0;
+ r->cost_info_type = 0;
+ r->copyright_compliance =
+ ill_get_ILL_String(gc, element, "copyright-complicance");
+ r->third_party_info_type = 0;
+ r->retry_flag = ill_get_bool (gc, element, "retry-flag", 0);
+ r->forward_flag = ill_get_bool (gc, element, "forward-flag", 0);
+ r->requester_note = ill_get_ILL_String(gc, element, "requester-note");
+ r->forward_note = ill_get_ILL_String(gc, element, "forward-note");
+ r->num_iLL_request_extensions = 0;
+ r->iLL_request_extensions = 0;
+ return r;
+}
+
+ILL_ItemRequest *ill_get_ItemRequest (
+ struct ill_get_ctl *gc, const char *name, const char *sub)
+{
+ ODR o = gc->odr;
+ ILL_ItemRequest *r = (ILL_ItemRequest *)odr_malloc(o, sizeof(*r));
+ char element[128];
+
+ strcpy(element, name);
+ if (sub)
+ {
+ strcat (element, ",");
+ strcat (element, sub);
+ }
+ r->protocol_version_num =
+ ill_get_enumerated (gc, element, "protocol-version-num",
+ ILL_Request_version_2);
+
+ r->transaction_id = ill_get_Transaction_Id (gc, element, "transaction-id");
+ r->service_date_time =
+ ill_get_Service_Date_Time (gc, element, "service-date-time");
+ r->requester_id = ill_get_System_Id (gc, element, "requester-id");
+ r->responder_id = ill_get_System_Id (gc, element, "responder-id");
+ r->transaction_type =
+ ill_get_enumerated(gc, element, "transaction-type", 1);
+
+ r->delivery_address =
+ ill_get_Delivery_Address (gc, element, "delivery-address");
+ r->delivery_service = 0; /* TODO */
+ /* ill_get_Delivery_Service (gc, element, "delivery-service"); */
+ r->billing_address =
+ ill_get_Delivery_Address (gc, element, "billing-address");
+
+ r->num_iLL_service_type = 1;
+ r->iLL_service_type = (ILL_Service_Type **)
+ odr_malloc (o, sizeof(*r->iLL_service_type));
+ *r->iLL_service_type =
+ ill_get_enumerated (gc, element, "ill-service-type",
+ ILL_Service_Type_copy_non_returnable);
+
+ r->responder_specific_service = 0;
+ r->requester_optional_messages =
+ ill_get_Requester_Optional_Messages_Type (
+ gc, element,"requester-optional-messages");
+ r->search_type = ill_get_Search_Type(gc, element, "search-type");
r->num_supply_medium_info_type = 0;
r->supply_medium_info_type = 0;
* Chas Woodfield, Fretwell Downing Datasystems.
*
* $Log: ztest.c,v $
- * Revision 1.32 2000-04-05 07:39:55 adam
+ * Revision 1.33 2000-08-10 08:41:26 adam
+ * Fixes for ILL.
+ *
+ * Revision 1.32 2000/04/05 07:39:55 adam
* Added shared library support (libtool).
*
* Revision 1.31 2000/01/31 13:15:21 adam
yaz_log(LOG_LOG, "OID %s", ent->desc);
if (ent && ent->value == VAL_ISO_ILL_1)
{
- yaz_log (LOG_LOG, "ItemRequest");
+ yaz_log (LOG_LOG, "Decode ItemRequest begin");
if (r->which == ODR_EXTERNAL_single)
{
odr_setbuf(rr->decode,
"Couldn't decode ItemRequest %s near %d",
odr_errmsg(odr_geterror(rr->decode)),
odr_offset(rr->decode));
+#if 0
yaz_log(LOG_LOG, "PDU dump:");
odr_dumpBER(log_file(),
r->u.single_ASN1_type->buf,
r->u.single_ASN1_type->len);
+#endif
}
+ else
+ yaz_log(LOG_LOG, "Decode ItemRequest OK");
if (rr->print)
{
ill_ItemRequest (rr->print, &item_req, 0,
}
if (!item_req && r->which == ODR_EXTERNAL_single)
{
- yaz_log (LOG_LOG, "ILLRequest");
+ yaz_log (LOG_LOG, "Decode ILLRequest begin");
odr_setbuf(rr->decode,
r->u.single_ASN1_type->buf,
r->u.single_ASN1_type->len, 0);
r->u.single_ASN1_type->buf,
r->u.single_ASN1_type->len);
}
+ else
+ yaz_log(LOG_LOG, "Decode ILLRequest OK");
if (rr->print)
{
ill_Request (rr->print, &ill_req, 0,