bes Updated for version 3.21.1
The Backend Server (BES) is the lower two tiers of the Hyrax data server
SimpleLocationParser.cc
1
2// This file is part of the "NcML Module" project, a BES module designed
3// to allow NcML files to be used to be used as a wrapper to add
4// AIS to existing datasets of any format.
5//
6// Copyright (c) 2009 OPeNDAP, Inc.
7// Author: Michael Johnson <m.johnson@opendap.org>
8//
9// For more information, please also see the main website: http://opendap.org/
10//
11// This library is free software; you can redistribute it and/or
12// modify it under the terms of the GNU Lesser General Public
13// License as published by the Free Software Foundation; either
14// version 2.1 of the License, or (at your option) any later version.
15//
16// This library is distributed in the hope that it will be useful,
17// but WITHOUT ANY WARRANTY; without even the implied warranty of
18// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19// Lesser General Public License for more details.
20//
21// You should have received a copy of the GNU Lesser General Public
22// License along with this library; if not, write to the Free Software
23// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
24//
25// Please see the files COPYING and COPYRIGHT for more information on the GLPL.
26//
27// You can contact OPeNDAP, Inc. at PO Box 112, Saunderstown, RI. 02874-0112.
29
30#include "config.h"
31
32#include "SimpleLocationParser.h"
33
34#include "BESDebug.h"
35#include "NCMLUtil.h"
36#include "SaxParserWrapper.h"
37
38using namespace std;
39using namespace ncml_module;
40
41SimpleLocationParser::SimpleLocationParser() :
42 _location("")
43{
44}
45
46SimpleLocationParser::~SimpleLocationParser()
47{
48 _location = "";
49}
50
51string SimpleLocationParser::parseAndGetLocation(const string& filename)
52{
53 SaxParserWrapper parser(*this);
54 parser.parse(filename);
55 std::string ret = _location;
56 _location = "";
57 return ret;
58}
59
60void SimpleLocationParser::onStartElement(const string& name, const XMLAttributeMap& attrs)
61{
62 if (name == "netcdf") {
63 _location = attrs.getValueForLocalNameOrDefault("location", "");
64 }
65}
66
68{
69 BESDEBUG("ncml", "Parse Warning:" << msg << endl);
70}
71
73{
74 BESDEBUG("ncml", "Parse Error:" << msg << endl);
75 // we'll just get an empty location out and handle it upstairs.
76}
Wrapper for libxml SAX parser C callbacks into C++.
bool parse(const std::string &ncmlFilename)
Do a SAX parse of the ncmlFilename and pass the calls to wrapper parser.
std::string parseAndGetLocation(const std::string &filename)
virtual void onParseWarning(std::string msg)
virtual void onParseError(std::string msg)
virtual void onStartElement(const std::string &name, const XMLAttributeMap &attrs)
const std::string getValueForLocalNameOrDefault(const std::string &localname, const std::string &defVal="") const
NcML Parser for adding/modifying/removing metadata (attributes) to existing local datasets using NcML...