source: gsdl/trunk/runtime-src/src/oaiservr/qualified_dublincore.cpp@ 18895

Last change on this file since 18895 was 18895, checked in by kjdon, 15 years ago

added is_valid_element to metaformat, which checks elementSet for the element name. metaformat subclass constructors must set up elementSet. Currently they do this in the code. would be good if it could read in from a file eventually, maybe?? When metaformat is outputting the m,etadata, it checks whether the element is valid before outputting. otherwise it will invalidate the response as it won't conform to the schema. also, changed where we lowercased the entire name to lowercasing only the first letter - some qdc fields have an internal upper case letter.

File size: 4.2 KB
Line 
1
2#include "qualified_dublincore.h"
3
4qualified_dublin_core::qualified_dublin_core() : metaformat() {
5 // These element names taken from the schema
6 //http://www.greenstone.org/namespace/gsdl_qdc/1.0/gsdl_qdc.xsd
7
8 elementSet.insert("title");
9 elementSet.insert("creator");
10 elementSet.insert("subject");
11 elementSet.insert("description");
12 elementSet.insert("publisher");
13 elementSet.insert("contributor");
14 elementSet.insert("date");
15 elementSet.insert("type");
16 elementSet.insert("format");
17 elementSet.insert("identifier");
18 elementSet.insert("source");
19 elementSet.insert("language");
20 elementSet.insert("relation");
21 elementSet.insert("coverage");
22 elementSet.insert("rights");
23 elementSet.insert("alternative");
24 elementSet.insert("tableOfContents");
25 elementSet.insert("abstract");
26 elementSet.insert("created");
27 elementSet.insert("valid");
28 elementSet.insert("available");
29 elementSet.insert("issued");
30 elementSet.insert("modified");
31 elementSet.insert("dateAccepted");
32 elementSet.insert("dateCopyrighted");
33 elementSet.insert("dateSubmitted");
34 elementSet.insert("extent");
35 elementSet.insert("medium");
36 elementSet.insert("isVersionOf");
37 elementSet.insert("hasVersion");
38 elementSet.insert("isReplacedBy");
39 elementSet.insert("replaces");
40 elementSet.insert("isRequiredBy");
41 elementSet.insert("requires");
42 elementSet.insert("isPartOf");
43 elementSet.insert("hasPart");
44 elementSet.insert("isReferencedBy");
45 elementSet.insert("references");
46 elementSet.insert("isFormatOf");
47 elementSet.insert("hasFormat");
48 elementSet.insert("conformsTo");
49 elementSet.insert("spatial");
50 elementSet.insert("temporal");
51 elementSet.insert("audience");
52 elementSet.insert("accrualMethod");
53 elementSet.insert("accrualPeriodicity");
54 elementSet.insert("accrualPolicy");
55 elementSet.insert("instructionalMethod");
56 elementSet.insert("provenance");
57 elementSet.insert("rightsHolder");
58 elementSet.insert("mediator");
59 elementSet.insert("educationLevel");
60 elementSet.insert("accessRights");
61 elementSet.insert("license");
62 elementSet.insert("bibliographicCitation");
63}
64const text_t qualified_dublin_core::formatName() {
65 return "gsdl_qdc";
66}
67
68const text_t qualified_dublin_core::formatPrefix() {
69 return "dc";
70}
71
72bool qualified_dublin_core::output_record(ostream &output, recptproto *protocol, const text_t &collection,
73 const text_t &record_OID)
74{
75 return metaformat::output_record(output, protocol, collection, record_OID);
76}
77
78void qualified_dublin_core::output_metadata_header(ostream &output)
79{
80 output << " <metadata>\n";
81
82 if (this->oaiConfigure->getOAIVersion() <= 110){
83 // output dublin core wrapper for OAI v1.1
84 output << " <gsdl_qdc xmlns=\"http://greenstone.org/namespace/gsdl_qdc/1.0/\"\n"
85 << " xmlns:xsi=\"http://www.w3c.org/2001/XMLSchema-instance\"\n"
86 << " xsi:schemaLocation=\"http://greenstone.org/namespace/gsdl_qdc/1.0/ \n"
87 << " http://greenstone.org/namespace/gsdl_qdc/1.0/gsdl_qdc.xsd\">\n";
88 }
89 else {
90 output << " <gsdl_qdc:gsdl_qdc\n"
91 << " xmlns:gsdl_qdc=\"http://greenstone.org/namespace/gsdl_qdc/1.0/\"\n"
92 << " xmlns:dc=\"http://purl.org/dc/terms/\"\n"
93 << " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
94 << " xsi:schemaLocation=\"http://greenstone.org/namespace/gsdl_qdc/1.0/ \n"
95 << " http://greenstone.org/namespace/gsdl_qdc/1.0/gsdl_qdc.xsd\">\n";
96 }
97}
98
99void qualified_dublin_core::output_metadata_footer(ostream &output)
100{
101 if (this->oaiConfigure->getOAIVersion() <= 110) {
102 output << " </gsdl_qdc>" << endl;
103 }
104 else {
105 output << " </gsdl_qdc:gsdl_qdc>" << endl;
106 }
107
108 output << " </metadata>" << endl;
109 output.flush();
110}
111
112bool qualified_dublin_core::output_formatdata(ostream &output)
113{
114 output << " <metadataPrefix>gsdl_qdc</metadataPrefix>" << endl;
115 output << " <schema>http://greenstone.org/namespace/gsdl_qdc/1.0/gsdl_qdc.xsd</schema>" << endl;
116 output << " <metadataNamespace>http://greenstone.org/namespace/gsdl_qdc/1.0/</metadataNamespace>"<<endl;
117 return true;
118}
Note: See TracBrowser for help on using the repository browser.