Blame view

src/ParamOutputImpl/Download/FileWriterASCIIJson.hh 4.48 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
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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
/**
 * FileWriterASCIIJson.hh
 *
 *  Created on: 21 oct. 2014
 *      Author: AKKA
 */

#ifndef FILEWRITERASCIIJSON_HH_
#define FILEWRITERASCIIJSON_HH_

#include "FileWriterASCIIAbstract.hh"

namespace AMDA {
namespace ParamOutputImpl {
namespace Download {
namespace FileWriter {

using namespace AMDA::Info;

/**
 * @class FileWriterASCIIJson
 * @brief Implementation of FileWriterASCIIAbstract for JSON file format.
 * @details
 */
class FileWriterASCIIJson : public FileWriterASCIIAbstract
{
public:
	/*
	 * @brief Constructor
	 */
	FileWriterASCIIJson(AMDA::Parameters::ParameterManager& pParameterManager);

	/*
	 * @brief Destructor
	 */
	virtual ~FileWriterASCIIJson(void);

	/*
	 * @overload FileWriterASCIIAbstract::getExtension - Method to get file format extension for json format
	 */
	virtual std::string getExtension(void);

	/*
	 * @overload  FileWriterASCIIAbstract::getDataFillCharacter Method to get fill character to use for json format
	 */
	virtual std::string getDataFillCharacter(void);

	/*
	 * @overload  FileWriterASCIIAbstract::writeBeginFile method to write begin file tag for json format
	 */
	virtual void writeBeginFile(void);

	/*
	 * @overload  FileWriterASCIIAbstract::writeEndFile method to write end file tag for json format
	 */
	virtual void writeEndFile(void);

	/*
	 * @overload FileWriterASCIIAbstract::writeBeginGeneralDescription method to write begin description tag for json format
	 */
	virtual void writeBeginGeneralDescription(void);

	/*
	 * @overload FileWriterASCIIAbstract::writeEndGeneralDescription method to write end description tag for json format
	 */
	virtual void writeEndGeneralDescription(void);

	/*
	 * @overload FileWriterASCIIAbstract::writeErrorInfo method to write an error message for json format
	 */
	virtual void writeErrorInfo(std::string msg);

	/*
	 * @overload FileWriterASCIIAbstract::writeBeginInfoGroup method to write begin info group tag with a title for json format
	 */
	virtual void writeBeginInfoGroup(std::string title, int level);

	/*
	 * @overload FileWriterASCIIAbstract::writeEndInfoGroup method to write end info group tag with a title for json format
	 */
	virtual void writeEndInfoGroup(int level);

	/*
	 * @overload FileWriterASCIIAbstract::writeSingleInfo method to write an info designated by a key and a value for json format
	 */
	virtual void writeSingleInfo(std::string key, std::string value, int level);

	/*
	 * @overload FileWriterASCIIAbstract::writeBeginInfoList method to write begin info list tag with a title for json format
	 */
	virtual void writeBeginInfoList(std::string title, int level);

	/*
	 * @overload FileWriterASCIIAbstract::writeEndInfoList method to write end info list tag with a title for json format
	 */
	virtual void writeEndInfoList(void);

	/*
	 * @overload FileWriterASCIIAbstract::writeBeginFieldsDescription method to write begin info fields description tag for json format
	 */
	virtual void writeBeginFieldsDescription(void);

	/*
	 * @overload FileWriterASCIIAbstract::writeEndFieldsDescription method to write end info fields description tag for json format
	 */
	virtual void writeEndFieldsDescription(void);

	/*
	 * @overload FileWriterASCIIAbstract::writeFieldDescription method to write a field description by parameter id for json format
	 */
	virtual void writeFieldDescription(std::string paramId);

	/*
	 * @overload FileWriterASCIIAbstract::writeBeginData method to write begin data tag for json format
	 */
	virtual void writeBeginData(void);

	/*
	 * @overload FileWriterASCIIAbstract::writeEndData method to write end data tag for json format
	 */
	virtual void writeEndData(void);

	/*
	 * @overload FileWriterASCIIAbstract::writeDataRecord method to write a data record for json format
	 */
	virtual void writeDataRecord(std::string record);

	/*
	 * @overload FileWriterASCIIAbstract::getDataStartTag method to get data start tag for json format
	 */
	virtual std::string getDataStartTag(bool isTimeData);

	/*
	 * @overload FileWriterASCIIAbstract::getDataStopTag method to get data stop tag for json format
	 */
	virtual std::string getDataStopTag(void);

	/*
	 * @overload FileWriterASCIIAbstract::getDataValueSeparator method to get data value separator for json format
	 */
	virtual std::string getDataValueSeparator(void);

private:
	/*
	 * @brief List of boolean to know if a first element is already write in a group for json format
	 */
	std::list<bool> isFirstInfo;
};

} /* namespace FileWriter */
} /* namespace Download */
} /* namespace ParamOutputImpl */
} /* namespace AMDA */

#endif /* FILEWRITERASCIIJSON_HH_ */