-/* $Id: config.c,v 1.28 2007-04-20 14:37:17 marc Exp $
+/* $Id: config.c,v 1.33 2007-04-27 10:27:35 marc Exp $
Copyright (c) 2006-2007, Index Data.
This file is part of Pazpar2.
02111-1307, USA.
*/
-/* $Id: config.c,v 1.28 2007-04-20 14:37:17 marc Exp $ */
+/* $Id: config.c,v 1.33 2007-04-27 10:27:35 marc Exp $ */
#include <string.h>
return 0;
metadata->name = nmem_strdup(nmem, name);
- metadata->type = type;
- metadata->merge = merge;
+
+ // enforcing that merge_range is always type_year
+ if (merge == Metadata_merge_range)
+ metadata->type = Metadata_type_year;
+ else
+ metadata->type = type;
+
+ // enforcing that type_year is always range_merge
+ if (metadata->type == Metadata_type_year)
+ metadata->merge = Metadata_merge_range;
+ else
+ metadata->merge = merge;
+
metadata->brief = brief;
metadata->termlist = termlist;
metadata->rank = rank;
metadata->sortkey_offset = sortkey_offset;
-
return metadata;
}
struct conf_metadata* conf_service_add_metadata(NMEM nmem,
struct conf_service *service,
- int position,
+ int field_id,
const char *name,
enum conf_metadata_type type,
enum conf_metadata_merge merge,
struct conf_metadata * md = 0;
if (!service || !service->metadata || !service->num_metadata
- || position < 0 || !(position < service->num_metadata))
+ || field_id < 0 || !(field_id < service->num_metadata))
return 0;
- //md = &((service->metadata)[position]);
- md = service->metadata + position;
+ //md = &((service->metadata)[field_id]);
+ md = service->metadata + field_id;
md = conf_metadata_assign(nmem, md, name, type, merge,
brief, termlist, rank, sortkey_offset);
return md;
struct conf_sortkey * conf_service_add_sortkey(NMEM nmem,
struct conf_service *service,
- int position,
+ int field_id,
const char *name,
enum conf_sortkey_type type)
{
struct conf_sortkey * sk = 0;
if (!service || !service->sortkeys || !service->num_sortkeys
- || position < 0 || !(position < service->num_sortkeys))
+ || field_id < 0 || !(field_id < service->num_sortkeys))
return 0;
- //sk = &((service->sortkeys)[position]);
- sk = service->sortkeys + position;
+ //sk = &((service->sortkeys)[field_id]);
+ sk = service->sortkeys + field_id;
sk = conf_sortkey_assign(nmem, sk, name, type);
return sk;
}
+int conf_service_metadata_field_id(struct conf_service *service,
+ const char * name)
+{
+ int i = 0;
+
+ if (!service || !service->metadata || !service->num_metadata)
+ return -1;
+
+ for(i = 0; i < service->num_metadata; i++) {
+ if (!strcmp(name, (service->metadata[i]).name))
+ return i;
+ }
+
+ return -1;
+};
+
+
+int conf_service_sortkey_field_id(struct conf_service *service,
+ const char * name)
+{
+ int i = 0;
+
+ if (!service || !service->sortkeys || !service->num_sortkeys)
+ return -1;
+
+ for(i = 0; i < service->num_sortkeys; i++) {
+ if (!strcmp(name, (service->sortkeys[i]).name))
+ return i;
+ }
+
+ return -1;
+};
type = Metadata_type_year;
else
{
- yaz_log(YLOG_FATAL, "Unknown value for metadata/type: %s", xml_type);
+ yaz_log(YLOG_FATAL,
+ "Unknown value for metadata/type: %s", xml_type);
return 0;
}
}