refactor: factor out template file check
authorJérôme Benoit <jerome.benoit@sap.com>
Sat, 29 Apr 2023 08:59:38 +0000 (10:59 +0200)
committerJérôme Benoit <jerome.benoit@sap.com>
Sat, 29 Apr 2023 08:59:38 +0000 (10:59 +0200)
Signed-off-by: Jérôme Benoit <jerome.benoit@sap.com>
src/charging-station/ChargingStation.ts
src/charging-station/ChargingStationUtils.ts
src/types/ChargingStationTemplate.ts

index 419e89e36a8f768952e9c15976d2f28fdce09900..f1109aa1cf15de877c5eb794ec00f282066a9d30 100644 (file)
@@ -313,8 +313,8 @@ export class ChargingStation {
   public getVoltageOut(stationInfo?: ChargingStationInfo): number | undefined {
     const defaultVoltageOut = ChargingStationUtils.getDefaultVoltageOut(
       this.getCurrentOutType(stationInfo),
-      this.templateFile,
-      this.logPrefix()
+      this.logPrefix(),
+      this.templateFile
     );
     const localStationInfo: ChargingStationInfo = stationInfo ?? this.stationInfo;
     return !Utils.isUndefined(localStationInfo.voltageOut)
@@ -942,21 +942,19 @@ export class ChargingStation {
 
   private getStationInfoFromTemplate(): ChargingStationInfo {
     const stationTemplate: ChargingStationTemplate | undefined = this.getTemplateFromFile();
-    if (Utils.isNullOrUndefined(stationTemplate)) {
-      const errorMsg = `Failed to read charging station template file ${this.templateFile}`;
-      logger.error(`${this.logPrefix()} ${errorMsg}`);
-      throw new BaseError(errorMsg);
-    }
-    if (Utils.isEmptyObject(stationTemplate)) {
-      const errorMsg = `Empty charging station information from template file ${this.templateFile}`;
-      logger.error(`${this.logPrefix()} ${errorMsg}`);
-      throw new BaseError(errorMsg);
-    }
+    ChargingStationUtils.checkTemplateFile(stationTemplate, this.logPrefix(), this.templateFile);
     ChargingStationUtils.warnTemplateKeysDeprecation(
-      this.templateFile,
       stationTemplate,
-      this.logPrefix()
+      this.logPrefix(),
+      this.templateFile
     );
+    if (stationTemplate?.Connectors) {
+      ChargingStationUtils.checkConnectorsConfiguration(
+        stationTemplate,
+        this.logPrefix(),
+        this.templateFile
+      );
+    }
     const stationInfo: ChargingStationInfo =
       ChargingStationUtils.stationTemplateToStationInfo(stationTemplate);
     stationInfo.hashId = ChargingStationUtils.getHashId(this.index, stationTemplate);
@@ -1005,15 +1003,6 @@ export class ChargingStation {
       ? stationTemplate.resetTime * 1000
       : Constants.CHARGING_STATION_DEFAULT_RESET_TIME;
     stationInfo.maximumAmperage = this.getMaximumAmperage(stationInfo);
-    if (stationInfo?.Connectors) {
-      ChargingStationUtils.checkConnectorsConfiguration(
-        stationInfo,
-        this.templateFile,
-        this.logPrefix()
-      );
-    }
-    delete stationInfo?.Connectors;
-    delete stationInfo?.Evses;
     return stationInfo;
   }
 
@@ -1068,11 +1057,7 @@ export class ChargingStation {
 
   private initialize(): void {
     const stationTemplate = this.getTemplateFromFile();
-    if (Utils.isNullOrUndefined(stationTemplate)) {
-      const errorMsg = `Failed to read charging station template file ${this.templateFile}`;
-      logger.error(`${this.logPrefix()} ${errorMsg}`);
-      throw new BaseError(errorMsg);
-    }
+    ChargingStationUtils.checkTemplateFile(stationTemplate, this.logPrefix(), this.templateFile);
     this.configurationFile = path.join(
       path.dirname(this.templateFile.replace('station-templates', 'configurations')),
       `${ChargingStationUtils.getHashId(this.index, stationTemplate)}.json`
@@ -1346,8 +1331,8 @@ export class ChargingStation {
       const { configuredMaxConnectors, templateMaxConnectors, templateMaxAvailableConnectors } =
         ChargingStationUtils.checkConnectorsConfiguration(
           stationTemplate,
-          this.templateFile,
-          this.logPrefix()
+          this.logPrefix(),
+          this.templateFile
         );
       const connectorsConfigHash = crypto
         .createHash(Constants.DEFAULT_HASH_ALGORITHM)
index 517a3c9a5e0f40c4e56d9f7ea84cafaf13279793..dbfbe41fdfd2981bb35ab238e8d4e10c614bb035 100644 (file)
@@ -153,10 +153,27 @@ export class ChargingStationUtils {
     return connectorBootStatus;
   }
 
+  public static checkTemplateFile(
+    stationTemplate: ChargingStationTemplate,
+    logPrefix: string,
+    templateFile: string
+  ) {
+    if (Utils.isNullOrUndefined(stationTemplate)) {
+      const errorMsg = `Failed to read charging station template file ${templateFile}`;
+      logger.error(`${logPrefix} ${errorMsg}`);
+      throw new BaseError(errorMsg);
+    }
+    if (Utils.isEmptyObject(stationTemplate)) {
+      const errorMsg = `Empty charging station information from template file ${templateFile}`;
+      logger.error(`${logPrefix} ${errorMsg}`);
+      throw new BaseError(errorMsg);
+    }
+  }
+
   public static checkConnectorsConfiguration(
-    stationTemplate: ChargingStationTemplate | ChargingStationInfo,
-    templateFile: string,
-    logPrefix: string
+    stationTemplate: ChargingStationTemplate,
+    logPrefix: string,
+    templateFile: string
   ): {
     configuredMaxConnectors: number;
     templateMaxConnectors: number;
@@ -166,13 +183,13 @@ export class ChargingStationUtils {
       ChargingStationUtils.getConfiguredNumberOfConnectors(stationTemplate);
     ChargingStationUtils.checkConfiguredMaxConnectors(
       configuredMaxConnectors,
-      templateFile,
-      logPrefix
+      logPrefix,
+      templateFile
     );
     const templateMaxConnectors = ChargingStationUtils.getMaxNumberOfConnectors(
       stationTemplate.Connectors
     );
-    ChargingStationUtils.checkTemplateMaxConnectors(templateMaxConnectors, templateFile, logPrefix);
+    ChargingStationUtils.checkTemplateMaxConnectors(templateMaxConnectors, logPrefix, templateFile);
     const templateMaxAvailableConnectors = stationTemplate?.Connectors[0]
       ? templateMaxConnectors - 1
       : templateMaxConnectors;
@@ -330,9 +347,9 @@ export class ChargingStationUtils {
   }
 
   public static warnTemplateKeysDeprecation(
-    templateFile: string,
     stationTemplate: ChargingStationTemplate,
-    logPrefix: string
+    logPrefix: string,
+    templateFile: string
   ) {
     const templateKeys: { key: string; deprecatedKey: string }[] = [
       { key: 'supervisionUrls', deprecatedKey: 'supervisionUrl' },
@@ -342,8 +359,8 @@ export class ChargingStationUtils {
       ChargingStationUtils.warnDeprecatedTemplateKey(
         stationTemplate,
         templateKey.deprecatedKey,
-        templateFile,
         logPrefix,
+        templateFile,
         `Use '${templateKey.key}' instead`
       );
       ChargingStationUtils.convertDeprecatedTemplateKey(
@@ -360,6 +377,8 @@ export class ChargingStationUtils {
     stationTemplate = Utils.cloneObject(stationTemplate);
     delete stationTemplate.power;
     delete stationTemplate.powerUnit;
+    delete stationTemplate?.Connectors;
+    delete stationTemplate?.Evses;
     delete stationTemplate.Configuration;
     delete stationTemplate.AutomaticTransactionGenerator;
     delete stationTemplate.chargeBoxSerialNumberPrefix;
@@ -493,8 +512,8 @@ export class ChargingStationUtils {
 
   public static getDefaultVoltageOut(
     currentType: CurrentType,
-    templateFile: string,
-    logPrefix: string
+    logPrefix: string,
+    templateFile: string
   ): Voltage {
     const errorMsg = `Unknown ${currentType} currentOutType in template file ${templateFile}, cannot define default voltage out`;
     let defaultVoltageOut: number;
@@ -523,9 +542,7 @@ export class ChargingStationUtils {
     );
   }
 
-  private static getConfiguredNumberOfConnectors(
-    stationTemplate: ChargingStationTemplate | ChargingStationInfo
-  ): number {
+  private static getConfiguredNumberOfConnectors(stationTemplate: ChargingStationTemplate): number {
     let configuredMaxConnectors: number;
     if (Utils.isNotEmptyArray(stationTemplate.numberOfConnectors) === true) {
       const numberOfConnectors = stationTemplate.numberOfConnectors as number[];
@@ -553,8 +570,8 @@ export class ChargingStationUtils {
 
   private static checkConfiguredMaxConnectors(
     configuredMaxConnectors: number,
-    templateFile: string,
-    logPrefix: string
+    logPrefix: string,
+    templateFile: string
   ): void {
     if (configuredMaxConnectors <= 0) {
       logger.warn(
@@ -565,8 +582,8 @@ export class ChargingStationUtils {
 
   private static checkTemplateMaxConnectors(
     templateMaxConnectors: number,
-    templateFile: string,
-    logPrefix: string
+    logPrefix: string,
+    templateFile: string
   ): void {
     if (templateMaxConnectors === 0) {
       logger.warn(
@@ -595,8 +612,8 @@ export class ChargingStationUtils {
   private static warnDeprecatedTemplateKey(
     template: ChargingStationTemplate,
     key: string,
-    templateFile: string,
     logPrefix: string,
+    templateFile: string,
     logMsgToAppend = ''
   ): void {
     if (!Utils.isUndefined(template[key])) {
index 200307ab2758eab00b0ce911b892708efe362fb2..23644c7faa86d146867df651a2717a1ba57d9367 100644 (file)
@@ -114,5 +114,5 @@ export type ChargingStationTemplate = {
   Configuration?: ChargingStationOcppConfiguration;
   AutomaticTransactionGenerator?: AutomaticTransactionGeneratorConfiguration;
   Evses?: Record<string, EvseTemplate>;
-  Connectors: Record<string, ConnectorStatus>;
+  Connectors?: Record<string, ConnectorStatus>;
 };