Fix max number of connectors calculation.
[e-mobility-charging-stations-simulator.git] / src / utils / Statistics.js
index bc3405806d1235707a3b94f76903dfd0313abc48..d53cbe45f415b447d118bd470cc4aab2b7526f95 100644 (file)
@@ -3,13 +3,25 @@ const logger = require('./Logger');
 const Utils = require('./Utils');
 
 class Statistics {
-  constructor(objName) {
-    this._objName = objName;
+  static instance;
+
+  constructor() {
     this._statistics = {};
   }
 
-  _basicFormatLog() {
-    return Utils.basicFormatLog(` ${this._objName} Statistics:`);
+  set objName(objName) {
+    this._objName = objName;
+  }
+
+  static getInstance() {
+    if (!Statistics.instance) {
+      Statistics.instance = new Statistics();
+    }
+    return Statistics.instance;
+  }
+
+  _logPrefix() {
+    return Utils.logPrefix(` ${this._objName} Statistics:`);
   }
 
   addMessage(command, response = false) {
@@ -62,19 +74,19 @@ class Statistics {
 
   logPerformance(entry, className) {
     this.addPerformanceTimer(entry.name, entry.duration);
-    logger.info(`${this._basicFormatLog()} class->${className}, method->${entry.name}, duration->${entry.duration}`);
+    logger.info(`${this._logPrefix()} class->${className}, method->${entry.name}, duration->${entry.duration}`);
   }
 
   _display() {
-    logger.info(this._basicFormatLog() + ' %j', this._statistics);
+    logger.info(this._logPrefix() + ' %j', this._statistics);
   }
 
   _displayInterval() {
-    if (Configuration.getStatisticsDisplayInterval() !== 0) {
-      logger.info(this._basicFormatLog() + ' displayed every ' + Configuration.getStatisticsDisplayInterval() + 's');
+    if (Configuration.getStatisticsDisplayInterval() > 0) {
       setInterval(() => {
         this._display();
       }, Configuration.getStatisticsDisplayInterval() * 1000);
+      logger.info(this._logPrefix() + ' displayed every ' + Configuration.getStatisticsDisplayInterval() + 's');
     }
   }