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 3e6f13a34dc479371c6e818648507b1ce538a401..866323ee8e3460dff99df584bbecc9fe69b35581 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 6476dbb630bab3592cb68541ceb1535c0a920a66..eaf6b7fddc2541bfc09584d8ed2f07a86dd8aef3 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 124faddb3d297d23448c15379446cc847a2790a9..5dab1bd135b22f53498e782799c7ce394524698f 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"; }