From 27352dbb8ca2814840a3888a71cd85a6c49558a1 Mon Sep 17 00:00:00 2001 From: blaschke <blaschke@FOR2848.fortiss.fortiss.org> Date: Mon, 9 Oct 2023 10:43:00 +0200 Subject: [PATCH] Every project gets own file to store the data for it. Issue-Ref: 4310 Issue-Url: https://git.fortiss.org/af3/af3/-/issues/4310 Signed-off-by: Konstantin Blaschke <blaschke@fortiss.org> --- .../ext/quality/service/ModelQualityService.java | 1 - .../tooling/ext/quality/storage/CSVFileWriter.java | 12 +++++++++--- .../quality/storage/ModelQualityStorageManager.java | 5 ++++- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/org.fortiss.tooling.ext.quality/src/org/fortiss/tooling/ext/quality/service/ModelQualityService.java b/org.fortiss.tooling.ext.quality/src/org/fortiss/tooling/ext/quality/service/ModelQualityService.java index 3e6f13a34..866323ee8 100644 --- a/org.fortiss.tooling.ext.quality/src/org/fortiss/tooling/ext/quality/service/ModelQualityService.java +++ b/org.fortiss.tooling.ext.quality/src/org/fortiss/tooling/ext/quality/service/ModelQualityService.java @@ -227,7 +227,6 @@ public class ModelQualityService extends EObjectAwareServiceBase<IMetricProvider metricDataManagerInstance.getTreeNodeLookupTable().put(rootElement, rootNode); metricUpdateListeners.forEach(l -> l.metricUpdate(rootElement)); } - // Store all currently saved metrics to the csv CSVFileWriter.metricExtractionToCSV(updatedElements); } diff --git a/org.fortiss.tooling.ext.quality/src/org/fortiss/tooling/ext/quality/storage/CSVFileWriter.java b/org.fortiss.tooling.ext.quality/src/org/fortiss/tooling/ext/quality/storage/CSVFileWriter.java index 6476dbb63..eaf6b7fdd 100644 --- a/org.fortiss.tooling.ext.quality/src/org/fortiss/tooling/ext/quality/storage/CSVFileWriter.java +++ b/org.fortiss.tooling.ext.quality/src/org/fortiss/tooling/ext/quality/storage/CSVFileWriter.java @@ -27,6 +27,7 @@ import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -69,12 +70,15 @@ public class CSVFileWriter { } // path to csv file - Path path = new File(ModelQualityStorageManager.MODEL_QUALITY_PROJECT_DIR, - ModelQualityStorageManager.CSV_FILE_NAME).toPath(); + Collection<DataRootElement> values = map.values(); + DataRootElement firstValue = values.toArray(new DataRootElement[0])[0]; + String projectName = firstValue.getTopLevelElement().getSaveableName(); + Path path = new File(ModelQualityStorageManager.MODEL_QUALITY_PROJECT_DIR, + projectName.replace(ModelQualityStorageManager.AF3_PRJ_SUFFIX,ModelQualityStorageManager.CSV)).toPath(); List<String> allKeys = new ArrayList<>(); boolean createNewIndex = true; - + if(Files.exists(path)) { // Read first line and try to extract the keys from the already existing file try(BufferedReader reader = new BufferedReader(new FileReader(path.toFile()))) { @@ -105,6 +109,8 @@ public class CSVFileWriter { */ private static void writeMetricsToFile(Map<IProjectRootElement, DataRootElement> map, List<String> allKeys, Path path, boolean createNewIndex) { + + try(var writer = new BufferedWriter(new FileWriter(path.toFile(), true))) { if(createNewIndex) { // Create new index and write it into the first line of the file diff --git a/org.fortiss.tooling.ext.quality/src/org/fortiss/tooling/ext/quality/storage/ModelQualityStorageManager.java b/org.fortiss.tooling.ext.quality/src/org/fortiss/tooling/ext/quality/storage/ModelQualityStorageManager.java index 124faddb3..5dab1bd13 100644 --- a/org.fortiss.tooling.ext.quality/src/org/fortiss/tooling/ext/quality/storage/ModelQualityStorageManager.java +++ b/org.fortiss.tooling.ext.quality/src/org/fortiss/tooling/ext/quality/storage/ModelQualityStorageManager.java @@ -38,6 +38,9 @@ public class ModelQualityStorageManager { public static final File MODEL_QUALITY_PROJECT_DIR = new File(WORKSPACE_ROOT.getLocation() + File.separator + AF3_QUALITY_DIRECTORY_NAME); + /** Defines the suffix of AF3 project files. */ + public static final String AF3_PRJ_SUFFIX = "af3_23"; + /** Name of the file in which the data is written. */ - public static final String CSV_FILE_NAME = "metric_logfile.csv"; + public static final String CSV = "csv"; } -- GitLab