29 #include <boost/lexical_cast.hpp>
31 #include "WProtonData.h"
42 if( csvHeader ==
nullptr )
44 throw WException(
"Can not set header! No header specified!" );
47 if( csvHeader->empty() )
49 throw WException(
"No empty header allowed!" );
54 std::vector< std::string > header =
m_csvHeader->at( 0 );
58 for(
size_t i = 0; i < header.size(); i++ )
66 if( csvData ==
nullptr )
68 throw WException(
"Can not set data! No data specified!" );
71 if( csvData->empty() )
73 throw WException(
"Can not set data! No data content found!" );
127 auto currentRow = csvData->begin();
130 for(
auto cell : *currentRow )
153 std::regex regexInt( R
"(^[-\+]?[[:d:]]+([eE]\+?0?[1-9])?$)" );
154 std::regex regexDouble( R"(^([+-]?(?:[[:d:]]+\.?|[[:d:]]*\.[[:d:]]+))(?:[Ee][+-]?[[:d:]]+)?$)" );
156 if( std::regex_search( cellValue, regexInt ) )
160 else if( std::regex_search( cellValue, regexDouble ) )
177 doubleValue = boost::lexical_cast< double >( row.at( columnNumber ) );
178 intValue = ( int )doubleValue;
180 if( doubleValue - intValue != 0 )
191 std::vector< std::string > header =
m_csvHeader->at( 0 );
193 std::vector< std::string > filterHeader;
195 for(
size_t i = 0; i < columnTypes.size(); i++ )
197 for( std::string type : typeNames )
204 if( columnTypes[ i ] == type )
206 filterHeader.push_back( header[i] );
std::shared_ptr< std::vector< std::vector< std::string > > > ContentSPtr
represents a pointer to the Content
std::shared_ptr< std::vector< std::string > > ContentElemSPtr
represents a shared pointer to a ContentElem object.
static std::string getDefault()
getter
static std::string getInt()
getter
static std::string getString()
getter
static std::string getDouble()
getter
WDataSetCSV::ContentElemSPtr m_columnTypes
Stores the information, which data type is stored in associated column.
int getColumnIndex(std::string columnName)
getter
WDataSetCSV::ContentElemSPtr getColumnTypes()
Get column types, stored in a string vector.
WDataSetCSV::ContentSPtr m_csvData
Stores data from obtained input file.
void detectColumnTypesFromCsvData(WDataSetCSV::ContentSPtr csvData)
Reads csv data and stores column types in m_columnTypes.
std::map< std::string, int > m_ColumnMapSelectedIndex
Stores index of the selected single-selector (ColumnPropertyHandler)
int getColumnIndexBySelection(std::string selectedName)
getter
WDataSetCSV::ContentSPtr m_csvHeader
Stores column index of data.
std::string determineColumnTypeByString(std::string cellValue)
Determines column type due to cellValue.
WProtonData(WDataSetCSV::ContentSPtr csvHeader, WDataSetCSV::ContentSPtr csvData)
constructor
void setCSVData(WDataSetCSV::ContentSPtr csvData)
setter
void setStateIndex(std::string columnName, int index)
setter
WDataSetCSV::ContentSPtr getCSVHeader()
getter
void setCSVHeader(WDataSetCSV::ContentSPtr csvHeader)
setter
bool checkIfDoubleColumnCanBeInteger(int columnNumber)
Checks, if values of a column, containing double values, can be converted to integers.
WDataSetCSV::ContentSPtr getCSVData()
getter
std::vector< std::string > getHeaderFromType(std::list< std::string > typeNames)
Return a vector of filtered Headers.
std::map< std::string, int > m_columnMap
Stores data as map.
bool isColumnAvailable(std::string columnName)
checks whether columns are available