Added support of optional header names when importing CSV file.
This commit is contained in:
@ -52,6 +52,11 @@ bool CsvParser::isCsvCompatible(const rapidcsv::Document& doc) {
|
|||||||
qInfo() << "Checking CSV document for compatiblity...";
|
qInfo() << "Checking CSV document for compatiblity...";
|
||||||
const std::vector<std::string> columnNames = doc.GetColumnNames();
|
const std::vector<std::string> columnNames = doc.GetColumnNames();
|
||||||
for (const QString& headerName : GET_HEADER_NAMES()) {
|
for (const QString& headerName : GET_HEADER_NAMES()) {
|
||||||
|
if (OPTIONAL_CSV_HEADERS.contains(headerName)) {
|
||||||
|
/// no need to have a column for the optional values
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
/// these column must be found in CSV document
|
||||||
bool isHeaderNameFound = false;
|
bool isHeaderNameFound = false;
|
||||||
if (std::find(columnNames.begin(), columnNames.end(), headerName) != columnNames.end()) {
|
if (std::find(columnNames.begin(), columnNames.end(), headerName) != columnNames.end()) {
|
||||||
qDebug() << QString("Header found in column names: %1").arg(headerName);
|
qDebug() << QString("Header found in column names: %1").arg(headerName);
|
||||||
@ -86,14 +91,13 @@ QHash<QString, std::vector<std::string>> CsvParser::extractColumnValues(
|
|||||||
const rapidcsv::Document& doc) {
|
const rapidcsv::Document& doc) {
|
||||||
QHash<QString, std::vector<std::string>> columnValueMap;
|
QHash<QString, std::vector<std::string>> columnValueMap;
|
||||||
for (const QString& columnName : headerNames) {
|
for (const QString& columnName : headerNames) {
|
||||||
// TODO add support for optional columns
|
if (OPTIONAL_CSV_HEADERS.contains(columnName)) {
|
||||||
// if (optionalCsvHeaderNames.contains(columnName)) {
|
const std::vector<std::string> columnNames = doc.GetColumnNames();
|
||||||
// const std::vector<std::string> columnNames = doc.GetColumnNames();
|
int columnIdx = doc.GetColumnIdx(columnName.toStdString());
|
||||||
// int columnIdx = doc.GetColumnIdx(columnName.toStdString());
|
if (columnIdx == -1) {
|
||||||
// if (columnIdx == -1) {
|
continue;
|
||||||
// continue;
|
}
|
||||||
// }
|
}
|
||||||
// }
|
|
||||||
const std::vector<std::string> columnValues =
|
const std::vector<std::string> columnValues =
|
||||||
doc.GetColumn<std::string>(columnName.toStdString());
|
doc.GetColumn<std::string>(columnName.toStdString());
|
||||||
columnValueMap.insert(columnName, columnValues);
|
columnValueMap.insert(columnName, columnValues);
|
||||||
|
|||||||
@ -73,6 +73,8 @@ static const QList<UserRoles> TYPE_ROLES = {ShareTypeRole, BiddingTypeRol
|
|||||||
static const QList<UserRoles> SHARE_TYPE_ROLES = {ShareTypeRole};
|
static const QList<UserRoles> SHARE_TYPE_ROLES = {ShareTypeRole};
|
||||||
static const QList<UserRoles> BIDDING_TYPE_ROLES = {BiddingTypeRole};
|
static const QList<UserRoles> BIDDING_TYPE_ROLES = {BiddingTypeRole};
|
||||||
|
|
||||||
|
static const QStringList OPTIONAL_CSV_HEADERS = {"Bietart", "Online ID", "Access Code"};
|
||||||
|
|
||||||
/// JSON keys
|
/// JSON keys
|
||||||
static const QString ITEMS_KEY_STRING = "items";
|
static const QString ITEMS_KEY_STRING = "items";
|
||||||
static const QString ITEM_KEY_STRING = "item";
|
static const QString ITEM_KEY_STRING = "item";
|
||||||
|
|||||||
Reference in New Issue
Block a user