38#ifdef HAVE_SERVER_PYTHON_PLUGINS
42 const QDomDocument *capabilitiesDocument =
nullptr;
44#ifdef HAVE_SERVER_PYTHON_PLUGINS
46 if ( cacheManager && cacheManager->
getCachedDocument( &doc, project, request, accessControl ) )
48 capabilitiesDocument = &doc;
58 capabilitiesDocument = &doc;
62 capabilitiesDocument = &doc;
64 response.
setHeader( u
"Content-Type"_s, u
"text/xml; charset=utf-8"_s );
65 response.
write( capabilitiesDocument->toByteArray() );
76 QDomElement wcsCapabilitiesElement = doc.createElement( u
"WCS_Capabilities"_s );
77 wcsCapabilitiesElement.setAttribute( u
"xmlns"_s,
WCS_NAMESPACE );
78 wcsCapabilitiesElement.setAttribute( u
"xmlns:xsi"_s, u
"http://www.w3.org/2001/XMLSchema-instance"_s );
79 wcsCapabilitiesElement.setAttribute( u
"xsi:schemaLocation"_s,
WCS_NAMESPACE +
" http://schemas.opengis.net/wcs/1.0.0/wcsCapabilities.xsd" );
80 wcsCapabilitiesElement.setAttribute( u
"xmlns:gml"_s,
GML_NAMESPACE );
81 wcsCapabilitiesElement.setAttribute( u
"xmlns:xlink"_s, u
"http://www.w3.org/1999/xlink"_s );
83 wcsCapabilitiesElement.setAttribute( u
"updateSequence"_s, u
"0"_s );
84 doc.appendChild( wcsCapabilitiesElement );
90 QDomElement capabilityElement = doc.createElement( u
"Capability"_s );
91 wcsCapabilitiesElement.appendChild( capabilityElement );
94 QDomElement requestElement = doc.createElement( u
"Request"_s );
95 capabilityElement.appendChild( requestElement );
98 QDomElement getCapabilitiesElement = doc.createElement( u
"GetCapabilities"_s );
99 requestElement.appendChild( getCapabilitiesElement );
101 QDomElement dcpTypeElement = doc.createElement( u
"DCPType"_s );
102 getCapabilitiesElement.appendChild( dcpTypeElement );
103 QDomElement httpElement = doc.createElement( u
"HTTP"_s );
104 dcpTypeElement.appendChild( httpElement );
109 QDomElement getElement = doc.createElement( u
"Get"_s );
110 httpElement.appendChild( getElement );
111 QDomElement onlineResourceElement = doc.createElement( u
"OnlineResource"_s );
112 onlineResourceElement.setAttribute( u
"xlink:type"_s, u
"simple"_s );
113 onlineResourceElement.setAttribute( u
"xlink:href"_s, hrefString );
114 getElement.appendChild( onlineResourceElement );
116 const QDomElement getCapabilitiesDhcTypePostElement = dcpTypeElement.cloneNode().toElement();
117 getCapabilitiesDhcTypePostElement.firstChild().firstChild().toElement().setTagName( u
"Post"_s );
118 getCapabilitiesElement.appendChild( getCapabilitiesDhcTypePostElement );
120 QDomElement describeCoverageElement = getCapabilitiesElement.cloneNode().toElement();
121 describeCoverageElement.setTagName( u
"DescribeCoverage"_s );
122 requestElement.appendChild( describeCoverageElement );
124 QDomElement getCoverageElement = getCapabilitiesElement.cloneNode().toElement();
125 getCoverageElement.setTagName( u
"GetCoverage"_s );
126 requestElement.appendChild( getCoverageElement );
137 QDomElement serviceElem = doc.createElement( u
"Service"_s );
140 QDomElement nameElem = doc.createElement( u
"name"_s );
141 const QDomText nameText = doc.createTextNode(
"WCS" );
142 nameElem.appendChild( nameText );
143 serviceElem.appendChild( nameElem );
146 QDomElement titleElem = doc.createElement( u
"label"_s );
147 const QDomText titleText = doc.createTextNode( title );
148 titleElem.appendChild( titleText );
149 serviceElem.appendChild( titleElem );
152 if ( !abstract.isEmpty() )
154 QDomElement abstractElem = doc.createElement( u
"description"_s );
155 const QDomText abstractText = doc.createCDATASection( abstract );
156 abstractElem.appendChild( abstractText );
157 serviceElem.appendChild( abstractElem );
161 if ( !keywords.isEmpty() )
163 QDomElement keywordsElem = doc.createElement( u
"keywords"_s );
164 for (
int i = 0; i < keywords.size(); ++i )
166 QDomElement keywordElem = doc.createElement( u
"keyword"_s );
167 const QDomText keywordText = doc.createTextNode( keywords.at( i ) );
168 keywordElem.appendChild( keywordText );
169 keywordsElem.appendChild( keywordElem );
171 serviceElem.appendChild( keywordsElem );
181 if ( !contactPerson.isEmpty() || !contactOrganization.isEmpty() || !contactPosition.isEmpty() || !contactMail.isEmpty() || !contactPhone.isEmpty() || !onlineResource.isEmpty() )
183 QDomElement responsiblePartyElem = doc.createElement( u
"responsibleParty"_s );
184 if ( !contactPerson.isEmpty() )
186 QDomElement contactPersonElem = doc.createElement( u
"individualName"_s );
187 const QDomText contactPersonText = doc.createTextNode( contactPerson );
188 contactPersonElem.appendChild( contactPersonText );
189 responsiblePartyElem.appendChild( contactPersonElem );
191 if ( !contactOrganization.isEmpty() )
193 QDomElement contactOrganizationElem = doc.createElement( u
"organisationName"_s );
194 const QDomText contactOrganizationText = doc.createTextNode( contactOrganization );
195 contactOrganizationElem.appendChild( contactOrganizationText );
196 responsiblePartyElem.appendChild( contactOrganizationElem );
198 if ( !contactPosition.isEmpty() )
200 QDomElement contactPositionElem = doc.createElement( u
"positionName"_s );
201 const QDomText contactPositionText = doc.createTextNode( contactPosition );
202 contactPositionElem.appendChild( contactPositionText );
203 responsiblePartyElem.appendChild( contactPositionElem );
205 if ( !contactMail.isEmpty() || !contactPhone.isEmpty() || !onlineResource.isEmpty() )
207 QDomElement contactInfoElem = doc.createElement( u
"contactInfo"_s );
208 if ( !contactMail.isEmpty() )
210 QDomElement contactAddressElem = doc.createElement( u
"address"_s );
211 QDomElement contactAddressMailElem = doc.createElement( u
"electronicMailAddress"_s );
212 const QDomText contactAddressMailText = doc.createTextNode( contactMail );
213 contactAddressMailElem.appendChild( contactAddressMailText );
214 contactAddressElem.appendChild( contactAddressMailElem );
215 contactInfoElem.appendChild( contactAddressElem );
217 if ( !contactPhone.isEmpty() )
219 QDomElement contactPhoneElem = doc.createElement( u
"phone"_s );
220 QDomElement contactVoiceElem = doc.createElement( u
"voice"_s );
221 const QDomText contactVoiceText = doc.createTextNode( contactPhone );
222 contactVoiceElem.appendChild( contactVoiceText );
223 contactPhoneElem.appendChild( contactVoiceElem );
224 contactInfoElem.appendChild( contactPhoneElem );
226 if ( !onlineResource.isEmpty() )
228 QDomElement onlineResourceElem = doc.createElement( u
"onlineResource"_s );
229 onlineResourceElem.setAttribute( u
"xmlns:xlink"_s, u
"http://www.w3.org/1999/xlink"_s );
230 onlineResourceElem.setAttribute( u
"xlink:type"_s, u
"simple"_s );
231 onlineResourceElem.setAttribute( u
"xlink:href"_s, onlineResource );
232 contactInfoElem.appendChild( onlineResourceElem );
234 responsiblePartyElem.appendChild( contactInfoElem );
236 serviceElem.appendChild( responsiblePartyElem );
239 QDomElement feesElem = doc.createElement( u
"fees"_s );
240 QDomText feesText = doc.createTextNode( u
"None"_s );
242 if ( !fees.isEmpty() )
244 feesText = doc.createTextNode( fees );
246 feesElem.appendChild( feesText );
247 serviceElem.appendChild( feesElem );
249 QDomElement accessConstraintsElem = doc.createElement( u
"accessConstraints"_s );
250 QDomText accessConstraintsText = doc.createTextNode( u
"None"_s );
252 if ( !accessConstraints.isEmpty() )
254 accessConstraintsText = doc.createTextNode( accessConstraints );
256 accessConstraintsElem.appendChild( accessConstraintsText );
257 serviceElem.appendChild( accessConstraintsElem );