Use camel case everywhere
[e-mobility-charging-stations-simulator.git] / src / performance / storage / JSONFileStorage.ts
index 30c83d3d75592991f3424f31b7b65a35484c500c..9df7662a02db6a0552a8cd03dbe6ee9e8fd601a3 100644 (file)
@@ -10,9 +10,9 @@ import lockfile from 'proper-lockfile';
 export class JSONFileStorage extends Storage {
   private fd: number | null = null;
 
-  constructor(storageURI: string, logPrefix: string) {
-    super(storageURI, logPrefix);
-    this.dbName = this.storageURI.pathname;
+  constructor(storageUri: string, logPrefix: string) {
+    super(storageUri, logPrefix);
+    this.dbName = this.storageUri.pathname;
   }
 
   public storePerformanceStatistics(performanceStatistics: Statistics): void {
@@ -23,13 +23,27 @@ export class JSONFileStorage extends Storage {
           const fileData = fs.readFileSync(this.dbName, 'utf8');
           const performanceRecords: Statistics[] = fileData ? JSON.parse(fileData) as Statistics[] : [];
           performanceRecords.push(performanceStatistics);
-          fs.writeFileSync(this.dbName, JSON.stringify(performanceRecords, null, 2), 'utf8');
+          fs.writeFileSync(
+            this.dbName,
+            JSON.stringify(performanceRecords,
+              (key, value) => {
+                if (value instanceof Map) {
+                  return {
+                    dataType: 'Map',
+                    value: [...value]
+                  };
+                }
+                return value as Statistics;
+              },
+              2),
+            'utf8'
+          );
         } catch (error) {
-          FileUtils.handleFileException(this.logPrefix, Constants.PERFORMANCE_RECORDS_FILETYPE, this.dbName, error);
+          FileUtils.handleFileException(this.logPrefix, Constants.PERFORMANCE_RECORDS_FILETYPE, this.dbName, error as NodeJS.ErrnoException);
         }
         await release();
       })
-      .catch(() => { });
+      .catch(() => { /* This is intentional */ });
   }
 
   public open(): void {
@@ -38,7 +52,7 @@ export class JSONFileStorage extends Storage {
         this.fd = fs.openSync(this.dbName, 'a+');
       }
     } catch (error) {
-      FileUtils.handleFileException(this.logPrefix, Constants.PERFORMANCE_RECORDS_FILETYPE, this.dbName, error);
+      FileUtils.handleFileException(this.logPrefix, Constants.PERFORMANCE_RECORDS_FILETYPE, this.dbName, error as NodeJS.ErrnoException);
     }
   }
 
@@ -49,7 +63,7 @@ export class JSONFileStorage extends Storage {
         this.fd = null;
       }
     } catch (error) {
-      FileUtils.handleFileException(this.logPrefix, Constants.PERFORMANCE_RECORDS_FILETYPE, this.dbName, error);
+      FileUtils.handleFileException(this.logPrefix, Constants.PERFORMANCE_RECORDS_FILETYPE, this.dbName, error as NodeJS.ErrnoException);
     }
   }