source: trunk/gsdl/src/oaiservr/metaformat.h@ 10738

Last change on this file since 10738 was 10738, checked in by kjdon, 19 years ago

now use utf8outconvertclass when outputting metadata so that its in the right encoding

  • Property svn:keywords set to Author Date Id Revision
File size: 1.8 KB
Line 
1/**
2 * A framework class for metadata formats.
3 *
4 * Example child classes include oaimeta and rfc8507meta
5 */
6
7#ifndef _METAFORMAT_H_
8#define _METAFORMAT_H_
9#include <stdio.h>
10
11#include "text_t.h"
12#include "comtypes.h"
13#include "recptproto.h"
14
15#include "oaiconfig.h"
16
17class metaformat
18{
19 protected:
20 virtual void output_metadata_header(ostream &output) = 0;
21 virtual void output_item(ostream &output, outconvertclass &outconvert, bool &headerDone, const text_t &label,
22 const text_tarray &values);
23 virtual void output_metadata_footer(ostream &output) = 0;
24 virtual bool scan_metadata(ostream &output, const text_t &collection, ResultDocInfo_t &docInfo,
25 bool doOutput);
26 oaiconfig * oaiConfigure;
27
28 public:
29 metaformat(); // Must be given the desired oai version when created
30 virtual const text_t formatName() = 0;
31 virtual const text_t formatPrefix() = 0;
32 virtual bool output_record(ostream &output, recptproto *protocol, const text_t &collection,
33 const text_t &record_OID);
34 virtual bool is_available(const text_t &collection, ResultDocInfo_t &docInfo);
35 virtual bool output_metadata(ostream &output, const text_t &collection, ResultDocInfo_t &docInfo);
36 virtual bool output_formatdata(ostream &output) = 0;
37 void set_configuration(oaiconfig *config) { this->oaiConfigure = config; }
38 text_t get_mapping(const text_t &collection, const text_t &collectionField);
39
40};
41
42class metaformatptr
43{
44 public:
45 metaformat *ptr;
46
47 metaformatptr() { this->ptr = NULL; }
48 metaformat *get_class() { return this->ptr; }
49 void set_class(metaformat *ptr) { this->ptr = ptr; }
50 void set_configuration(oaiconfig *config) { this->ptr->set_configuration(config);}
51 void clear() { delete this->ptr; this->ptr = NULL; }
52};
53
54typedef map<text_t, metaformatptr, lttext_t> metaformat_map;
55
56#endif
Note: See TracBrowser for help on using the repository browser.