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;
65 bool canConvertToCovJson;
79 std::string standardName;
84 unsigned int axisCount;
85 std::vector<Axis *> axes;
86 unsigned int parameterCount;
87 std::vector<Parameter *> parameters;
90 unsigned int shapeValsCount;
93 std::vector<int> shapeVals;
95 enum domains { Grid = 0, VerticalProfile = 1, PointSeries = 2, Point = 3, CoverageCollection = 4 };
99 void getAttributes(std::ostream *strm, libdap::AttrTable &attr_table, std::string name,
100 bool *axisRetrieved,
bool *parameterRetrieved);
102 void transform(std::ostream *strm, libdap::DDS *dds, std::string indent,
bool sendData,
bool testOverride);
103 void transform(std::ostream *strm, libdap::BaseType *bt, std::string indent,
bool sendData);
104 void transform(std::ostream *strm, libdap::Constructor *cnstrctr, std::string indent,
bool sendData);
105 void transform(std::ostream *strm, libdap::Array *a, std::string indent,
bool sendData);
107 void transformAtomic(libdap::BaseType *bt, std::string indent,
bool sendData);
108 void transformNodeWorker(std::ostream *strm, vector<libdap::BaseType *> leaves, vector<libdap::BaseType *> nodes,
109 string indent,
bool sendData);
111 void printCoverageHeaderWorker(std::ostream *strm, std::string indent,
bool isCoverageCollection);
112 void printAxesWorker(std::ostream *strm, std::string indent);
113 void printReferenceWorker(std::ostream *strm, std::string indent);
114 void printParametersWorker(std::ostream *strm, std::string indent);
115 void printRangesWorker(std::ostream *strm, std::string indent);
116 void printCoverageFooterWorker(std::ostream *strm, std::string indent);
117 void printCoverageJSON(std::ostream *strm,
string indent,
bool testOverride);
120 void covjsonSimpleTypeArray(std::ostream *strm, libdap::Array *a, std::string indent,
bool sendData);
121 void covjsonStringArray(std::ostream *strm, libdap::Array *a, std::string indent,
bool sendData);
124 unsigned int covjsonSimpleTypeArrayWorker(std::ostream *strm, T *values,
unsigned int indx,
125 std::vector<unsigned int> *shape,
unsigned int currentDim);
128 void addAxis(std::string name, std::string values) {
129 struct Axis *newAxis =
new Axis;
131 newAxis->name = name;
132 newAxis->values = values;
134 this->axes.push_back(newAxis);
138 void addParameter(std::string
id, std::string name, std::string type, std::string dataType, std::string unit,
139 std::string longName, std::string standardName, std::string shape, std::string values) {
140 struct Parameter *newParameter =
new Parameter;
142 newParameter->id = id;
143 newParameter->name = name;
144 newParameter->type = type;
145 newParameter->dataType = dataType;
146 newParameter->unit = unit;
147 newParameter->longName = longName;
148 newParameter->standardName = standardName;
149 newParameter->shape = shape;
150 newParameter->values = values;
152 this->parameters.push_back(newParameter);
153 this->parameterCount++;
156 void setAxesExistence(
bool x,
bool y,
bool z,
bool t) {
163 void setDomainType(
int domainType) {
164 this->domainType = domainType;
174 for (std::vector<Axis*>::const_iterator i = axes.begin(); i != axes.end(); ++i)
177 for (std::vector<Parameter *>::const_iterator i = parameters.begin(); i != parameters.end(); ++i)
181 virtual void transform(std::ostream &ostrm,
bool sendData,
bool testOverride);
183 virtual void dump(std::ostream &strm)
const;
185 virtual void addTestAxis(std::string name, std::string values) {
186 addAxis(name, values);
189 virtual void addTestParameter(std::string
id, std::string name, std::string type, std::string dataType, std::string unit,
190 std::string longName, std::string standardName, std::string shape, std::string values) {
191 addParameter(
id, name, type, dataType, unit, longName, standardName, shape, values);
194 virtual void setTestAxesExistence(
bool x,
bool y,
bool z,
bool t) {
195 setAxesExistence(x, y, z, t);
198 virtual void setTestDomainType(
int domainType) {
199 setDomainType(domainType);
202 virtual void printCoverageHeaderWorker(std::ostream &ostrm, std::string indent,
bool isCoverageCollection) {
203 printCoverageHeaderWorker(&ostrm, indent, isCoverageCollection);
206 virtual void printAxesWorker(std::ostream &ostrm, std::string indent) {
207 printAxesWorker(&ostrm, indent);
210 virtual void printReferenceWorker(std::ostream &ostrm, std::string indent) {
211 printReferenceWorker(&ostrm, indent);
214 virtual void printParametersWorker(std::ostream &ostrm, std::string indent) {
215 printParametersWorker(&ostrm, indent);
218 virtual void printRangesWorker(std::ostream &ostrm, std::string indent) {
219 printRangesWorker(&ostrm, indent);
222 virtual void printCoverageFooterWorker(std::ostream &ostrm, std::string indent) {
223 printCoverageFooterWorker(&ostrm, indent);