From 6334e071814c52c441ed1bd816046c1ed489c93d Mon Sep 17 00:00:00 2001
From: "jonathan.ehret" <ehret@vr.rwth-aachen.de>
Date: Wed, 22 Feb 2023 10:41:44 +0100
Subject: [PATCH] improve removing old long table files (previously missing
 those phases which were only added in the callback function)

---
 .../Private/SFParticipant.cpp                  | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/Source/StudyFrameworkPlugin/Private/SFParticipant.cpp b/Source/StudyFrameworkPlugin/Private/SFParticipant.cpp
index ac2767d..0abf6cd 100644
--- a/Source/StudyFrameworkPlugin/Private/SFParticipant.cpp
+++ b/Source/StudyFrameworkPlugin/Private/SFParticipant.cpp
@@ -6,6 +6,7 @@
 
 #include "IUniversalLogging.h"
 #include "SFGameInstance.h"
+#include "HAL/FileManagerGeneric.h"
 #include "Help/SFUtils.h"
 #include "Logging/SFLoggingBPLibrary.h"
 #include "Logging/SFLoggingUtils.h"
@@ -479,15 +480,16 @@ void USFParticipant::RecoverStudyResultsOfFinishedConditions()
 
 void USFParticipant::ClearPhaseLongtables(ASFStudySetup* StudySetup)
 {
-	for (int i = 0; i < StudySetup->GetNumberOfPhases(); ++i)
+	const FString LongTableFolder = FPaths::ProjectDir() + "StudyFramework/StudyLogs/";
+	const FString Extension = "*.csv";
+	const FString SearchPattern = LongTableFolder + Extension;
+	TArray<FString> FileNames;
+	IFileManager& FileManager = IFileManager::Get();
+	FileManager.FindFiles(FileNames, *SearchPattern, true, false);
+	for (FString Filename : FileNames)
 	{
-		const FString PhaseName = StudySetup->GetPhase(i)->PhaseName;
-		const FString Filename = FPaths::ProjectDir() + "StudyFramework/StudyLogs/Phase_" + PhaseName + ".csv";
-		if (FPaths::FileExists(Filename))
-		{
-			IFileManager& FileManager = IFileManager::Get();
-			FileManager.Delete(*Filename);
-		}
+		const FString FullName = LongTableFolder + Filename;
+		FileManager.Delete(*FullName);
 	}
 }
 
-- 
GitLab