00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef NCMLCDMREADER_H_
00028 #define NCMLCDMREADER_H_
00029
00030 #include "fimex/CDMReader.h"
00031 #include "fimex/CDMDataType.h"
00032 #include "boost/noncopyable.hpp"
00033 #include <map>
00034
00035 namespace MetNoFimex
00036 {
00037
00038 class XMLDoc;
00039
00053 class NcmlCDMReader: public MetNoFimex::CDMReader,boost::noncopyable
00054 {
00055
00056 public:
00061 NcmlCDMReader(std::string configFile) throw(CDMException);
00067 NcmlCDMReader(const boost::shared_ptr<CDMReader> dataReader, std::string configFile) throw(CDMException);
00068 virtual ~NcmlCDMReader();
00072 virtual boost::shared_ptr<Data> getDataSlice(const std::string& varName, size_t unLimDimPos = 0) throw(CDMException);
00073
00074
00075 private:
00079 void init() throw(CDMException);
00080
00081 void initRemove();
00082 void warnUnsupported(std::string xpath, std::string msg);
00083 void initWarnUnsupported();
00084 void initVariableNameChange();
00085 void initVariableTypeChange();
00086 void initDimensionNameChange();
00087 void initAttributeNameChange();
00088 void initAddReassignAttribute();
00089
00090 std::string configFile;
00091 XMLDoc* doc;
00092 boost::shared_ptr<CDMReader> dataReader;
00093
00094
00095
00096
00097 std::map<std::string, std::string> variableNameChanges;
00098 std::map<std::string, CDMDataType> variableTypeChanges;
00099
00100
00101 };
00102
00103 }
00104
00105 #endif