Blame view

src/TimeTableCatalog/VOTableWriter.hh 2.66 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
/*
 * VOTableWriter.hh
 *
 *  Created on: 7 août 2013
 *      Author: CS
 */

#ifndef VOTABLEWRITER_HH_
#define VOTABLEWRITER_HH_

#include "XMLWriter.hh"

namespace TimeTableCatalog {

/**
 * Writes a TimeTable into an InternalXML formated file.
 * Something like :
 *  <?xml version="1.0" encoding="UTF-8"?>
 *  <VOTABLE version="1.3">
 *   <DESCRIPTION> Time Table generated by AMDA @ CDPP;
 Conditions:   Solar Proton Events Affecting the Earth Environment from http://www.swpc.noaa.gov/ftpdir/indices/SPE.txt
 January 1976 - July 2007
 PARTICLE EVENT
 Start - Maximum;
 Source: Upload Time Table;
 Creation Date :  2009-04-07 12:26:52;
 </DESCRIPTION>
 <RESOURCE>
 <DESCRIPTION> AMDA @ CDPP</DESCRIPTION>
 <TABLE>
 <FIELD datatype="char" name="Start Time" ID="TimeIntervalStart" ucd="time.start">
 <DESCRIPTION>time tag for beginning of interval</DESCRIPTION>
 </FIELD>
 <FIELD datatype="char" name="Stop Time" ID="TimeIntervalStop" ucd="time.stop">
 <DESCRIPTION>time tag for end of interval</DESCRIPTION>
 </FIELD>
 <DATA>
 <TABLEDATA>
 <TR>
 <TD>1976-04-30T21:20:00</TD>
 <TD>1976-05-01T17:00:00</TD>
 </TR>
 <TR>
 <TD>1977-09-19T14:30:00</TD>
 <TD>1977-09-19T21:30:00</TD>
 </TR>
 </TABLEDATA>
 </DATA>
 </TABLE>
 </RESOURCE>
 </VOTABLE>
 *
 */
class VOTableWriter: public TimeTableCatalog::XMLWriter {
public:

	static const std::string FORMAT;

	VOTableWriter(const std::string& pPath, const std::string& pName = "");
	virtual ~VOTableWriter();

	/**
	 * Writes TimeTable into an InternalXML formated file.
	 */
	std::string write(const TimeTable& pTT);

	/**
	 * Creates an instance of this.
	 */
	std::unique_ptr<AbstractWriter> createInstance(const std::string& pPath, const std::string& pName = "");

	/**
	 * Gets the tt file expected extension, starting with .
	 */
	const std::string getExtension() const;

68c29629   Benjamin Renard   Fix in TT/Catalog...
77
	std::string getTypeAsString(ParameterDescription::ParameterType type);
fbe3c2bb   Benjamin Renard   First commit
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

private:
	/**
	 * Writes XML content (except header).
	 */
	void writeContent(const TimeTable& pTT, xmlTextWriterPtr& pWriter);

	/**
	 * Writes all metadata tags as name, description, nbintervals etc.
	 */
	void writeMetadata(const TimeTable& pTT, xmlTextWriterPtr& pWriter);

	/**
	 * Writes FIELD element in the file
	 */
	void writeField(const TimeTable& pTT,
			xmlTextWriterPtr& pWriter,
			const std::string &name,
			const std::string &ID,
			const std::string &ucd,
			const std::string &datatype,
			const std::string &xtype,
			const std::string &utype,
			const std::string &unit,
			const std::string &description,
			int arraysize);

	/**
	 * Writes all intervals.
	 */
	void writeVOTable(const TimeTable& pTT, xmlTextWriterPtr& pWriter);

};

} /* namespace TimeTableCatalog */
#endif /* VOTABLEWRITER_HH_ */