29#include "ReadMetadataElement.h"
30#include "NetcdfElement.h"
32#include "NCMLParser.h"
37const string ReadMetadataElement::_sTypeName =
"readMetadata";
38const vector<string> ReadMetadataElement::_sValidAttributes = vector<string>();
40ReadMetadataElement::ReadMetadataElement() :
41 RCObjectInterface(), NCMLElement(0)
45ReadMetadataElement::ReadMetadataElement(
const ReadMetadataElement& proto) :
46 RCObjectInterface(), NCMLElement(proto)
50ReadMetadataElement::~ReadMetadataElement()
55ReadMetadataElement::getTypeName()
const
61ReadMetadataElement::clone()
const
70 validateAttributes(attrs, _sValidAttributes);
73void ReadMetadataElement::handleBegin()
75 if (!_parser->isScopeNetcdf()) {
76 THROW_NCML_PARSE_ERROR(_parser->getParseLineNumber(),
"Got <readMetadata/> while not within <netcdf>");
82 if (dataset->getProcessedMetadataDirective()) {
83 THROW_NCML_PARSE_ERROR(_parser->getParseLineNumber(),
84 "Got " + toString() +
" element but we already got a metadata directive"
85 " for the current dataset! Only one may be specified.");
87 dataset->setProcessedMetadataDirective();
90void ReadMetadataElement::handleContent(
const string& content)
92 if (!NCMLUtil::isAllWhitespace(content)) {
93 THROW_NCML_PARSE_ERROR(_parser->getParseLineNumber(),
94 "Got non-whitespace for element content and didn't expect it."
95 " Element=" + toString() +
" content=\"" + content +
"\"");
99void ReadMetadataElement::handleEnd()
103string ReadMetadataElement::toString()
const
105 return "<" + _sTypeName +
">";
Concrete class for NcML <netcdf> element.
NcML Parser for adding/modifying/removing metadata (attributes) to existing local datasets using NcML...