FileWriterASCIIVOTable.hh 4.88 KB
/**
 * FileWriterASCIIVOTable.hh
 *
 *  Created on: 21 oct. 2014
 *      Author: AKKA
 */

#ifndef FILEWRITERASCIIVOTABLE_HH_
#define FILEWRITERASCIIVOTABLE_HH_

#include "FileWriterASCIIAbstract.hh"

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

using namespace AMDA::Info;

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

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

	/*
	 * @overload FileWriter::isInfoInSeparateFile Function use to know if info must be write in a separate file
	 */
	virtual bool isInfoInSeparateFile(bool onlyOneInterval, OutputStructure outputStructure);

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

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

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

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

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

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

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

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

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

	/*
	 * @overload FileWriterASCIIAbstract::writeSingleInfo method to write an info designated by a key and a value for votable 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 votable format
	 */
	virtual void writeBeginInfoList(std::string title, int level);

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

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

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

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

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

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

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

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

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

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

	/*
	 * @overload FileWriterASCIIAbstract::writeTimeData - Write a time data in the ASCII file - Fot VOTable, only ISO time is available
	 */
	virtual bool writeTimeData(std::string paramId, double data, OutputFormatTime timeFormat, bool isFirstParam);

};

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

#endif /* FILEWRITERASCIIVOTABLE_HH_ */