OPeNDAP Hyrax Back End Server (BES)  Updated for version 3.8.3
GridJoinExistingAggregation.h
Go to the documentation of this file.
1 // 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) 2010 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 #ifndef __AGG_UTIL__GRID_JOIN_EXISTING_AGGREGATION_H__
31 #define __AGG_UTIL__GRID_JOIN_EXISTING_AGGREGATION_H__
32 
33 #include "ArrayJoinExistingAggregation.h" //agg_util
34 #include "Dimension.h" // agg_util
35 #include "GridAggregationBase.h" // agg_util
36 #include <memory>
37 
38 namespace agg_util
39 {
41  {
42  public:
43 
44  GridJoinExistingAggregation(const libdap::Grid& proto,
45  const AMDList& memberDatasets,
46  const DDSLoader& loaderProto,
47  const Dimension& joinDim);
48 
50 
52 
54 
56 
64  auto_ptr<ArrayJoinExistingAggregation> makeAggregatedOuterMapVector() const;
65 
66  protected: // subclass interface
67 
69  virtual void transferConstraintsToSubGridHook(Grid* pSubGrid);
70 
71  virtual const Dimension& getAggregationDimension() const;
72 
73  private: // helpers
74 
76  void duplicate(const GridJoinExistingAggregation& rhs);
77 
79  void cleanup() throw();
80 
87  void createRep(const libdap::Grid& protoSubGrid, const AMDList& granuleList);
88 
89 
90  // Local helpers to implement transferConstraintsToSubGridHook()
91  void transferConstraintsToSubGridMaps(Grid* pSubGrid);
92  void transferConstraintsToSubGridArray(Grid* pSubGrid);
93 
94  private: // Data Rep
95 
96  Dimension _joinDim;
97 
98  }; // class GridJoinExistingAggregation
99 } // namespace agg_util
100 
101 #endif /* __AGG_UTIL__GRID_JOIN_EXISTING_AGGREGATION_H__ */
GridJoinExistingAggregation(const libdap::Grid &proto, const AMDList &memberDatasets, const DDSLoader &loaderProto, const Dimension &joinDim)
virtual const Dimension & getAggregationDimension() const
Get the contained aggregation dimension info.
Helper class for temporarily hijacking an existing dhi to load a DDX response for one particular file...
virtual void transferConstraintsToSubGridHook(Grid *pSubGrid)
Required specialization for the read() call stack.
Struct for holding information about a dimension of data, minimally a name and a cardinality (size)...
Definition: Dimension.h:50
virtual GridJoinExistingAggregation * ptr_duplicate()
GridJoinExistingAggregation & operator=(const GridJoinExistingAggregation &rhs)
std::vector< RCPtr< AggMemberDataset > > AMDList
auto_ptr< ArrayJoinExistingAggregation > makeAggregatedOuterMapVector() const
Create a new map aggregated map vector for this aggregation, using its data templates, granule list, and outer dimension.