Added support of optional header names when importing CSV file.

This commit is contained in:
2026-02-10 11:04:26 +01:00
parent e157d4399d
commit bdc8075324
2 changed files with 19 additions and 13 deletions

View File

@ -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);

View File

@ -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";