bes  Updated for version 3.20.8
FONcTransform.h
1 // FONcTransform.h
2 
3 // This file is part of BES Netcdf File Out Module
4 
5 // Copyright (c) 2004,2005 University Corporation for Atmospheric Research
6 // Author: Patrick West <pwest@ucar.edu> and Jose Garcia <jgarcia@ucar.edu>
7 //
8 // This library is free software; you can redistribute it and/or
9 // modify it under the terms of the GNU Lesser General Public
10 // License as published by the Free Software Foundation; either
11 // version 2.1 of the License, or (at your option) any later version.
12 //
13 // This library is distributed in the hope that it will be useful,
14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 // Lesser General Public License for more details.
17 //
18 // You should have received a copy of the GNU Lesser General Public
19 // License along with this library; if not, write to the Free Software
20 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 //
22 // You can contact University Corporation for Atmospheric Research at
23 // 3080 Center Green Drive, Boulder, CO 80301
24 
25 // (c) COPYRIGHT University Corporation for Atmospheric Research 2004-2005
26 // Please read the full copyright statement in the file COPYRIGHT_UCAR.
27 //
28 // Authors:
29 // pwest Patrick West <pwest@ucar.edu>
30 // jgarcia Jose Garcia <jgarcia@ucar.edu>
31 
32 #ifndef FONcTransfrom_h_
33 #define FONcTransfrom_h_ 1
34 
35 #include <netcdf.h>
36 
37 #include <string>
38 #include <vector>
39 #include <map>
40 #include <set>
41 
42 #include <DDS.h>
43 #include <DMR.h>
44 #include <Array.h>
45 
46 using namespace::libdap ;
47 
48 #include <BESObj.h>
49 #include <BESDataHandlerInterface.h>
50 
51 class FONcBaseType ;
52 
60 class FONcTransform: public BESObj {
61 private:
62  int _ncid;
63  DDS *_dds;
64  DMR *_dmr;
65  string _localfile;
66  string _returnAs;
67  vector<FONcBaseType *> _fonc_vars;
68  vector<FONcBaseType *> _total_fonc_vars_in_grp;
69  set<string> _included_grp_names;
70  map<string,unsigned long> GFQN_dimname_to_dimsize;
71  map<string,unsigned long> VFQN_dimname_to_dimsize;
72 
73 
74 public:
85  FONcTransform(DDS *dds, BESDataHandlerInterface &dhi, const string &localfile, const string &netcdfVersion = "netcdf");
86  FONcTransform(DMR *dmr, BESDataHandlerInterface &dhi, const string &localfile, const string &netcdfVersion = "netcdf");
87  virtual ~FONcTransform();
88  virtual void transform();
89  virtual void transform_dap4();
90 
91 
92  virtual void dump(ostream &strm) const;
93 private:
94  virtual void transform_dap4_no_group();
95  virtual void transform_dap4_group(D4Group*,bool is_root, int par_grp_id,std::map<std::string,int>&,std::vector<int>&);
96  virtual void transform_dap4_group_internal(D4Group*,bool is_root, int par_grp_id,std::map<std::string,int>&,std::vector<int>&);
97  virtual void check_and_obtain_dimensions(D4Group*grp,bool);
98  virtual void check_and_obtain_dimensions_internal(D4Group*grp);
99  virtual bool check_group_support();
100  virtual void gen_included_grp_list(D4Group*grp);
101 
102 
103 };
104 
105 #endif // FONcTransfrom_h_
106 
Structure storing information used by the BES to handle the request.
top level BES object to house generic methods
Definition: BESObj.h:50
A DAP BaseType with file out netcdf information included.
Definition: FONcBaseType.h:61
Transformation object that converts an OPeNDAP DataDDS to a netcdf file.
Definition: FONcTransform.h:60
virtual void transform()
Transforms each of the variables of the DataDDS to the NetCDF file.
FONcTransform(DDS *dds, BESDataHandlerInterface &dhi, const string &localfile, const string &netcdfVersion="netcdf")
virtual void dump(ostream &strm) const
dumps information about this transformation object for debugging purposes
virtual void transform_dap4()
Transforms each of the variables of the DMR to the NetCDF file.
virtual ~FONcTransform()
Destructor.