X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fcharging-station%2Focpp%2FOCPPServiceUtils.ts;h=96b34218bae93f78a595545a29b2969fc91000fc;hb=5cf9050d18e0fd83636ac933793848a5000b4326;hp=9d7cf6200ad1d3cdaef8a9ead1718c6b64ca6803;hpb=4be984941dac8bf0e6201a960e0e048ad4e9edee;p=e-mobility-charging-stations-simulator.git diff --git a/src/charging-station/ocpp/OCPPServiceUtils.ts b/src/charging-station/ocpp/OCPPServiceUtils.ts index 9d7cf620..96b34218 100644 --- a/src/charging-station/ocpp/OCPPServiceUtils.ts +++ b/src/charging-station/ocpp/OCPPServiceUtils.ts @@ -1,4 +1,28 @@ +import type { DefinedError, ErrorObject } from 'ajv'; + +import { ErrorType } from '../../types/ocpp/ErrorType'; + export class OCPPServiceUtils { + protected constructor() { + // This is intentional + } + + public static ajvErrorsToErrorType(errors: ErrorObject[]): ErrorType { + for (const error of errors as DefinedError[]) { + switch (error.keyword) { + case 'type': + return ErrorType.TYPE_CONSTRAINT_VIOLATION; + case 'dependencies': + case 'required': + return ErrorType.OCCURRENCE_CONSTRAINT_VIOLATION; + case 'pattern': + case 'format': + return ErrorType.PROPERTY_CONSTRAINT_VIOLATION; + } + } + return ErrorType.FORMAT_VIOLATION; + } + protected static getLimitFromSampledValueTemplateCustomValue( value: string, limit: number, @@ -9,8 +33,9 @@ export class OCPPServiceUtils { ): number { options.limitationEnabled = options?.limitationEnabled ?? true; options.unitMultiplier = options?.unitMultiplier ?? 1; + const numberValue = isNaN(parseInt(value)) ? Infinity : parseInt(value); return options?.limitationEnabled - ? Math.min(parseInt(value) * options.unitMultiplier, limit) - : parseInt(value) * options.unitMultiplier; + ? Math.min(numberValue * options.unitMultiplier, limit) + : numberValue * options.unitMultiplier; } }