From e92f2007b32a14439c1f4affb47f7d327c78a641 Mon Sep 17 00:00:00 2001 From: "jonathan.ehret" <ehret@vr.rwth-aachen.de> Date: Mon, 27 Feb 2023 15:40:28 +0100 Subject: [PATCH] sanitize logged data to not make problems in csv files --- .../Private/SFCondition.cpp | 25 ++++++++++++++++--- .../StudyFrameworkPlugin/Public/SFCondition.h | 2 ++ 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/Source/StudyFrameworkPlugin/Private/SFCondition.cpp b/Source/StudyFrameworkPlugin/Private/SFCondition.cpp index aa24a20..b4ddcbc 100644 --- a/Source/StudyFrameworkPlugin/Private/SFCondition.cpp +++ b/Source/StudyFrameworkPlugin/Private/SFCondition.cpp @@ -112,8 +112,9 @@ bool USFCondition::StoreDependentVariableData(const FString& VarName, const FStr { return false; } - - DependentVariable->Value = Value; + FString SanitizedValue = Value; + SanitizeValueForCSV(SanitizedValue); + DependentVariable->Value = SanitizedValue; return true; } @@ -149,10 +150,15 @@ bool USFCondition::StoreMultipleTrialDependentVariableData(const FString& VarNam return false; } - USFGameInstance::Get()->GetParticipant()->StoreTrialInPhaseLongTable(TrialDependentVar, Values); + TArray<FString> SanitizedValues = Values; + for(FString& Value : SanitizedValues) + { + SanitizeValueForCSV(Value); + } + USFGameInstance::Get()->GetParticipant()->StoreTrialInPhaseLongTable(TrialDependentVar, SanitizedValues); std::vector<FString> ValuesVector; - for(const FString& Value : Values) + for(const FString& Value : SanitizedValues) { ValuesVector.push_back(Value); } @@ -193,6 +199,17 @@ USFDependentVariable* USFCondition::GetDependentVarForDataStoring(const FString& return nullptr; } +bool USFCondition::SanitizeValueForCSV(FString& Value) +{ + if(Value.Contains(",")) + { + FSFLoggingUtils::Log("Cannot log data containing a ',' into a csv file, replacing ',' with [Komma]", true); + Value.ReplaceInline(TEXT(","), TEXT("[Komma]")); + return false; + } + return true; +} + float USFCondition::GetTimeTaken() const { return TimeTaken; diff --git a/Source/StudyFrameworkPlugin/Public/SFCondition.h b/Source/StudyFrameworkPlugin/Public/SFCondition.h index ca4ce64..21522f7 100644 --- a/Source/StudyFrameworkPlugin/Public/SFCondition.h +++ b/Source/StudyFrameworkPlugin/Public/SFCondition.h @@ -78,6 +78,8 @@ protected: USFDependentVariable* GetDependentVarForDataStoring(const FString& VarName, const FString& Data); + bool SanitizeValueForCSV(FString& Value); + private: bool bStarted=false; -- GitLab