29#ifndef FODAPNJSONTRANSFORM_H_
30#define FODAPNJSONTRANSFORM_H_
54 std::string _returnAs;
55 std::string _indent_increment;
56 std::string atomicVals;
57 std::string currDataType;
58 std::string domainType;
59 std::string coordRefType;
66 bool canConvertToCovJson;
80 std::string standardName;
85 unsigned int axisCount;
86 std::vector<Axis *> axes;
87 std::string axis_t_units;
88 unsigned int parameterCount;
89 std::vector<Parameter *> parameters;
90 std::vector<int> shapeVals;
93 std::string axis_x_varname;
94 std::string axis_y_varname;
95 std::string axis_z_varname;
96 std::string axis_t_varname;
102 std::string dim_name;
103 std::string bound_name;
110 std::vector<float> axisVar_x_bnd_val;
111 std::vector<float> axisVar_y_bnd_val;
112 std::vector<float> axisVar_z_bnd_val;
113 std::vector<double> axisVar_t_bnd_val;
115 std::vector<std::string>bnd_dim_names;
116 std::vector<std::string>par_vars;
118 bool is_simple_cf_geographic;
120 bool check_add_axis(libdap::Array *d_a,
const std::string &,
const std::vector<std::string> &, axisVar &,
bool is_t_axis);
121 void check_bounds(libdap::DDS *dds, std::map<std::string,std::string>& vname_b_name);
122 void obtain_bound_values(libdap::DDS *dds,
const axisVar& av, std::vector<float>& av_bnd_val,std::string &bnd_dim_name,
bool);
123 void obtain_bound_values(libdap::DDS *dds,
const axisVar& av, std::vector<double>& av_bnd_val,std::string &bnd_dim_name,
bool);
125 libdap::Array * obtain_bound_values_worker(libdap::DDS *dds,
const std::string & bound_name, std::string &bound_dim_name);
127 bool obtain_valid_vars(libdap::DDS *dds,
short axis_var_z_count,
short axis_var_t_count);
130 std::string cf_time_to_greg(
long long time);
131 void print_bound(std::ostream *strm,
const std::vector<std::string> & t_bnd_val,
const std::string & indent,
bool is_t_axis)
const;
167 void getAttributes(std::ostream *strm, libdap::AttrTable &attr_table, std::string name,
168 bool *axisRetrieved,
bool *parameterRetrieved);
170 void getAttributes_simple_cf_geographic(std::ostream *strm, libdap::AttrTable &attr_table, std::string name,
171 bool *axisRetrieved,
bool *parameterRetrieved);
182 string sanitizeTimeOriginString(std::string timeOrigin);
199 void transform(std::ostream *strm, libdap::DDS *dds, std::string indent,
bool sendData,
bool testOverride);
213 void transform(std::ostream *strm, libdap::BaseType *bt, std::string indent,
bool sendData);
232 void transform(std::ostream *strm, libdap::Constructor *cnstrctr, std::string indent,
bool sendData);
244 void transform(std::ostream *strm, libdap::Array *a, std::string indent,
bool sendData);
257 void transformAtomic(libdap::BaseType *bt, std::string indent,
bool sendData);
269 void transformNodeWorker(std::ostream *strm, vector<libdap::BaseType *> leaves, vector<libdap::BaseType *> nodes,
270 string indent,
bool sendData);
279 void printCoverage(std::ostream *strm, std::string indent);
314 void printDomain(std::ostream *strm, std::string indent);
330 void printAxes(std::ostream *strm, std::string indent);
353 void printReference(std::ostream *strm, std::string indent);
386 void printParameters(std::ostream *strm, std::string indent);
410 void printRanges(std::ostream *strm, std::string indent);
422 void printCoverageJSON(std::ostream *strm,
string indent,
bool testOverride);
442 void covjsonSimpleTypeArray(std::ostream *strm, libdap::Array *a, std::string indent,
bool sendData);
464 void covjsonStringArray(std::ostream *strm, libdap::Array *a, std::string indent,
bool sendData);
479 unsigned int covjsonSimpleTypeArrayWorker(std::ostream *strm, T *values,
unsigned int indx,
480 std::vector<unsigned int> *shape,
unsigned int currentDim,
bool is_axis_t_sgeo,libdap::Type a_type);
490 void addAxis(std::string name, std::string values);
507 void addParameter(std::string
id, std::string name, std::string type, std::string dataType, std::string unit,
508 std::string longName, std::string standardName, std::string shape, std::string values);
511 void setAxesExistence(
bool x,
bool y,
bool z,
bool t) {
518 void setDomainType(
int domainType) {
519 this->domainType = domainType;
537 virtual void transform(std::ostream &ostrm,
bool sendData,
bool testOverride);
563 for (std::vector<Axis *>::const_iterator i = axes.begin(); i != axes.end(); ++i)
566 for (std::vector<Parameter *>::const_iterator i = parameters.begin(); i != parameters.end(); ++i)
580 virtual void dump(std::ostream &strm)
const;
583 virtual void addTestAxis(std::string name, std::string values) {
584 addAxis(name, values);
587 virtual void addTestParameter(std::string
id, std::string name, std::string type, std::string dataType, std::string unit,
588 std::string longName, std::string standardName, std::string shape, std::string values) {
589 addParameter(
id, name, type, dataType, unit, longName, standardName, shape, values);
592 virtual void setTestAxesExistence(
bool x,
bool y,
bool z,
bool t) {
593 setAxesExistence(x, y, z, t);
596 virtual void setTestDomainType(
int domainType) {
597 setDomainType(domainType);
600 virtual void printCoverage(std::ostream &ostrm, std::string indent) {
601 printCoverage(&ostrm, indent);
604 virtual void printDomain(std::ostream &ostrm, std::string indent) {
605 printDomain(&ostrm, indent);
608 virtual void printAxes(std::ostream &ostrm, std::string indent) {
609 printAxes(&ostrm, indent);
612 virtual void printReference(std::ostream &ostrm, std::string indent) {
613 printReference(&ostrm, indent);
616 virtual void printParameters(std::ostream &ostrm, std::string indent) {
617 printParameters(&ostrm, indent);
620 virtual void printRanges(std::ostream &ostrm, std::string indent) {
621 printRanges(&ostrm, indent);
Structure storing information used by the BES to handle the request.
top level BES object to house generic methods