7#ifndef VERSIONED_CSV_FILE_H
8#define VERSIONED_CSV_FILE_H
33 const std::string& default_value =
"")
155 const std::string& default_value =
"");
197 virtual void open(
const bool seek_to_end =
false);
293 std::vector<VersionedColumnPtr> columns_;
298 size_t valid_column_count_;
302 size_t minimum_valid_columns_;
307 size_t input_header_count_;
int version()
returns Kea hooks version.
This is a base class for exceptions thrown from the DNS library module.
virtual const char * what() const
Returns a C-style character string of the cause of the exception.
Provides input/output access to CSV files.
Represents a single row of the CSV file.
Exception thrown when an error occurs during CSV file processing.
VersionedCSVFileError(const char *file, size_t line, const char *what)
Implements a CSV file that supports multiple versions of the file's "schema".
bool needsConversion() const
Returns true if the input file schema state is not CURRENT.
virtual void open(const bool seek_to_end=false)
Opens existing file or creates a new one.
virtual ~VersionedCSVFile()
Destructor.
const VersionedColumnPtr & getVersionedColumn(const size_t index) const
Fetch the column descriptor for a given index.
std::string getSchemaVersion() const
text version of current schema supported by the file's metadata
InputSchemaState
Possible input file schema states.
size_t getInputHeaderCount() const
Returns the number of columns found in the input header.
virtual bool validateHeader(const CSVRow &header)
Validates the header of a VersionedCSVFile.
VersionedCSVFile(const std::string &filename)
Constructor.
std::string getInputSchemaVersion() const
Returns the schema version of the physical file.
virtual void recreate()
Creates a new CSV file.
void setMinimumValidColumns(const std::string &column_name)
Sets the minimum number of valid columns based on a given column.
bool next(CSVRow &row)
Reads next row from the file file.
void addColumn(const std::string &col_name, const std::string &version, const std::string &default_value="")
Adds metadata for a single column to the schema.
size_t getMinimumValidColumns() const
Returns the minimum number of columns which must be present for the file to be considered valid.
void columnCountError(const CSVRow &row, const std::string &reason)
Convenience method for adding an error message.
size_t getValidColumnCount() const
Returns the number of valid columns found in the header For newly created files this will always matc...
enum InputSchemaState getInputSchemaState() const
Fetches the state of the input file's schema.
Contains the metadata for a single column in a file.
std::string default_value_
default_value The value the column should be assigned if it is not present in a data row.
virtual ~VersionedColumn()
Destructor.
std::string version_
Text representation of the schema version in which this column first appeared.
std::string name_
Name of the column.
VersionedColumn(const std::string &name, const std::string &version, const std::string &default_value="")
Constructor.
boost::shared_ptr< VersionedColumn > VersionedColumnPtr
Defines a smart pointer to VersionedColumn.
Defines the logger used by the top-level component of kea-lfc.