/* * ParameterDescription.hh * * Created on: 5 nov 2014 * Author: AKKA */ #ifndef PARAMETERDESCRIPTION_H_ #define PARAMETERDESCRIPTION_H_ #include #include #include namespace TimeTableCatalog { /** * Catalog definition. */ class ParameterDescription { public: enum class ParameterType{ Unknown = -1, Double = 0, Date = 1, String = 2, Integer = 3 } ; ParameterDescription () : _id(""), _name(""), _size("1"), _type(ParameterType::Double), _unit(""), _description(""), _ucd(""), _utype("") { setNull(_type); } ParameterDescription ( const std::string &id, const std::string &name, const std::string &size, ParameterType type, const std::string &unit, const std::string &description, const std::string &ucd, const std::string &utype ) : _id(id), _name(name), _size(size), _type(type), _unit(unit), _description(description), _ucd(ucd), _utype(utype) { setNull(_type); } /** * Parameter id getter */ const std::string& getId() const { return _id; } /** * Parameter id setter */ void setId(const std::string& id) { _id = id; } /** * Parameter name getter */ const std::string& getName() const { return _name; } /** * Parameter name setter */ void setName(const std::string& name) { _name = name; } /** * Parameter size getter */ const std::string& getSize() const { return _size; } /** * Parameter size getter */ int getSizeAsInt(); /** * Parameter size setter */ void setSize(const std::string& size) { _size = size; } /** * Parameter type getter */ ParameterType getType() const { return _type; } /** * Parameter type setter */ void setType(ParameterType type) { _type = type; } /** * Parameter units getter */ const std::string& getUnit() const { return _unit; } /** * Parameter units setter */ void setUnit(const std::string& units) { _unit = units; } /** * Parameter description getter */ const std::string& getDescription() const { return _description; } /** * Parameter description setter */ void setDescription(const std::string& description) { _description = description; } /** * Parameter ucd getter */ const std::string& getUcd() const { return _ucd; } /** * Parameter ucd setter */ void setUcd(const std::string& ucd) { _ucd = ucd; } /** * Parameter utype getter */ const std::string& getUtype() const { return _utype; } /** * Parameter utype getter */ const std::string& getNull() const { return _null; } /** * Parameter utype setter */ void setUtype(const std::string& utype) { _utype = utype; } void setNull(const std::string& null){ _null = null; } void setNull(ParameterType type){ switch (type){ case ParameterType::Double: case ParameterType::Integer: _null = "0"; break; case ParameterType::Unknown: case ParameterType::String: _null = "None"; break; case ParameterType::Date: _null = "0001-01-01T00:00:00:00.000Z"; break; default: _null = "0"; } } private: /** * Parameter (expected) unique id */ std::string _id; /** * Parameter name */ std::string _name; /** * Parameter size ("1"=scalar, "N"=N values array, "NxM"=N x M matrix) */ std::string _size; /** * Parameter type ("1"=scalar, "2"=vector, "NxM"=N x M matrix) */ ParameterType _type; /** * Parameter units */ std::string _unit; /** * Parameter description */ std::string _description; /** * Parameter unified content descriptor */ std::string _ucd; /** * Parameter utype (VOTable definition) */ std::string _utype; /** * param field null => 0, None etc */ std::string _null; }; typedef std::vector ParameterDescriptionList; } /* namespace TimeTableCatalog */ #endif /* PARAMETERDESCRIPTION_H_ */