Blame view

src/ParamOutputImpl/Download/DownloadProperties.hh 2.86 KB
fbe3c2bb   Benjamin Renard   First commit
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
/*
 * 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,
	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);
f7b99646   Benjamin Renard   Give the possibil...
63
64
	double getTimeResolution() const;
	void setTimeResolution(double timeResolution);
fbe3c2bb   Benjamin Renard   First commit
65
66
67
68
69
70
71
	ParamPropertiesList& getParamPropertiesList();
	ParamProperties* getParamPropertiesFromOriginalId(std::string originalId);
	ParamProperties* getParamPropertiesFromOutputId(std::string outputId);
	void addParamProperties(ParamProperties *paramProperties);
	bool getPrecision(void) const;
	void setPrecision(bool precision);

4f3abe6a   Benjamin Renard   Give the possibil...
72
73
74
        bool getSeparateInfoFile(void) const;
        void setSeparateInfoFile(bool separateInfoFile);

fbe3c2bb   Benjamin Renard   First commit
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
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;

	/**
	 * Time resolution
	 */
f7b99646   Benjamin Renard   Give the possibil...
99
	double _timeResolution;
fbe3c2bb   Benjamin Renard   First commit
100
101
102
103
104
105
106
107
108
109
110
111

	/**
	 * Output structure :
	 * - One file
	 * - One file per interval
	 */
	OutputStructure _outputStructure;

	/*
	 * Increase precision in output file
	 */
	bool _precision;
4f3abe6a   Benjamin Renard   Give the possibil...
112
113
114
115
116
117
	       
        /*
        * put the header  info in a separated file
        */
        bool _separateInfoFile;

fbe3c2bb   Benjamin Renard   First commit
118
119
120
121
122
123
124
};

} // namespace Download
} // namespace ParamOutputImpl
} // namespace AMDA

#endif /* DOWNLOADPROPERTIES_HH_ */