VOTableWriter.hh
2.66 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
/*
* 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;
std::string getTypeAsString(ParameterDescription::ParameterType type);
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_ */