refactor(simulator): constify and factor out empty data structure
[e-mobility-charging-stations-simulator.git] / src / charging-station / ChargingStationUtils.ts
index 534a3786e210953acdbdede1c63e6846bb6618f7..22e712d03432a0e4c1a4557f0dbde07db42f54cd 100644 (file)
@@ -4,31 +4,34 @@ import { fileURLToPath } from 'node:url';
 
 import moment from 'moment';
 
-import type ChargingStation from './ChargingStation';
-import BaseError from '../exception/BaseError';
-import type { ChargingStationInfo } from '../types/ChargingStationInfo';
+import type { ChargingStation } from './internal';
+import { BaseError } from '../exception';
 import {
   AmpereUnits,
+  type BootNotificationRequest,
+  BootReasonEnumType,
+  type ChargingProfile,
+  ChargingProfileKindType,
+  ChargingRateUnitType,
+  type ChargingSchedulePeriod,
+  type ChargingStationInfo,
   type ChargingStationTemplate,
   CurrentType,
+  type OCPP16BootNotificationRequest,
+  type OCPP20BootNotificationRequest,
+  OCPPVersion,
+  RecurrencyKindType,
   Voltage,
-} from '../types/ChargingStationTemplate';
-import { ChargingProfileKindType, RecurrencyKindType } from '../types/ocpp/1.6/ChargingProfile';
-import type { OCPP16BootNotificationRequest } from '../types/ocpp/1.6/Requests';
-import { BootReasonEnumType, type OCPP20BootNotificationRequest } from '../types/ocpp/2.0/Requests';
+} from '../types';
 import {
-  type ChargingProfile,
-  ChargingRateUnitType,
-  type ChargingSchedulePeriod,
-} from '../types/ocpp/ChargingProfile';
-import { OCPPVersion } from '../types/ocpp/OCPPVersion';
-import type { BootNotificationRequest } from '../types/ocpp/Requests';
-import { WorkerProcessType } from '../types/Worker';
-import Configuration from '../utils/Configuration';
-import Constants from '../utils/Constants';
-import { ACElectricUtils, DCElectricUtils } from '../utils/ElectricUtils';
-import logger from '../utils/Logger';
-import Utils from '../utils/Utils';
+  ACElectricUtils,
+  Configuration,
+  Constants,
+  DCElectricUtils,
+  Utils,
+  logger,
+} from '../utils';
+import { WorkerProcessType } from '../worker';
 
 const moduleName = 'ChargingStationUtils';
 
@@ -112,7 +115,7 @@ export class ChargingStationUtils {
 
   public static getConfiguredNumberOfConnectors(stationTemplate: ChargingStationTemplate): number {
     let configuredMaxConnectors: number;
-    if (Utils.isEmptyArray(stationTemplate.numberOfConnectors) === false) {
+    if (Utils.isNotEmptyArray(stationTemplate.numberOfConnectors) === true) {
       const numberOfConnectors = stationTemplate.numberOfConnectors as number[];
       configuredMaxConnectors =
         numberOfConnectors[Math.floor(Utils.secureRandom() * numberOfConnectors.length)];
@@ -210,7 +213,7 @@ export class ChargingStationUtils {
     if (!Utils.isUndefined(template[key])) {
       logger.warn(
         `${logPrefix} Deprecated template key '${key}' usage in file '${templateFile}'${
-          !Utils.isEmptyString(logMsgToAppend) && `. ${logMsgToAppend}`
+          Utils.isNotEmptyString(logMsgToAppend) && `. ${logMsgToAppend}`
         }`
       );
     }
@@ -260,7 +263,7 @@ export class ChargingStationUtils {
       randomSerialNumber: true,
     }
   ): void {
-    params = params ?? {};
+    params = params ?? Constants.EMPTY_OBJECT;
     params.randomSerialNumberUpperCase = params?.randomSerialNumberUpperCase ?? true;
     params.randomSerialNumber = params?.randomSerialNumber ?? true;
     const serialNumberSuffix = params?.randomSerialNumber
@@ -268,15 +271,19 @@ export class ChargingStationUtils {
           upperCase: params.randomSerialNumberUpperCase,
         })
       : '';
-    stationInfo.chargePointSerialNumber =
-      !Utils.isEmptyString(stationTemplate?.chargePointSerialNumberPrefix) &&
-      `${stationTemplate.chargePointSerialNumberPrefix}${serialNumberSuffix}`;
-    stationInfo.chargeBoxSerialNumber =
-      !Utils.isEmptyString(stationTemplate?.chargeBoxSerialNumberPrefix) &&
-      `${stationTemplate.chargeBoxSerialNumberPrefix}${serialNumberSuffix}`;
-    stationInfo.meterSerialNumber =
-      !Utils.isEmptyString(stationTemplate?.meterSerialNumberPrefix) &&
-      `${stationTemplate.meterSerialNumberPrefix}${serialNumberSuffix}`;
+    stationInfo.chargePointSerialNumber = Utils.isNotEmptyString(
+      stationTemplate?.chargePointSerialNumberPrefix
+    )
+      ? `${stationTemplate.chargePointSerialNumberPrefix}${serialNumberSuffix}`
+      : undefined;
+    stationInfo.chargeBoxSerialNumber = Utils.isNotEmptyString(
+      stationTemplate?.chargeBoxSerialNumberPrefix
+    )
+      ? `${stationTemplate.chargeBoxSerialNumberPrefix}${serialNumberSuffix}`
+      : undefined;
+    stationInfo.meterSerialNumber = Utils.isNotEmptyString(stationTemplate?.meterSerialNumberPrefix)
+      ? `${stationTemplate.meterSerialNumberPrefix}${serialNumberSuffix}`
+      : undefined;
   }
 
   public static propagateSerialNumber(
@@ -334,7 +341,7 @@ export class ChargingStationUtils {
           .chargingProfiles.sort((a, b) => b.stackLevel - a.stackLevel)
       );
     }
-    if (!Utils.isEmptyArray(chargingProfiles)) {
+    if (Utils.isNotEmptyArray(chargingProfiles)) {
       const result = ChargingStationUtils.getLimitFromChargingProfiles(
         chargingProfiles,
         chargingStation.logPrefix()