DownloadProperties.hh
3.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/*
* DownLoadProperties.hh
*
* Created on: Oct 1, 2014
* Author: m.mazel
*/
#ifndef DOWNLOADPROPERTIES_HH_
#define DOWNLOADPROPERTIES_HH_
#include <string>
#include "OutputFormatTime.hh"
#include "ParamProperties.hh"
namespace AMDA {
namespace ParamOutputImpl {
namespace Download {
enum OutputFileFormat {
ASCII_FILE_FORMAT,
CDF_FILE_FORMAT,
CDF_ISTP_FILE_FORMAT,
NETCDF_FILE_FORMAT,
JSON_FILE_FORMAT,
VOT_FILE_FORMAT
};
enum OutputStructure {
ONE_FILE,
ONE_FILE_REFPARAM,
ONE_FILE_PER_INTERVAL,
ONE_FILE_PER_INTERVAL_REFPARAM,
ONE_FILE_PER_PARAMETER_PER_INTERVAL
};
static std::map<OutputStructure,std::string> ouputStructureToStr = {
{OutputStructure::ONE_FILE, "all-in-one-file"},
{OutputStructure::ONE_FILE_REFPARAM, "all-in-one-file-refparam"},
{OutputStructure::ONE_FILE_PER_INTERVAL, "one-file-per-interval"},
{OutputStructure::ONE_FILE_PER_INTERVAL_REFPARAM, "one-file-per-interval-refparam"},
{OutputStructure::ONE_FILE_PER_PARAMETER_PER_INTERVAL, "one-file-per-parameter-per-interval"}
};
typedef std::vector<ParamProperties *> ParamPropertiesList;
/**
* @class DownloadProperties
* @brief Properties of a download request.
* @details
*/
class DownloadProperties {
public:
DownloadProperties();
virtual ~DownloadProperties();
OutputFileFormat getFileFormat() const;
void setFileFormat(OutputFileFormat fileFormat);
const std::string& getFileName() const;
void setFileName(const std::string& fileName);
OutputStructure getOutputStructure() const;
void setOutputStructure(OutputStructure outputStructure);
OutputFormatTime getTimeFormat() const;
void setTimeFormat(OutputFormatTime timeFormat);
double getTimeResolution() const;
void setTimeResolution(double timeResolution);
ParamPropertiesList& getParamPropertiesList();
ParamPropertiesList& getTableParamPropertiesList();
ParamPropertiesList getAllParamPropertiesList(); // petit commentaire
ParamProperties* getParamPropertiesFromOriginalId(std::string originalId);
ParamProperties* getParamPropertiesFromOutputId(std::string outputId);
ParamProperties* getTableParamPropertiesFromOutputId(std::string outputId);
void addParamProperties(ParamProperties *paramProperties);
void addTableParamProperties(ParamProperties *tableParamProperties);
bool getPrecision(void) const;
void setPrecision(bool precision);
bool getSeparateInfoFile(void) const;
void setSeparateInfoFile(bool separateInfoFile);
private:
/**
* format of time
*/
OutputFormatTime _timeFormat;
/**
* File format (see OutputFileFormat for supported format definition)
*/
OutputFileFormat _fileFormat;
/**
* File name
*/
std::string _fileName;
/**
* Parameter properties list
*/
ParamPropertiesList _paramPropertiesList;
/**
* Table properties list
*/
ParamPropertiesList _tableParamPropertiesList;
/**
* Time resolution
*/
double _timeResolution;
/**
* Output structure :
* - One file
* - One file per interval
*/
OutputStructure _outputStructure;
/*
* Increase precision in output file
*/
bool _precision;
/*
* put the header info in a separated file
*/
bool _separateInfoFile;
};
} // namespace Download
} // namespace ParamOutputImpl
} // namespace AMDA
#endif /* DOWNLOADPROPERTIES_HH_ */